無題
昨日のNeoMuplの改造で、時の重みパラメータがすごく効くようになってしまいました。
以前だと目一杯きつく設定してもほどほどの効果しかなかったのですが、今度は極端に設定するとその分極端に効果が出るようです。
もっと細かく時の重みを調節する機能が必要かもしれません…が、もともと大雑把なパラメータなので別に微調整する必要もないかもしれません。
昨日のNeoMuplの改造で、時の重みパラメータがすごく効くようになってしまいました。
以前だと目一杯きつく設定してもほどほどの効果しかなかったのですが、今度は極端に設定するとその分極端に効果が出るようです。
もっと細かく時の重みを調節する機能が必要かもしれません…が、もともと大雑把なパラメータなので別に微調整する必要もないかもしれません。
爆ボンの動画、DVDの別ディスクに切り替わるところで若干映像の乱れが出ているようです。
ただ、こうなることを想定してあらかじめ無音で画面が真っ暗になった部分で切ってあったので、少しばかりの編集で何とかなりそうです。
今日は、どうにもNeoMuplの時の重みパラメータがあまり効果的に働いていないように見えたので、そのあたりを改良していました。
以前は最近再生されていないデータを判断する基準として現在時刻との差を用いていましたが、長い曲を聞いた後やしばらく停止していた場合に時の重みが相対的に軽くなってしまうので、基準とする時間を最終再生時刻として設定しました。
というわけで、0.18にバージョンアップです。
NeoMuplのMIDIの音量調整にはボリュームじゃなくてノートオンベロシティをツールで調整したほうがいいんじゃないかと思ってDM7Libに手を加えていました。
ふにゃさんのほうは新しい追加ステージを作ってから設定プログラムの内蔵をどうするか試行錯誤していました。
今日は新しいウインドウを作る方法をいくつか試してみたのですが、どれもこれもうまくいかず、設定ウインドウと一緒にゲームも勝手に動いてしまったり、逆に設定ウインドウもゲーム本体も動かなくてにっちもさっちもいかなくなったりして、結局うまくいきませんでした。
なので今度は、別ウインドウを形成しない方式で、メインウインドウを設定ウインドウに変形させる方針でいってみようと思います。
そうそう、あの追加ステージ、バージョン1.11に同梱するといっていましたが、標準で同梱するにはあまりにもあまりな内容になってしまったので、ステージ単体で公開することにしました。
というわけで、NeoMupl修正版、改行の不備とか一部の表記漏れも修正してアップしました。
同時にPHPCRSSの動作確認もできたので今度はPHPCRSSの更新をしようと…あ、でもふにゃさんもあるんだったかな。
NeoMuplで不必要にMIDIポート変更をしている部分があったのでその部分を修正しました。
なぜだか分からないんですが起動と同時にやるとエラーが出てデータが壊れることがあるんですよね。
こうなるのは結構まずいので明日にでもアップします。今日はしません。
かなり関係ないですがリボンヘビ描きました。
NeoMuplのポートの個別変更に対応しました。
…が、再生時に音が消えなくなることがあるようで、それさえクリアできればアップした否と思っています。
そういえば、久々にスマブラXをやってみたところ、情け無用組み手で10人抜きを達成しました。
まあ、10人自滅させただけなんですが。
あと、アンパンDBにシリーズによる分類をつけました。
結構勝手な基準ですが。
で、MIDIポート変更を少し改善して、変更画面を作る準備までできました。
ただ、曲ごとのポートの変更については、DirectMusicを使わない場合には表示しないことにする予定なので、レイアウトの変更あたりで面倒なことになりそうです。
もうずいぶんと強制終了になる割合は減ってきました。
昨日言っていた曲ごとのポート変更は中身としては実装できましたが、変更画面ができていないので実際の稼動はまだです。
これが早めに終われば今日更新するつもりだったのですが…。
NeoMupl、DirectMusicを扱うクラスに無意味にunsafeが付いていたのではずしました。
これでエラーが直るかどうかは分かりませんが…。
あと、DLL側でエラーチェックを強化しました。
これで何とか強制終了だけは避けられるとよいのですが…。
あと、強制終了とはかかわらず、MIDIファイルと音源の個別の相性というのもあるので、DirectMusicを使う場合は曲ごとに音源を選べるようにしたいと思っています。
関係ない話ですが、近いうちに爆ボン最強縛り全カスタム集めに挑戦するかもしれません。
今までのように一つ一つの面を充分な記録が出るまでやり直すのではなく、通しで1プレイとして。
できれば裏技とかもなしということにしておきたいですね。
NeoMupl、まだメモリエラーが起きます。
でも今回はちゃんと原因を突き止めました。
そして自分の力ではどうにもならないことも。
DirectMusicまわりを改善したのですが、最終的に出力MIDIポートとの相性でエラーが出るようです。
なので、解決方法としては標準のMIDIポートを使うしかなさそうです。
そうそう、アンパンDBにランダムセレクト機能をつけました。
ダウンロードコーナーのページをいろいろと細かく更新しました。
他のコーナーでもちょくちょくやってるJavaScriptでのメニューの開閉と、それぞれのページでのRSSへのリンクです。
NeoMuplも進みました。
MIDIを再生してもエラーも何も起こらなくなりました!
…と言いたいところですが、再生できないファイルだった場合の処理が甘いので、その点の処理は改善が必要そうです。
で、実際に作り始めました。
マネージドとアンマネージドの混在するややこしいプログラムにもだんだん慣れてきたところです。
参考にするためBomber丸WorldのBGMクラスを見ていたらIDirectMusicのReleaseし忘れを発見しました。
これもそのうち直そうと思います。
VC++でDirectXのDLLを作ってC#のNeoMuplで使うというのも悪くないかもしれない。
ネイティブとマネージドを混在させる利点ってこういうのぐらいしか思い当たらぬ。
どうにもNeoMuplのDirectMusicが不安定なのでVB用DirectXを使わない方法で再生できないかいろいろ試していました。
C言語用のDirectXのC#での使い方が分からなかったので簡易的なDLLをどっかから拾ってきて使ってみたのですが、これはこれでうまく動かないようでした。残念。
アンパンDBにリンク機能をつけました。
関連性の深いサイト、というか、公式サイトへのリンクを張る予定です。
ん~、昨日のを踏まえてNeoMuplをいじってみたんですがどうにもアクセス保護違反が起きるようです。
例外処理でアクセス違反を無視しても結局終了時にエラーが起きるので根本的な対策が必要かもしれません。
とりあえず今は項目が増減したときに自動セーブしてエラー落ちしたときの被害を最小限に抑えるようにしています。
う~む、こんなときに限って無音化が起こらないのです…。
問題が起こらなきゃ原因究明もできやしない…。
今日は久しぶりに髪を切ってきました。
かなり伸びてたので短くしてもらいました。
それはそうと、Vistaに変えてからNeoMuplで時々何も音が出ないことがあるので、ボリューム設定の異常を疑い、現在のボリュームを表示するようにしてみました。
実際にやってみると今のところボリュームの異常は見当たりませんが…。
マップシステムについて、だんだん思い出してきました。
マップチップとキャラをまず全部3D空間上に配置してZソートして奥から順番に表示、表示対象をCBWWindowにしても正常にクリッピングして表示、マウス操作対応のため見た目の座標と内部座標の対応、データ部と表示部のプログラムの分離、などなどなど…。
NeoMuplで、なんとなくランダムのくせに選ばれる曲が偏る気がしたので、スキップ率に加えて、時の重みというパラメータをつけて、最近再生されていない曲を優先的に選ぶようなオプションをつけました。
正直、100倍優先にしても数千曲の中だと焼け石に水のような気もしますが、なんとなく水なりの効果はあるような気がしてます。
メテオスもどきはシュートのおかしな挙動を少し改善しました。
今日はNeoMuplいじりました。
今回は、ランダム再生のとき、最近再生されていないものを若干優先するような変更をつけました。
最近なぜか同じ曲が短時間に何度も選ばれるということが起こっているので、それをある程度防ぐために確率に手を加えたのです。
今日はNeoMuplでMIDIの再生が止まらなくなる問題を半ば強引にですが解消しました。
マシンの動作が非常に重たいときに確率的に起こるものなのでデバッグしにくいのですが、とりあえず無理矢理全部止めれば何とかなるだろうと思ってやったので、本当に解決しているかどうかはわかりません。
メテオスもどきはドッキング処理を作っていよいよ点火の処理が作れそうなところです。
シュートの挙動も改善しましたし、ドッキングも再帰処理により案外簡単に記述できましたし…。
問題は切り離し点火だ!!
切り離し点火をとりあえず実装するのは難しくないんです。
難しいのは、必要以上の切り離しをどう抑制するかなのです。
今考えているアルゴリズムではどうしても上方逆L字点火が切り離されてしまうのです。