ハイハットコントローラーを2バスとして使う
別チケットでちらっと触れた件ですが、こちらにも書いておきます。誰が設計・実装担当するかはともかく、暗黙仕様の明示化という観点で。
BD GroupをONにして1曲プレイして、その後OFFに戻したときに、 他のHH GroupやらHitSoundやらの設定もBD Groupをいじる前の設定に自動で戻してほしいところです。
その上で、BD Group=ONの時は、関連する設定(HH Group等)はユーザーが設定変更できなくなっていると尚よしです。
BD Group=ONの時にDTXManiaを終了してしまった場合も、極力関連設定は保持して欲しい。 (つまり、次回起動時もBD Group=ONが維持されており、これをOFFすると、もともとBD Group=ONにしたときの関連設定値が復活する。)
チケットが立ちましたので、専用の branch を作成します。
残っている課題や問題をどうするか、最終的にtrunkへマージするのかなどの諸問題は残っていますが、ひとまずそれらは置いておいて、実装できる箇所から順番に実装していこうと思います。
うちじゃ試験できないのがちょっと残念ですけどね。
branch 作成完了。
今後は、branch に以下の順番で実装&コミットしていく予定です。
最低限動作させられる 6. まで実装が完了しましたので、一度ここでテスト公開します。
本チケットの上のほうにある「添付ファイルリスト」内の ~.r1.zip がそれです。(DTXMania本体のみ)
1. から 5. まではこちらでも試験できたのですが、6. だけは試験ができません。
なので、実行してみた方は結果をご報告下さい。
とりえあず、rev.290 で一通り完成しました(つもり)。
で、完成版のファイルを本チケットに添付しようとしたら、容量制限(1ファイル200KBまで)に引っかかってしまったので、自分のサーバにUPしました。
http://mainori-se.sakura.ne.jp/temp/DTXManiaGR092-t27029-r2.zip
中身は公式092に対する差分ファイルのみですので、公式092の内容にに上書きコピーして下さい。
では、デバッグをお願いします。>各位
テストしてみました。
テスト項目
○HHCtrlへのキーアサイン
→正常にcode.44を登録出来ました。
○BD Groupの切り替え 0→1
→正常にBD-0/1の切り替え出来ました
→その際、HHGroupは想定どおり(HH-0→2 / HH-1→3 / HH-2,3変更なし)PriorityもC>Pへ変更されました
○BD Groupの切り替え 1→0
→(実装されていない為当然ですが)HH Group/PriorityはBD-1に変更した値のままで維持されました。
●演奏画面で実際に演奏
→プレイ画面でHHCtrlを踏んだ瞬間に100%クライアントがエラーを出します。
→BD-0で曲を選択してもプレイ画面にてHHCtrlを踏んだ瞬間にエラーになります。
(BD-0/1共、HHCtrlを踏まなければ続けれます。)
→(同じファイル構成で)exeだけを092に戻したら通常通り(HHCtrlを踏んでもエラーは出ません)
エラーの画像は
https://jp-net.sakura.ne.jp/free/index.php
(↑は私がレンタルしているサーバーエリアなので使用は自由です)
アサイン(HH Pedal)に何も登録していなければBD-0/1どちらでもエラーは出ません。
HH Pedalに違うコード(code.49(LC))を割り当てて実行したところ、LC叩いた瞬間に同じエラーが出ました。
→HH Pedalに登録したコードを入力するとエラーとなるようです。
..と書き込んでるうちにr2が・・・とりあえずこれを書き込んでr2テスト入りますm()m
r2でも同様の症状でした...>HHPedalに登録したコードを入力すると強制終了
項目7-10に関して、BD値/HHGroup/HHPriorityをそれぞれ変更、端末再起動を絡めて数パターン試しました。
→問題無く動作しました。(BD-1 → 強制変更 / BD-0 → 変更前へ復帰)
おおうさっそく……
テストありがとうございました。
やっぱりというかなんというか、6. にバグありでしたか。
他は大丈夫だったようですね。
……で、この OutOfRange 例外ですが、私が 6. を実装している最中にも結構出てきたのです。
キーアサインに Capture なるものが存在し、楽器パートだった enum に SYSTEM が入っていたことが最大の鬼門でした(笑。
for文や配列の引数にマジックナンバーとして使われてたりする enum なので…… う……うかつに触れない……
でも、HHPedal 以外でも再発するなら、こちらで別の Note を割り当ててみても再現できるはずですね。
試してみますね。明日になっちゃいますけど。
ちびっと修正・リファクタしました。キーボードプレイしかしていませんが、これで例外は出なくなったと思います。
チケットに添付した DTXManiaGR-t27029-r3.zip をお試しいただけますでしょうか。
余談: 「迂闊に触れない」なんてことのないよう、キーコンフィグ用と演奏用とで別のenumに分けていたというのに!
わーお。
やぎさん早い。助かりますわ。
余談: 「迂闊に触れない」なんてことのないよう、キーコンフィグ用と演奏用とで別のenumに分けていたというのに!
そうだったんですか……。
今回はキーコンフィグと演奏のどちらの enum もいじる必要があったので、まず、なぜ分かれているのか?から読み込まなければなりませんでした。(アホか私は(涙
そして、Capture の後ろに HHPedal 入れたら for 文で無視されたです(汗
そんでもって SYSTEM ってパッドで言えば Unknown だよなーってんで割り当てたら、配列で OutOfRange 例外が参上しましたです(Unknown=99(汗汗
自分一人で作ってるときから思ってたのですが、似たような(そして微妙に異なる) enum が結構多いですよね。
もっとスマートにまとめられないものですかね……
(格言:動いているものには手を出すな
今回はキーコンフィグと演奏のどちらの enum もいじる必要があったので、まず、なぜ分かれているのか?から読み込まなければなりませんでした。(アホか私は(涙
理想の「コメント無しでも意図が伝わるコード」への道のりはまだまだ遠い・・・enum名にそこはかとなく意図を込めたつもりでしたが、やっぱり通じなかったので今回コメントを追加しました(笑)
そして、Capture の後ろに HHPedal 入れたら for 文で無視されたです(汗 そんでもって SYSTEM ってパッドで言えば Unknown だよなーってんで割り当てたら、配列で OutOfRange 例外が参上しましたです(Unknown=99(汗汗
Capture追加時に私がたどったあるあるパターンそのまんまですわそれ(汗;;;
似たような(そして微妙に異なる) enum が結構多いですよね。 もっとスマートにまとめられないものですかね……
確かに。まとめられないならば、本来は個々のクラスの中に個々にenumを作って隠蔽すべきってところでしょうか。でもそれだと、作るのが面倒です・・・
理想の「コメント無しでも意図が伝わるコード」への道のりはまだまだ遠い・・・enum名にそこはかとなく意図を込めたつもりでしたが、やっぱり通じなかったので今回コメントを追加しました(笑)
まあ、意図といいますか、「影響範囲」の方が分かりづらいですよね、どうしても。
「これにメンバ足したら他はどこ直せばいいの? えっこれ int にして配列でも使ってるの? 他のenumにもマッピングしてるの!?」ってやつ。
図で描けばいいんでしょうけど、メンテナンスが付いてこない。
似たような(そして微妙に異なる) enum が結構多いですよね。 もっとスマートにまとめられないものですかね……
確かに。まとめられないならば、本来は個々のクラスの中に個々にenumを作って隠蔽すべきってところでしょうか。でもそれだと、作るのが面倒です・・・
そもそも、
「MIDI入力(たくさん)」→「内部10パッド(10チップ)」→「外部9パッド(8レーン)」
というマッピングだけでもややこしいのに、それに加えて Group や Cymbal Free とか付けたもんだからもう大変。
人、それを自業自得という。
やったね!得したね!(涙
美琴様がいない蛙はただの蛙です
DTXManiaGR-t27029-r3をテストプレイしてみました。
r1,r2から比べていきなりexeサイズが40kbも増えている(正月太り!?)ことを気にしつつ、
○実演奏
・HH Pedalにnote.44を登録、BD-1にて起動
→正常にHHCtrlがバスとして認識、判定もOKです。HHCtrlで他のレーンが反応することもありません
・HH PedalをBD-0に戻して起動
→正常にHH打ち分けが可能に戻りました。
環境は限定されていますが、私の環境では問題なくハイハットコントローラを2バスとして使えるよう切り替える+戻すことが出来ました。
ありがとうございますm()m
アホ毛のいない一方通行はただのセロリです
無事に実現できて良かったです。
私も何もせずにすみました。(ぉぃ
……で、残る課題は、これを trunk にマージするか否か(公式仕様にするか否か)ですが。
かなり利用条件に制約のある機能ですが、個人的にはマージしちゃってもいいかなとか思ってます。
いかがでしょう?>実質管理者のやぎさん(名指しか
知らぬ間に名指しされてました(汗;;;
で、trunkへのマージですが・・・
まず前提として、このネタは現時点で落とし込めるところで取りあえず形にしただけであって、まだ試行錯誤が続くのですよね。
私としては、trunk上で試作を続けるのは反対ですが、branchで試作を続けつつ切りのいいところで適宜trunkにマージするのはOKと考えます。
なので、現時点のbranchをtrunkにマージするのは良いと思いますが、その後の進め方は皆さんのご意見もお伺いしたいです。
知らぬ間に名指しされてました(汗;;;
さいむ の すべて を あたえて やろう
かんりしゃ に ならんか?
> はい
Yes
そんな ひどい……
で、trunkへのマージですが・・・ まず前提として、このネタは現時点で落とし込めるところで取りあえず形にしただけであって、まだ試行錯誤が続くのですよね。
とりあえず起案者にご満足頂けているようなので、マージするか現状維持するか決まれば、このチケットはもうおしまいにしますよ?
新しい要望が出たら、それはまた新チケットと新 branch にて。
私としては、trunk上で試作を続けるのは反対ですが、branchで試作を続けつつ切りのいいところで適宜trunkにマージするのはOKと考えます。
なので、現時点のbranchをtrunkにマージするのは良いと思いますが、その後の進め方は皆さんのご意見もお伺いしたいです。
じゃあ、マージしますね。
後のことは前記の通りということで。
ガッテン承知。
p.s. つい先ほど、コイツをくらいました。tp://hiroerohi.seesaa.net/article/108455505.html これまでの多数のセーブデータ・・・PS1~3の全セーブデータなので数千時間分相当くらいの記録・・・が全消え。超泣きそう。
特に丸1年手塩に掛けて育て続けたGT5のデータ飛びが悲しすぎです。
初期型PS3をお使いのみなさま。セーブデータをこまめにバックアップしましょう。いやホント。
ということで、branch を trunk にマージしました。
チケットを終了します。
p.s.
ご愁傷様です。個人でのクラウド需要はゲームデータ保存から、ですか……
ユーザーフォーラム#61301からです。