ASTER 正式版 開発進捗情報   Recently updated !


現在進行中。

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

2023 年 04 月 23 日

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

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

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

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

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

2023 年 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 化は頭痛い。

2023 年 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 以外は間に合うけどドキュメントの整備や動作サンプルの作成に時間が取られる。

2023 年 03 月 31 日

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

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

2023 年 03 月 24 日

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

2023 年 03 月 17 日

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

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

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

2023 年 03 月 09 日

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

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

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

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

2023 年 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 月が濃厚。

2023 年 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

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