「NeoMupl」に関する日記(10)

<前 次>

MusicPlayer6、公開しました。

ええもう、善は急げということで、MusicPlayer6を公開してしまいました。
実はドライブの変更ができないという欠陥があったりしますが、そこのあたりはあまり気にしちゃいけません。
欠陥品は正しく使いましょう。
ひそかに詰め合わせにはVB版NeoMuplも混入していたりします。
あとMusicPlayerシリーズなんか話にならないほどの欠陥品のMIDIPlayerも。

C#版NeoMuplは、ドラッグ&ドロップで曲をリストに追加するところまでできました。
途中、ToStringがnullを返しているのに気づかずリストボックスが頓珍漢なエラーを出すという事態もありましたが、なんとか原因を見つけて直すことができました。
C#版は常に最新版をアップするかどうかは未定です。

爆ボンの操作説明3を更新しました。
ボムジャンプ関連を紹介しています。
お手玉ひどい。

MusicPlayer6をどうしようか

NeoMupl、VB版の最終バージョンをアップしました。
本当にバグフィックスしかしていませんがこれからはC#でやっていきます。
そういえばMusicPlayerもなんとかしないとなー。
MusicPlayer1のリメイクとなるMusicPlayer6は公開していないみたいだし、そのほかの開発終了したものもソースを含めて公開しておきたいし。

夢は覚めてみるまでは夢とはわからんものぢゃよ

そんなわけでクリアして、2周目やってます。夢をみる島(「みる」が正しいらしい)。
前回はマリンとあんまり一緒に歩き回れなかったので今回はマリンと一緒になるまでは記憶と情報を頼りに一気に進めて、マリンが一緒になってからはいろんなところで色々試してます。

そういえばNeoMuplのVB版、今見るとスキップ情報の管理が滅茶苦茶で、間違ったところからコピーしてきたり関係ないところに書き込み処理を入れてたりして、全然設定が反映されていませんでした。
VB版の更新はこのバグフィックスが最後になりますかね。

オブジェクト配列

いやー。ListBox、stringの配列しか受け付けなくて融通が利かないと思っていたら、まるっきり逆で、ToStringさえ実装されていればどんなobjectでも受け入れるのでめっちゃくちゃ融通が利くみたいですね。
思ったより楽に進みそうです。

そうそう、パネルγのプレイ動画をアップしてみました。
さすがにマシンの性能が足りずコマ落ちが激しい状態になりましたが、せっかくなのでアップしておきました。

再生

NeoMuplのC#移植は順調です。
とりあえず今日は一番重要なファイル再生と停止を作りました。
もう、VBにあったのをほぼそのままC#に書き直しただけなんで簡単でしたね。

CharaBox3のバグ修正なんかもやってたり。
本当は前のバージョンで消したつもりだったのですが、バグ回避コードを書く場所を間違えていました(詳しく言えば、問題の変数のコピーの値だけをいじっていた)。

別に変わらない

なーんもやってません。
.NETなら.NETらしいやり方でDirectShow使えるかなと思っていたのですが、やっぱり今までの方法と変わらなかったようで、結局NeoMuplは大部分単なる移植になりそうだということになりました。

NeoMuplC#

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

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

スキップしない率

BSch3Vね、単なるドローツールとしてもそれなりに使えそうです。
もちろん回路図に特化したソフトなのでドローツールとしては全然強力ではありませんが、回路図を書いてる途中で他の図も使いたくなったときなんかはなかなか便利です。

NeoMupl、テストしてみたらスキップ条件がまるっきり逆になっていました。
まあ、そのおかげで全部スキップだったときの挙動も確認できて、結果的には全部スキップされたときの挙動を改善することもできました。
全部スキップされたときの挙動は、まあ、つまらないことなんですが、全くスキップされなかったときと同じ挙動を示すようにしています。
あと、スキップ率のスクロールバーの挙動がおかしかったので修正です。
高速読み込みは現状の速くない方式でも3000曲で0.25秒なのであまり問題ないとして、予定リストからはずしました。
あと、今更ながらリスト編集ウィンドウの参照ボタンを実装しました。
情報バーは最近存在すら忘れていたので完璧に時代遅れの状態となっています。
何とかしてリスト編集ウィンドウと同じ挙動を楽してさせたいものですが。

のんびりナマライザのフィルタをちょっといじってました。
具体的なものはなかなか作りにくいのでやっつけでORとNOTのフィルタを作ったりしてみました。
ANDは昔からあります。

評価機能=スキップ率

NeoMuplのスキップ率を実装しました。
スキップ率が有効になるのは、次を演奏、前を演奏、ランダム演奏、の3つで、百分率で指定します。
動作テストはしてないのですが一応アップしておきました。

スキップ率

NeoMuplをちょっといじってました。
気に入らない曲をあまり演奏しないようにするオプションの実際の内容を決めました。
スキップ率という要素を使って、気に入らない曲が選ばれた場合、指定された確率で演奏せずに次の曲に移るようにします。
ただ、中身をまだ実装していないので今回はアップしてません。

のんびりナマライザのフィルタ機能の実現方法も考えたりしました。
まあ、結局、フィルタのリストを普通のリストで表示して、それを選択して編集すると編集ダイアログが出るという、もっとも安直な妥協案を取ることになりました。
編集ダイアログをどうするかというのが次の問題なのですが…。

そしてリンクは神になる

ゼルダの伝説ーふしぎの木の実のところを更新しました。
ふしぎの木の実に限定した話ではなかったのですが、これが中心となっている話だったのでふしぎの木の実の場所に収まりました。
衝撃の事実、ハイラルを沈めたのは○○○だった…!

サイト全体のスタイルシートを改良しました。
改良箇所は一箇所、thです。
特別な例外を除いて自動改行が入らないようにしました。
なぜかというとテーブルの列が多くなると一つ一つの列が狭くなってしまって滅茶苦茶縦長のページになってしまうので列の最低幅確保のために使うのです。
もちろん横幅の広いthは自動改行するような設定に戻して幅の広がりすぎを防ぎます。

これをやった理由というのが、ふにゃさんのバージョン比較ページの書き方です。
NeoMuplのバージョン比較ページも同じようにしようと思っていて、そうするとNeoMuplは更新回数がかなり多くなりますから、画面より広いテーブルになりやすいのです。
それで上記の設定変更を行ったのです。
そして、そうすると右側が切れてしまって最新バージョンの機能がわかりにくくなってしまうので、新しいバージョンを右側にするのではなく逆に左から新しい順にすることにしたのです。

爆ボンのきょくのページを分離しました。
それに伴ってずっと作り続けていたブルーリゾートのMIDIも公開です。
とはいえまだハープの打ち込みが最後まで済んでいないのですが。

Following

NeoMuplの最新版をアップしました。
今回の改善点は演奏準備中の表示をすることにしたことです。
機能追加というほどのことでもありませんが、今演奏しようとしている曲とタイトルバーに表示されている曲が一致しないという気持ち悪さは避けられます。
ただ、同時に色々未実装な物も乗せてアップしてしまったので使い勝手はむしろ全体として悪くなっているかもしれません。

Bomber丸WorldのライブラリのページのCBWTextDIB32とshared_resourceのページができました。
あまり説明らしい説明にはなっていないのですが。
あと、キャラの行動アルゴリズムのFollowとGotoの改良を考えています。
経路を考えるのが、経路を考える必要ができた瞬間1Fだけであり、たくさんのキャラクターが同時に動こうとしたとき処理落ちが起こる可能性が高いのです。
また、負担軽減のため探索深さを少なめに設定していたせいで探索範囲が狭くなり、遠くから追いかけるということができなくなっていました。
これは、探索する側が最短経路を探すから遅いのであって、追跡される側のほうが最短経路を求める手がかりを残しながら歩いていればよかったのです。
そして、手がかりは、一度に全部用意するのではなく小出しにしていくことで処理の負担を和らげます。

迷惑書き込み対策

いやぁ。急にNeoMuplをいじりだしました。
色々やるべきことがたまっていたりするので、まずはランダム演奏で当たる確率の調整機能を作ろうかと考えていたのですが、そのためにプロジェクトを開いてファイルの内容を見ていたら読み込み部分がなんとも不恰好なことになっていたのでこっちを先に改良しようかなどと思って改変を始めたのですが、なんだかんだで結局準備の準備段階ぐらいまでで両方とも終わってしまいました。

掲示板のロボットによる迷惑書き込みへの対策を考えています。
私が目指すのは、投稿者に少しの面倒をかけて確実に迷惑書き込みを排除する方法ではなく、一般の利用者には迷惑書き込み対策なんて意識させずにロボットだけが困るようなやり方です。
それでまず考えられるのが、HTMLソースのスクランブル。
完全にまぜこぜにするのではなく、入力フォームのname属性を意味不明な言葉にしてやるのです。
しかし結果だけいうと、それでも迷惑書き込みは来ました。
ロボットかどうかは定かではないのですが。
いろんなブラウザにそれなりに対応しつつ、迷惑書き込みはできないようにしたいのです。

新ダイアログ

NeoMuplに情報バーと同じ内容のダイアログを追加しました。
今後情報バーのバージョンアップはしないので、追加要素があれば演奏情報ダイアログのほうに追加されていきます。
本当は情報バーはもう取り去ってしまおうかと思っていたのですが、設定で消すこともできるし、邪魔にならないからいいかというとことで、一応残してあります。
それに伴いポップアップメニューも変更しました。
これで足りなくなった部分は順次補っていきます。

困ったやつら

どうにも現状のNeoMuplには困ったバグがあるみたいです。
どのタイミングで起こるのかはわからないのですが、どこかの曲が増えるんですよ。
たまに並べ替えをしたら同じ曲がいつの間にか重複していたりするんです。
増える分には消せばよいのですが、その巻き添えで消えているものがないかと不安なのです。
あと編集画面が同じウィンドウにあるというのが最近どうも使いづらく感じてきたので、別ウィンドウで出すようにしようかとも考えています。

そうそう、ふにゃさんのシークレット4出現条件を実装しました。
これであーんなこともこーんなこともできちゃうのです。
で、真面目な話、シークレットの

無い暇潰し

そろそろNeoMupl完成させてバージョン1として公開したいんですよね。
バージョン1までにどうしても欲しい機能は、Mupl4式BGM機能、追加しないファイル保存、ランダム演奏のときで選ばれない曲、ファイル追加メニュー、自動ソート、なんですが、最近少し忙しくてこういう簡単なものも中々作れないのですよ。

乱数性

NeoMupl0.08アップしました。
今回の改善点は、乱数の初期化です。
どう考えても毎回同じような曲ばかり流れてると思っていたらRandomizeが抜けていました。

そうそう、物理量解析エンジンのページも作っておきました。

MifuminLib

というわけでNeoMuplにステータス表示の機能をつけましたよ。
そしてついでに最後に演奏した曲も保存するようにしましたよ。
いや、最後に選択していた項目、といったほうがただしいのですけど。
どれをアップしました、今日。
違います、それ、です。
最近つくづく思うのは、楽曲を追加した時点で自動ソートがかからないのはすごく不便だということ。
そうそう、ダウンロードページをマイナーチェンジしました。
カテゴリの簡単な解説をつけたのと、「ライブラリ」のカテゴリの追加です。
「ライブラリ」には将来プログラミングページに掲載しているサンプル以外のものも移動してくるつもりです。

悪乗り

ふにゃさんの攻略ページ、ステージ9ができましたよ。
まあ、悪乗りというヤツですかね。
このステージのコンセプトは。

NeoMuplに欲しい機能:
・演奏中かどうかなどのステータスを知る
・ランダム演奏のときで選ばれない曲
まだあるもんですね。
ついこないだ完成させようと思って中止したら、急に完成品として必要な機能が見えてきたようです。
切羽詰らないとやろうとしないんじゃなくて、切羽詰らないと核心が見えてこない、というのが私なのかな…。

本探し

今日は本探しで結構な時間を使ってしまいあまり色々できませんでした。
悔しいのでNeoMuplをほんのちょっと修正してアップしておきました。

<前 次>