日記(918)

<前 次>

自動車運転免許取れましたー

はいよー。技能試験は今月1日に終わっていたのですが、なんだかんだで延ばし延ばしになってやっと今日学科試験が受けられました。
なんだか一発では受からなさそーな気分でしたが結果は95点で合格でした。

今日こそNeoMuplを更新しようと思っていたのですが、ファイルの切り替えがうまくいかず、別のリストを開くと後から読み込もうとしたほうのリストが破壊されるという問題が発生したので公開はまたしばらく見送りとなりました。
そのかわり、たまたまバージョンアップしたのに公開されていなかったCharaBox3が残っていたのでそちらをアップして今回の更新としました。

ネコブラ:
大きく発達した耳で周りの状況を判断する。
尻尾を震わすとニャーという威嚇音が発せられ獲物はうっとりと縮み上がる

1185375294.png

真のランダムセレクト?

今日公開するつもりでNeoMuplの足りない部分を作ってました。
まあ、見ての通り公開できなかったのですけど、一応色々できました。
まず、何も再生していないときにストップすると例外が出る問題を修正しました。
次に、設定ダイアログを実装しました。
ふにゃさんのときなどと同じく、フレーム(.NETではGroupBox)コントロールを列挙して自動的にカテゴリーを表示するようにしています。
とは言ってもカテゴリーは、そして設定項目も、一つしかないのですが。
で、その一つというのが、タイトル付け規則です。
タイトル付け規則というのは、ファイルをリストに追加したときに自動的にタイトルをつけるときの規則をテキスト形式で表したもので、特別な文字列を埋め込むとその部分がファイル名の一部と置き換わります。
そして、もう一つできたのが、ランダム再生のアルゴリズムの改良。
前々からスキップ率がうまく機能していないのが気になっていたので、この前プログラミングコーナーに書いたランダムセレクトの方法を使ってみたところ、面白いように再生される確率が変わるようになりました。
最後に、今日できなかったのが、音源リセット。
これも前々から気になっていたところで、極まれにMIDIの音が鳴りっぱなしになることがあったので、その部分を修正したいと思っていたのですが、リセット後の設定の復帰が、元々復帰を想定していないプログラムだったために難しく、結局今日中には終わりませんでした。

スーパーグローバル変数

さて、いろんなところ(特にシナリオ関連のLuaスクリプト)から自由にアクセスできるゲーム中の状態を保持するグローバル変数が欲しいところです。
そこで、Lua変数と互換の、ゲーム全体で、つまり複数のLuaステートの環境をまたいで利用できるデータ構造を考えてみました。
まぁ、あまり複雑なデータ構造にするのもなんだから、単純に名前と実際のデータのペアのような形で実装することになりそうです。

CBWAnimationScript

アニメーションのスクリプト制御は出来上がったはずです…一応。
テストが済んでいなかったりというのもあるのですが、スレッドをC側から閉じるすべがないとはいえ、スレッドの終了をLua側に押し付ける形になったのが少し心残りでした。
スレッドを使わない方法なら別に良かったのですが、終了の責任を押し付けられてもやっぱりスレッドを使ったほうが楽そうな気がしましたので。
スレッドを終了し損ねてもそんなにむちゃくちゃメモリが食われることは無いと思うし…。

CBWAnimationNormal

標準のアニメーション処理できました。
で、アニメーション処理自体はうまくいったのですが、描画エンジンの不具合でむちゃくちゃ拡大して表示されたので今日はさしあたりその部分を直していました。
原因は一部分の切抜きのときでも表示されるサイズを画像全体の大きさを基準に決めていたことでした。
後はスクリプト制御だけです。

1185029931.png

すべってころんだ

アニメーションの動きの部分を作ってます。
とはいえ、この動作自体は以前に作ったものでほぼ完成されているのでデータの仕様変更に合わせる以外はほぼそのまま移植しています。
まあ、その仕様変更が結構いろんなところで効いてきたりもしているのですが…。

リストから削除しますか?

NeoMuplのスキップ率の挙動がどうにもおかしいような気がしたのでちょっとプログラムをいじってました。
どうにもプログラムを見た限りでは何の問題もなさそうだったので実際に動かそうと思ったのですが、今現在デバッグ用に入れてあるデータは無効なデータが多い状態だったので、スキップ率のことはとりあえず置いておいて、無効なデータを消しやすいようなエラー処理の拡張をしました。

Bomber丸Worldのほうは、アニメーションデータの要素の一つとして、アニメーションの動きがどの範囲で変動するかというデータが必要だったのでそれに対応するデータを追加しました。

<前 次>