ASTER 正式版 開発進捗情報


現在進行中。

ASTER : BETA のソースコードを参考にしながらスクラッチビルドで最初から作り直しています。

2024 年 06 月 19 日

rev 0.8.11 をアップロード

Zip Download : ASTER_public_Preview_0.8.11

ASTER Docs : ASTER :: Documentation Pages

以下更新内容を含みます。
rev.0.8.07 Motion :: Orbital :: Set Target 機能
rev.0.8.08 Motion :: Orbital :: Event Detection :: Get Current Angle Value
rev.0.8.09A Motion :: Reverse the Motion Movement Value ( ByName )
rev.0.8.09B Motion :: Reverse the Motion Movement Value ( Directly )
rev.0.8.10A JSON :: REGEX Exact Match :: GET Submatches :: to JSON Array
rev.0.8.10B JSON :: REGEX Partial Match :: GET Submatches :: to JSON Array
rev.0.8.11 HTML ドキュメントを更新 ( 0.8.10B 迄の仕様及び機能に準じた内容 )

先行してビルド済みバイナリだけを配布します。HTML Document は間に合わなかったので今週から来週にかけてやる.

ASTER rev 0.8.11 は今後安定性を評価しながら問題が無ければ rev 0.9.0 になります。

rev 0.8.11 はベータ版で機能実装があったほぼすべてのモーション関連機能が揃っています。加えて Event Detection という概念が追加され、ベータ版と比較して機能性は向上しています。

rev 0.9.x 以降は MoveToward の実装に入ります。作者の必要な機能は単なる移動ではなく配列と連動したモーションを考えています。このために JSON の実装が必要だったので ASTER 正式版では JSON 機能が標準化されました。

ここから二カ月ほど更新が止まります。おそらく九月頃に戻ってきて rev 0.9.x をアップロードします。この期間返信とかもできなくなるので、皆さんどうぞ体調にお気をつけてお過ごしください。

2024 年 06 月 09 日

rev.0.8.01 Motion :: Oribtal 実装 ( Angular Rotate パラメータ標準組み込み )
rev.0.8.02 Motion :: Orbital :: Sleep 実装 (+ Event Detection )
rev.0.8.03 JSON :: Create 1D-Array with fill the data as boolean ( 真偽値で埋める )
rev.0.8.04 Motion :: Orbital :: Grow Radius 機能 (ByName)
rev.0.8.05 HTML ドキュメントを更新 ( uploaded )
rev.0.8.06 Motion :: Sinewave :: Grow Radius 機能 (ByName)
bugfixed JSON :: Get current Target Path が取得できなかったバグを修正
bugfixed Motion :: Orbital :: Omega が負数の時、Sleep の Trigger Angle 値が不具合
bugfixed Motion :: ExStrDebugInfo( “ASTER”, “Name” ) でグループ名指定が不具合
bugfixed Motion :: Orbital :: repetition = 0, Sleep Startup Flag = true が不具合
bugfixed Motion :: Orbital :: Sleep の Step Angle が特定 Omega 値で不具合

実装したばかりの orbital sleep 関連バグが修正多かった。動作サンプルを作る作業がデバッグを兼ね、HTML ドキュメントも並行して書いています。

F3 関連の新しい情報が出たので来週には記事をまとめ、ASTER 0.8.10 ぐらいまで実装を進めたら新版をアップロード準備します。

2024 年 05 月 27 日

プレビュー版に未実装だった Orbital Motion 専用の Sleep 機能と関連ドキュメントを追加。Orbital 専用 Sleep は指定角度で一時停止する機能、Event Detection を使った Sleep タイミングの検出も併せて実装した。

JSON Data Sharing Option 機能のドキュメントが抜けていたのを確認、動作サンプルも作り直す必要あり。

Orbital に Grow Radius 機能を付けてから Move Toward に移るか、FileSystem など他未実装を優先するか作業順で少し悩む。

2024 年 05 月 18 日

プレビュー版を公開。

Download : ASTER public Preview 0.8.1

Docs は画面上部にデイモード/ナイトモード切替ボタンがあるのでそれを使えば特にナイトモードは目に優しい。主にナイトモードで動作確認しています。

バージョン 0.8.1 Public Preview は正式版 ASTER の機能を紹介する先行公開版です。ベータ版と比較して未実装機能がまだ多数ありますが正式版がどのような進化を遂げたのかを体験していただけます。

JSON 対応を標準機能化し、セーブデータやデータロードに JSON を利用できます。JSON は JSON Data Sharing というオプション機能を使うとグローバルデータ的な利用が可能、フレーム遷移後もメモリ上の JSON データを保持したまま編集を継続できます。

正規表現は置換文字列に制御文字を含めることができるようになり、新機能である Event Detection では ID を使ったイベントの識別化が可能に、そして Partial や Exact Match でキャプチャグループを使った場合に検索結果からサブマッチ文字列を取得できるなど、多くの改良や追加機能が含まれています。

Object Control は 開発中の Orbital Motion 以外はベータ版機能を 80 % 程度までカバーしています。今後はベータ版に実装されていた機能を網羅しつつ新しいモーションとして MoveToward を実装予定。新機能としては Object Control にも Event Detection が実装され仮想壁との接触判定をイベント化できるようになりました。

ベータ版のドキュメントはメモ程度のブログ記事しかありませんでしたが、正式版の全機能を網羅した公式ドキュメントのページが新設されました。

Preview 版は現在あらゆる部分で完成度がまだ低く、今後ゆっくりとですがブラッシュアップされます。進捗は一週間ごと隔週更新。

ASTER ベータ版を知っている方も知らない方も是非 Preview 版をお楽しみください。

2024 年 05 月 09 日

ASTER :: Documentation Pages

先行してドキュメントを公開。現時点までに実装された機能がほぼ全て網羅。

サイトは Hugo、利用しているテーマは Lotus Docs

今後は暫時 Shortcode を追加したり、まだドキュメントが未整備の部分とか残っているのでそれを修正したり。ランディングページもまだデフォルトのままです。

肝心のエクステンション本体については現在動作テストをしながら動作サンプルを作っています。プレビュー版では Orbital の一部機能が未実装なので Orbital のドキュメントは付属していませんが実装された機能だけで動作サンプルは付属します。

公開は来週予定。週末くらいかな。

2024 年 04 月 29 日

引き続きエクステンション用の Document を書いています。進捗は 88 %。Hugo を使わなければ無理だったが Hugo を使っても無理なものは無理。

作業自体は個人的に苦痛、かなり眠くなる。ドキュメントを書くことは許容できるが書いたドキュメントを HTML 使って体裁整えたり見出し作ったりは睡魔が襲ってくる。今回肝心な出来栄えはそこそこ。ドキュメントの量が多いためアップロード後に少しずつ改良施すしかない。

ドキュメントの完成はやはり 5 月初旬、現状までの機能で動作サンプルを作ってアップロード用のバイナリを用意してと準備があるので、5 月半ば迄にプレビュー版としてお披露目。お日柄も良さそうなので 5 月 15 日公開とします。

2024 年 04 月 23 日

エクステンション用の Document を書いています。

Bootstrap と Hugo を使ってオンラインドキュメント形式で提供します。Hugo は以前に Linux から使っていたのですが最近の Windows はターミナルシェルも便利になってどちらかというと林檎が必要無くなってきました。Hugo は静的サイトを構築するジェネレータとしては大変優れていて、じゃあ WordPress みたいに一般に普及するかっていうとそんなことは無く、当時から今もターミナルシェル操作が必須、そして Git と GoLang も必要でそのあとマークダウンとジェネレータの仕組みを理解する、環境構築後に学ぶことも多くそれなりに敷居が高いままです。

適当に高い敷居を乗り越えればあとは速い。速いんだけど進捗は現在ドキュメント全体の 35% 程度、あと一週間弱で 65% とか埋まるんですかねこれホント。

完成度とかドキュメントの体裁とかは多少後回しにしてとにかく HTML 化を進める予定です。機能追加は先週までの時点で開発がしっかり停まっていて、ドキュメントを一旦完成させるまで進展は無いです。

エクステンションの公開時期ですがどうもやはり5月半ばか6月になりそう。正式版のプレビュー版という形で提供して、そこからマイナーバージョンアップを重ねながら完成を目指します。徐々に忙しくなってきたのでこの機会を逃すと公開が九月以降になってしまうので、それは避けたいと思ってます。

2024 年 04 月 12 日

Orbital の基本動作実装が一応終わった。いわゆる Circular Motion だが、ASTER では回転の中心点を他オブジェクトに依存する「衛星」をイメージした動作設計が基本なので「 Orbital 」と命名した。ベータ版ではパラメータをなるべく少なくするため採用したアプローチの一つでもあったのだが、正式版ではパラメータを少なくするという制約は捨てることにした。

ベータ版ではパラメータを少なくした分あとから追加設定を足すための命令を改めて発行する必要があった。そのために逐一ループ処理行うわけだが、これだと処理効率は良くならない。いっぺんに設定できたらその方が効率は良いので、正式版の Orbital はほぼ全てのパラメータを文字列で一括送信する試みをやってみることにした。

その結果パラメータ数は一度に 12 個を一括送信することになった。ただしこれでも全機能ではない、まだ GrowRad とかは拡張機能扱いにしたので最終的には 15 パラメータとかになる可能性もある。ホワイトスペースを使い放題使って良いので可読性は悪くないが、良いのかなぁこれで感はある。

パラメータを文字列で一括送信する方式は JSON との連携にもメリットが生まれる。JSON に保存したパラメータを ASTER に渡せばそのまま利用できるから、CF25 のエクスプレッションエディタでちまちまパラメータを書き直さなくても、JSON を扱う普段のテキストエディタからパラメータを更新するだけで値の動作検証をすることができる。

現時点で Orbital はモジュール化された Stop や Reject が組み込み済み、正常に機能していて、今後は Orbital 専用の Sleep 処理と GrowRadius などベータ版に実装があった機能を再現する。今若干モチベーションが低いため、今後一週間で両方実装できるか微妙。

MoveToward の開発にかかりたいのだが、Orbital が終わらないと着手できなくて、締切もあるので Orbital が終わったら一度プレビュー版として公開するための準備も必要になる。そうすると MoveToward がまた後回しになる。Align とか FileSystem も後回しにしているのでまだまだやること多い。

5月公開はまだ諦めてないのだが、ちょっと流石に無理かもしれない。ドキュメントの HTML 化は頭痛い。

2024 年 04 月 05 日

モーション追加に集中、HorizontalFlip、VerticalWrap、VerticalFlip、Sinewave を実装完了。明らかにデバッグ不足でドキュメントもまだ書いてない、だがこれらは基本処理に共通項が多く、合計 8 つのインターフェースを持つ一連動作は実質的に一つのモーション関数とみなすこともできる。

ヴァーチャルウォールとの衝突を検出する即時実行条件 ( EventDetectCondition ) はシンプルだが使い勝手が良い。Runtime Event のタイミングでコンディションも働いているため Event Detect Condition 時に Null 以外の動作は追加できない仕様だが、これだけでも色々な利用法が提示できる。Runtime Event タイミング時になぜ Null 以外のモーション追加や Reject 指定全般が利用ができないかというと、Event Detect Condition 中はエクステンション内部でループ処理の真っ最中だから。コンテナに対してイテレータでループ処理実行している最中に要素を削除されたり追加されるのは無理、要求をスタックしてループ処理後に追加や削除キューを改めて処理する仕組みが必要なのだ。これを実現するには現時点で時間が足りなすぎる。

モーションタイプは Orbital を追加すれば一応ベータ版に追いつきこれは来週終わる予定、Movetoward はベータ版に未実装だった機能なのでこれの製作が一番の難所になる予定。Movetoward は 5 月公開に間に合わないことをすでに見込んでいる。Stop Reject Sleep など基本動作はデバッグが進み動作は安定的と評価している。基本動作は今後 Reversal Velocity、Decrement|Increment Velocity, Change Amplitude が Orbital モーション実装後に予定される。

5月公開は、、、悩ましい。Movetoward 以外は間に合うけどドキュメントの整備や動作サンプルの作成に時間が取られる。

2024 年 03 月 31 日

なんとか予定通り Stop と Sleep の実装が間に合った。基本機能の中でも Reject が一番山場だった気がする。越えたら次の山はだいぶ低く感じるようだ。モーションもまず HorizontalWrap が実装済み、次に HorizontalFlip、Vertical と続くのだがこれらは既存モーション機能を拡張するだけ、次開発の山場は Orbital と MoveToward に焦点が移る。

4 月の開発ペース次第なのだが正式版公開について、判断に悩む。完成度に拘らなければ 5 月公開も可能、だが公開時点での完成度に拘ると 6 月過ぎても公開に至らない気がする。現状ベータ版として公開しているバージョンは正式版が出たら用済みで公開停止する方針。果たしてどうなるか。

2024 年 03 月 24 日

かなり遅いペース。Reject 処理を Template 化する工程以前のデバッグ不足だった。実装後バグが出て原因究明に時間を要した。ちょっと設計をミスったかもしれない。複数人でモジュールやコンポーネントを分担して作成するなら良いけど、ひとりでデバッグからモジュール・コンポーネントとか欲張りすぎた気がする、作業量が多い。それでもなんとか今週 Reject は完成させたが、今度は Stop、次に Sleep と基本機能の実装がまだ続く。これらは二週間かからないはずだが一週間はかかる見込み。検索効率は悪くて無駄なメモリも使うけど、一番原始的な方式で作ったほうが直感的だし、作業量はもっと減るしで、よく考えて決めた仕様だったけど今はそのせいで開発のスピード感が失われてることにちょっとがっかりしてる。

2024 年 03 月 17 日

オブジェクトコントロールの基本機能実装が続く。登録・解除・破壊・タイマー処理に対応。進行が遅い、その割にドキュメントは量を書いてる。仕様も忘れてしまうので、ドキュメントを書きながらプログラムをしてる感じ。

オブジェクトコントロールはまだ STOP や SLEEP など基本機能に未実装が残っていて、STOP はともかく SLEEP は時間少しかかりそう。REJECT は実装済みだが少々苦労したから、このペースだと 5 月公開もちょっと怪しい気がしてきた。ソースコードの量も増えてきているため、ヘッダーオンリーでどこまで書けるかまた懸念がある。

JSON に重要な機能追加、メモリ上のデータをグローバル化するオプション項目を実装。動作サンプルを作ってみた結果、まだデータ編集機能が弱いけど JSON を汎用セーブデータとして活用する目途が立った。フレーム遷移毎にファイルロードしてセーブしてまたロードという手間から解放される。

2024 年 03 月 09 日

ByName Object コントローラの基本機能が実装完了。モーションの一番基礎になる Null Motion をコントローラに名前を付けて登録、追加登録、検索、登録削除、重複インスタンス登録排除、など一通りできるようになった。

今回は「名前」で管理する範囲の中に、「モーショングループ」という新しい単位 (範囲) が含まれている点がベータ版と異なる。

ベータ版は原始的な仕組みだったので、モーションは必要なデータ全て一種類の構造体に放り込み、vector で集中管理していた。今回は各モーションを必要なデータごとに構造体も専用に用意し、モーション単位でデータ構造も個別管理している。名前で管理する以外にモーショングループ単位で内部的処理を行っており、実装するかわからないが名前以外に各モーション単位で命令を出すことができるようになっている。

今後はモーショングループという単位でモジュール的に動作を付け加え、コントローラのコア機能に拡張を施す要領でモーションを追加していく。

2024 年 03 月 01 日

全体で 41 個の関数、内訳として JSON 機能が 20 個、REGEX 関連が 11 個、Align が 5 個、HWND が 2 個、FileSystem が 1 個。数が合わないけどまぁいいか。

進捗として JSON 機能が充実、しかし想定より作業量多い。正規表現はほとんど完成したが JSON との連携機能などがまだ未実装、FileSytem は完全後回し。

3 月になったら Object Control 機能をと思っているが、そのためには Align を後回しにする必要がありそう。現状に Motion と Object Control の基本機能を付ければ正式版のプレビューとして公開できそうだが、動作サンプルがまだ未整理でこれも作業量は多い。各機能の詳細なドキュメントはこれまで頑張ってきたのでほぼ揃っているが、まとめると作業量的に 4 月公開はまだ無理かなという印象。5 月が濃厚。

2024 年 02 月 18 日

BETA と正式版の動作互換性については全く考慮されていません。その代わり仕様変更や新機能など盛りやすく、BETAより合理的な設計になっています。今回はちゃんとドキュメントも書きながら開発しているので、現時点までに実装された諸機能について全てなんらかの形で文章が付属します。

現在の進捗としてはオブジェクトコントロールが全く未実装ですが、正規表現とJSON 機能の実装は基礎部構築が終わり、特に正規表現の実装が BETA との機能比較で 90 % 完成、開発が先行しています。

JSON は標準機能として取り込んだのですでに JSON Pointer などは動作サンプル製作で活躍中。正規表現機能との連携も確認できています。

2 月中には正規表現の機能実装は終わり、3 月からオブジェクトコントロール機能に着手する予定です。こちらはちょっとまた苦労するのかもしれません。

いつ頃公開できそうか

オブジェクトコントロールに着手してからでないとまだいつ頃公開可能になるかについて、言及できそうもありません。

正規表現と JSON について機能実装にはあまり苦労していないのですが、これらは作者が風邪で体調崩した影響があり着手が遅れた割にその後は順調。

オブジェクトコントロールはコントローラ部分を新しく設計し直すので、試行錯誤が必要になりそう、こっちのほうが手強い予感があります。

ただし二回目なので、正式版が完成すれば BETA よりも断然効率的な設計になると思われ、自画自賛なのですが今回のソースコードは前回より圧倒的にモダンで美しいです。美しい、美しいとか言いながら開発しています。危ない人です。

それだけ BETA 版のソースコードはレガシーが混じっていて、特に正規表現の実装部分は Modern C++ を十分理解せず開発スタートしたため、C 言語みたいな書き方をしていました。

Clickteam の公式フォーラムで質問すると Yves 以外だと Defisym が親切に全部答えてくれるのですが、彼の公開しているソースコードはまさに現代的で、知識をアップデートしないとソースコードを全然読み進めなかったため C++20、C++23 が出たら C++23 と、どんどん知識をアップデートしていくことにしたという経緯があります。

Modern C++ はかなり美しく進化しています。レガシーでも機能実装は実現できますが生産性が違ってくるし Modern C++ はソースコードの保守が楽です。

3 月になってオブジェクトコントロール機能開発に着手した後、公開時期について予想が出せると思います。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です