===== プログラム ===== * umkaの組み込み実装についてもう少し突っ込んだ使い方してみた。 ---- * どうやらスクリプトを実行するVM上では1回の処理を超えて変数を管理しない様子。 * これはどういうことかというと、スクリプトで計算した結果は、そのままだとVMに残らないということ。 * こういう仕様じゃないと、ホストプログラムとスクリプトVM、どちらの状態も管理しないといけなくなる。 * 変数が残っていたから計算結果が想定していないものになるバグの温床にもなりうるし、すべて消されるのであればその対応として「ホストプログラム側に関数を利用して保管する」という選択肢になる。 * これはMiniScriptも同様の仕様で、おそらく保存しているとVMの寿命が伸び続けて開放ができなくなってしまうのが根底にありそう。 ---- * クリアされるのであれば方針は立てやすい。 * 確実なのは、①機能ごとにget/set関数を作成して、ホストプログラム側で変数を管理していくという方法。 * もしくは②オブジェクトごとに加算処理だけを実装する手はある * ②だと目分量で移動のスムージングやブレーキ等を行う形になるため、制御が困難になるデメリットがある。 * 制御が柔軟なのは①の方法。計算を自分で行う領域が多くなるのがデメリットではあるけど、それを上回るメリットがある。 * 実はMiniScriptでも①の方法で各種処理を実装してスクリプトを書けるようにした。おかげでボーン処理や昔のゲームっぽい多関節処理を丸ごとスクリプトで書くことになったが、むしろアルゴリズムそのまま書けるのでだいぶ作りやすかった。