トピック

ローカル通信でボタンのリピート機能を使う実験

1.BUTTON(1,端末ID)を使う  問題:2台の3DS間で状態の不一致発生。  原因(推測):2台の3DS間のフレームの同期を取れないため、Wi-Fi通信のタイミングの違いにより、リピート条件を満たすか否かの不一致が発生するのかもしれない。 2.MPSEND/MPRECVを使う  状態通知方式の問題と思われるため、イベント通知方式に変えてみた。  問題:不一致は発生しなくなったが、遅延が発生するようになった。  原因(推測):バッファー数が足りず、1フレーム1イベントを送れないためと思われる。 3.送れずに溜まったイベントを1メッセージで複数同時に送る  2の遅延は無くなったが、ユーザ操作とのタイミングのズレが、解消されたわけでは無い(と思う)。 運動神経の鈍い私には、これ以上の実験は無理と思われ、中止する。
13そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
私もちょっと前、「ダルいス」っていうダライアス(シューティングゲーム)の横長画面を2台の3DSで再現するってのをやりましたが、データ送信にMPSENDは4~5フレ、MPSETで3~4フレ分の時間が掛かる上、たまに送信順が時系列で逆になったりする(これが厄介)ので、全ボタンを使わない前提で、1操作をFFFF内に収めてMPSETを8個ストックし、実質4フレ遅れで処理させたらうまく動きましたよ。自分の操作も4フレ遅れになりますが、軽い「慣性」程度な感覚で遊べました。 私の場合、MPSET0~3番号を使って、1セット16ビットのうち2ビットを同期用チェックディジット(0~3を回す)にしておいて残りはBUTTONを圧縮、受信側は、チェックディジットの順番に処理、という風にしておけば、たまーーーーに4フレ以上かかるのかズレますが、ほぼ遅延なしの同期状態で2台の3DSで同じ結果が得られました。
3そうだね
プレイ済み
返信[2]
親投稿
みむ*mim hidemimtp
「ダライアス ダルいス」で検索したら動画が出てくると思います。
0そうだね
プレイ済み
返信[3]
親投稿
こーた w.d.we.k
みむさん、情報ありがとうございます。 MP-TESTが今回やってみたものです。 1.MP-TEST,1 2.MP-TEST2,3 3.MP-TEST4 になります。
2そうだね
プレイ済み
返信[4]
親投稿
みむ*mim hidemimtp
MPSENDは送信タイミングが4~5フレかつバッファエラーは避けられないので、色々試した結果、MPSET/MPGET一択かなーと思ってます。 MPSETの0~3に、上位2ビットにチェックディジット(CD)0~2を付けたデータを順々にセットしておいて、MPGET番号とCDの組み合わせが正しければ処理、違えば同じになるまで待つ(ほぼ無い)、という感じで私はやってました。 MPSET番号 CD  0    0  1    1  2    2  3    0  0    1  1    2 みたいにズレるので判別がつきます。
2そうだね
プレイ済み
返信[5]
親投稿
SquidSky ugomemo_gorohati
あまりにも使用頻度がないので、ローカル通信システム系がきちんと整備されてなかった、ということですかね・・? 報告しておきます。
0そうだね
プレイ済み
返信[6]
親投稿
もし、WiFiを使うときに発生する時間差と遅延の問題だとすれば、対処は、難しいと思います。みむさんのように、自前で頑張った方が、早いかと思います。
0そうだね
プレイ済み
返信[7]
親投稿
消えたB0の復活の呪文は、 B0 AND NOT B2 OR B3 かもしれない。
0そうだね
プレイ済み
返信[8]
親投稿
みむ*mim hidemimtp
私も自分なりに試行錯誤しただけで詳しくはないので、1~2フレで送受信できないのが普通なのかプチコンの仕様なのかは判別できません。 でもモンハンのネットプレイとかは絶対にもっとズレているであろうはずがリアルタイムで共同プレイできている(少なくとも体感上はそうなっている)ので、「今の仕様でどうにかする」のはよくある話ですね~。それがまた楽しい(若干、M)
1そうだね
プレイ済み