日記(940)

<前 次>

LDR2MQO

ナマライザ、ふと思いついて読み込みを本体とは別スレッドにしようとして、BackgroundWorkerを配置して、読み込み待ちのファイル名のキューを作ったところで急にやる気がなくなって、突然LDrawのデータをMetasequoiaの形式に変換するLDR2MQOを作り始めてしまいました。

NeoMuplC#

なんだかListViewのSortの挙動が怪しかったので、Array.Sortを使って自前で並び替えを実装しました。
そして今度は一度読み込んだログの破棄を実装してみました。

そうそう、最近NeoMuplもC#で作り直そうとたくらんでいます。
別に現在のVB版では致命的な問題があるわけではないのですが、どうにもセーブデータのいじるのが果てしなく面倒なのですよ。
いえ、果てしなくというほどでもないのですが、新要素の追加は行いたいのですが、それに伴う色々な部分の細かい改変が面倒なんですよ。
機械的な作業なのに自動化できなくて、面倒なだけの入力が続き、こういうのがつまらないミスを生み出して、つまらないがゆえに、もっとすごいところでミスしているのだろうと思い、見当違いなところばかり探す羽目になって、無駄な苦労を増やすばかりになってしまうのです。
で、そういうところを自動化するようなプログラムはVBではなかなか書きにくいので、他の言語に移そうということなのです。
特に曲の情報の入力フォームの統一は今のプログラムでは非常にやりにくいので、ユーザーコントロールを簡単に作れるVisualC#で開発したいということなのです。

6種類のマーク

LDrawのレゴのデータをMetasequoiaに移そうと頑張ってたんですが、標準で普通の3Dデータに変換できるPOV-Rayを使ってみてもMetasequoiaはPOV-Rayのデータは読み込めないし、DXFやLWOとかのデータ経由でインポートしても全然正確なデータが得られず、こうなったら自分で一肌脱いでLDrawのデータから直接Metasequoiaのデータに変換するソフトを自分で作るしかないと考え、とりあえず双方のファイルフォーマットを確認していたのですが、これがまた面白いですね。
LDrawのデータには実はテクスチャの概念がなく、絵に見える部分も実は全部ポリゴンで表現していたりするんですね。
それに、線の引き方にしても、境界線のみを表示するために線に追加データを付け加えたりしているところあたり、興味深いです。
で、実際に色々なことを自分のソフトでやるのは面倒くさいので、単なるポリゴンデータの塊にするところまではLDraw側のソフトでやってもらい、その先のLDraw式のポリゴンをMetasequoia式のポリゴンにするところだけを自分で作ろうと思い、ためしにLDraw式のポリゴンにまで変換して結果をMLCADで開きなおしてみると、見事に色が消えてしまいました。とほほ。
どうにも全部自分で変換するしかなさそうですが、どうにも色の概念だけがいまだによくわかりません。
説明がなんだかねぇ…。

そうそう、ナマライザのエクスプローラ表示は結構いい具合にほぼ完成しました。
最初びっくりするようなデータが出てきて、プログラムのミスではないかと思ったのですが、どうやらびっくりするほどおばかさんなロボットがやってきて歩き回った記録が残っていただけのようでした。
表示アイコンはディレクトリとファイルの2種類にそれぞれステータスコードごとに3種類ずつ割り当てて計6種類使っています。
ステータスコードごとの割り当て方は、2xx系が普通のアイコンで、3xx系が青いマーク、4xx以降を赤マークにしています。

1171897159.png

ListViewとDataBinding

ふにゃさんが一区切りついたのでナマライザ作ってました。
ListViewでもDataBindingが使えるかなと思ったのですが、どうにもDataBindingが適用できるのはどうでもいいプロパティばかりで、肝心のItemsプロパティには適用できなかったようです。
おかげで自分で表示を更新するプログラムを書かねば…って、本来これが当たり前なんですけどね。
まあ、表示そのもののプログラムは、表示するべきデータを用意するプログラムと比べればずっと単純で楽な作業であるはずなのでいいと思うんですけどね。

おんなのこです。ぶどうがすきです。

ふにゃさん更新しました。
まだやるべきことはあったのですが小出しにしていきます。
ファイルサイズが結構大きくなっていますが、これは一部ファイルの形式をプログラムから使いやすい形式にしたのと、いちいちステージデータをコピーして作っているリプレイデータの同梱が大きく出ています。
それで、今回から、最新版に限って、最小限のファイルのみを入れたアーカイブも配布し始めました。
需要はなさそうな気もしますが、一応色々バリエーションがあるほうがいいと思いまして。
今日プログラム的にやったのは、エディタのシフト移動の改善と、操作説明でのシークレット機能の無効化です。
一方まだできていないのは、
・せっかくなのでもう一つぐらいシークレット
・無重力室へようこそ!
・ステージ遷移時のフェードアウト
・エディタからネット上に自作ステージを公開
・エディタでネット上からみんなのステージをダウンロード
などなど。
やりたいこと全部できたら、今度こそ本当に本当の完成で、開発終了ということになります。

間に合った!

本当は今日やろうと思えば更新できたのですが、やっぱり時間がなくてうまくチェックできていない状態でアップするのはよくないので明日更新することにしました。
今日やったことは、リプレイの演出の改良、つまり本当のリプレイの完成。
そして、今更ながらふにゃの動きに関する不具合の修正。
この不具合は本当はずっと前からわかっていたことなのですが、それによってふにゃの動きが変わってしまうため、改善に踏み切れないでいました。
ただ、今度リプレイを実装するともう本格的に手遅れになるため、今回を改善の最後のチャンスとして、思い切ってみました。
もちろん、今まで放置できたのだから重大なバグであるはずがないのですが、ふにゃの向きに関するバグなので、見た目に左右非対称で不自然ですし、もしかしたらどこかで向きが違うために変な動きになる可能性もあるということで、修正することにしました。
あと、リプレイに関しては、にっこりキーが記録されていなかったので、それも記録するようにしました。
これもこれで一度公開してからでは修正できない部分だったので、なんとか間に合ったというところです。
あと、内部的にゲーム本編とテストプレイのプログラムを統合しました。
これによる大きな違いはありませんが、今後の改良の際に両方に反映するのを忘れてテストプレイだけ古いということはなくなるはずです。

そういえば、そろそろスクリプトのほうも進めてやるかと思い、久しぶりに見てみたら、全然わからなくなっていました。
元々方針を間違えていたのは明らかだったのですが、ちょっと今はそれを修正することはできそうにもありません。

リプレイ完成!!

なんだか色々ありましたがとうとうリプレイが完成しました!
細かい演出は後回しにしているため多少そっけないところがありますが、基本機能としては十分に出来上がっているはずです。
listにpush_backしたらそれまでのendイテレータが無効になることに気付かずデータが壊れてしまったりとか、設定を使ってしまった後に設定変更を入れてしまって実際には設定が反映されなかったりとか、面倒くさい設計にしていたのを忘れて簡単に実装したらうまく動かなかったりとかしましたが、なんとか原因を突き止めて全部何とかしました。
ところで今気になっているのですが、ふにゃさんについて実装したい機能は現在結構たくさんあって、全部入れてこうとすると次の更新がどんどん先延ばしになっちゃうんですよね。
結構すぐ修正が必要だったものもあるし、こまめに更新していったほうがいいのか、それともどっちみち後でアップデートするから後でまとめて公開したほうがいいのか、悩みどころなのであります。

リプレイは最初のメインメニューのところで流れますが、今回録画した中にはかなりの割合で弟の作った面が混じってます。

<前 次>