「メテオンもどき」に関する日記(2)

<前

ニコニコ

最後のメテオスオンライン非公式大会の動画アップのために先日ニコニコ動画に会員登録してきたのですが、私の作った動画が転載されてたり、好きなゲームの動画についてた数少ないコメントが糞ゲー呼ばわりだったり、あまり良い印象は持ちませんでした。
やっぱり2ch臭が強いというのもあるのかもしれません。
すごいことをして見た動画なんかに対する驚きの声はなかなか良かったんですけどね。

で、自分の作った動画は自分でニコニコにアップする!ということで、特に見る価値が高そうなのを選んでちまちまと移動してました。
で、ついでに新しい動画もアップしようと思ってロクヨンを持ってきたのですが、ひどく調子が悪くて、突然リセットされたり音や映像が乱れたりして、まともな動画の作成には苦労しました。

メテオンもどきは昨日の日記に書いたことを含めてインターフェースの微調整もしつつアップしました。

メテオン終了

うぅ…メテオスオンラインが終了してしまいました…。
さようならルミオス…。
さようならリモチューブ…。
さようならディジェ…。
さようならアロッド…。
そして、ありがとうメテオンスタッフの方々。
ありがとうこんな私をフレンド登録してくれた16人の友達。
ありがとう一緒にチームで戦ってくれた205人の仲間たち。
ありがとう対戦してくれた延べ7774人のみんな。

だからといっていつまでも泣いてるわけにもいかないので、その後はメテオンもどきを作っていました。
今回は滅亡音の実装とシュートが大気圏に達したときの挙動の改善。
シュートしたときに大気圏にメテオが張り付くことがある問題を修正しました。
あとは、圧縮ファイルからいろいろ読み込めるかどうかを調査しているところです。

VistaでのBomber丸World開発環境

メテオンもどきを改良していました。
まず、旧形式のデータを投稿してもエラーが出ないようにしました。
そして、お試しプレイ前にデータ抽出してもちゃんとデータを取れるようにしました。

そうそう、VistaでのBomber丸World開発環境を整えました。
DirectX8SDKを入れてVC6を入れればそれで終わりだと思っていたのですが、ディレクトリ設定で優先するディレクトリを間違えて設定していたため、一部のライブラリが古いほうを使われ、リンクに失敗するということがありました。
もちろん今ではそれも直しましたが。
メテオンもどきでやることがないときはこっちのほうを開発しましょうかね。

フィールドシリアライザ

メテオスもどきの惑星パラメータの文字列による出力が出来上がって、今は文字列を入力として惑星パラメータを復元する部分を作っているところです。
ほかにも、描画システムを見直したりしてました。
まあ、結局もとのやりかた以外は全然うまくいかなかったため戻したんですけどね。

JavaScriptによる制御

なんだかJavaScriptから直接Javaアプレットの変数を指定しようとすると、配列や一部のクラスの仕様の違いからうまく動かないようです。
なので、極力いろんなオブジェクトにアクセスしたりしないように、アプレットそのもののメソッドをできるだけ少ない引数で、つまり一つの文字列で呼び出すようにすればうまく制御できるかなと思っています。
あと、使用中の変数の値をいきなり変えたりしたら、元の値であることを前提として動いているプログラムが誤動作を起こすこともあるので、前処理・後処理を入れるためにもメソッドを呼び出す方式がよさそうです。
Qから返事があるまでは地味なところの改良でもしていようと思います。

ツールの登録

DirectMusicツールの更新のときに書いた、「次の機会」のところを更新しました。
とはいっても、ほぼ定型文なので大した内容にはなりませんでしたが。
あと、ツールの作り方のページでのメッセージの扱いについて少し修正しました。

メテオスもどき、縦切り離し点火の特例ができたのでアップしてきました。
Qに送る文章も考え中です。
自分を正当化しつつ、相手にとっても損がないように、考えてるところです。

ほぼ完成

メテオスもどき、落下メテオによる押し下げも実装して、ドッキング関係もきれいに書きなおして、あとはいくつかの不具合を直して演出をつければ単体としては完成ということになります。
なので、そろそろ本家の開発元のQに問い合わせてみようと思っています。
動画のときもファンサイトキットのときも終了告知のときもつれない返事ばかりでしたが…。

縦点火もできました!!

縦点火も実装できました。
一部アルゴリズムを間違えて縦点火が逆噴射になっちゃったり、くっついてないのにドッキングする問題を発見したり、まだまだ問題もあるわけですが、とりあえずなんとかメテオスの基本ルールは実装できたかなというところです。
同時点火ボーナスや最下方点火ボーナスなども実装して、あとはゲームオーバーやシュート相殺なども実装すればいよいよゲームとして成り立つようになります。

横点火ができました

まぁ、色々問題も孕んでいるわけですが、なんとか横点火も実装できました。
上昇と下降が同時に起こることによるすり抜け、メテオの数え漏れによる存在しないカタマリのデータの蓄積、Y方向オフセット値の増大による著しい速度低下、カタマリがうまくドッキングされない、点火されるはずのメテオが点火されない、カタマリの中のメテオを引っ張り出したり巻き込んだりするとカタマリの形が変わる、直ったものもあればいまだ調査中のものもあります。

無理矢理止めてみる

今日はNeoMuplでMIDIの再生が止まらなくなる問題を半ば強引にですが解消しました。
マシンの動作が非常に重たいときに確率的に起こるものなのでデバッグしにくいのですが、とりあえず無理矢理全部止めれば何とかなるだろうと思ってやったので、本当に解決しているかどうかはわかりません。

メテオスもどきはドッキング処理を作っていよいよ点火の処理が作れそうなところです。
シュートの挙動も改善しましたし、ドッキングも再帰処理により案外簡単に記述できましたし…。
問題は切り離し点火だ!!
切り離し点火をとりあえず実装するのは難しくないんです。
難しいのは、必要以上の切り離しをどう抑制するかなのです。
今考えているアルゴリズムではどうしても上方逆L字点火が切り離されてしまうのです。

メテオスもどき

そんなわけで、アニメーションやリソース管理システムをいじりました。
これでマップを表示するときにアニメーションをコピーしまくってもメモリエラーを起こさないのです。
マップ表示自体は一から作り直すことになったのですが、流用を考えて中身をチェックしていたおかげで問題点がいち早く見つけられたように思います。
そんなわけで、明日からはマップ表示を一から作り直します。

こっそりメテオスもどきを作ってやろうかと画策中です。
遠からず終わってしまうメテオスオンラインに最後の光を与えることができるか、それともQに喧嘩を売ることになるのか、はたまた燃えカス1個ほども影響がないのか、わかりませんが、何か思い出に作っておきたいんです。

<前