「ウォブ」通信対戦システム 完成・・・?
投稿者: ikosami 投稿日:2015/06/12 18:40
Rmakeでは珍しいオンラインのリアルタイム通信対戦
とりあえず作ったのですが、まず言えることは「遅い!」
それはもう遅いです。亀のように遅いです。
特にルームに入ってから対戦が始まるまでが遅い。
構造的には、
ルームの状況を見る→
だれかが入ろうとしている最中でなければ入る
(二人同時に入ると二人ともプレイヤー1とかになりかねないため排他処理)→
他の人がルームに入ってくるのを待つ→
ルームに人がそろったら、対戦開始。
排他処理するためには、1秒に1回しか呼べないsaveGameData、loadGameDataを
数回呼ぶ必要があるため、これだけで数秒かかります。
そしてやっていると時間がかかるということが理由で
「途中で他の人が画面を閉じたりしていないかどうか」を
リアルタイムで調べることができません。
それが調べられないということは、対戦開始時に自分しかいないという可能性もあるため
ルームで人がそろったらとりあえず、ほかの人がちゃんといるかどうか
確認を行っているのですが、これがすごく遅い・・・
処理を変えれば、もうちょっと何とかなるような気はするのですが
4人対戦なら最高でも、10秒近く必要になります。
読み込んで変更して書き込む>=2秒
2秒ぴったりだと、万が一ずれたばあい、後がすべておかしくなるため
2秒ちょっといるため、×4で10秒ほど。
あと、一番大事なことですがバグってます・・・
遅く過ぎてテストにすごく時間がかかる・・・
[ウォブ ]
ツイート
とりあえず作ったのですが、まず言えることは「遅い!」
それはもう遅いです。亀のように遅いです。
特にルームに入ってから対戦が始まるまでが遅い。
構造的には、
ルームの状況を見る→
だれかが入ろうとしている最中でなければ入る
(二人同時に入ると二人ともプレイヤー1とかになりかねないため排他処理)→
他の人がルームに入ってくるのを待つ→
ルームに人がそろったら、対戦開始。
排他処理するためには、1秒に1回しか呼べないsaveGameData、loadGameDataを
数回呼ぶ必要があるため、これだけで数秒かかります。
そしてやっていると時間がかかるということが理由で
「途中で他の人が画面を閉じたりしていないかどうか」を
リアルタイムで調べることができません。
それが調べられないということは、対戦開始時に自分しかいないという可能性もあるため
ルームで人がそろったらとりあえず、ほかの人がちゃんといるかどうか
確認を行っているのですが、これがすごく遅い・・・
処理を変えれば、もうちょっと何とかなるような気はするのですが
4人対戦なら最高でも、10秒近く必要になります。
読み込んで変更して書き込む>=2秒
2秒ぴったりだと、万が一ずれたばあい、後がすべておかしくなるため
2秒ちょっといるため、×4で10秒ほど。
あと、一番大事なことですがバグってます・・・
遅く過ぎてテストにすごく時間がかかる・・・
[ウォブ ]
コメントする
コメントするには、ログインする必要があります。
1P、操作待ち - 1Pのみ操作可能、2P以降は「他のプレイヤーが準備中です」
1P、OK - 1P「準備完了」、データを更新保存
この状態になるまで、2P以降は読み込みだけ処理して待機、
1Pの書き込み完了を確認すると、2Pが操作待ちに
これなら、ずれを確認する必要がなくなりますし、
1Pの初期読み込みは必要なくなるため、
最短7秒で完了します
また、データの書き込み時に、
最後に操作したPと時間の情報を格納しておけば、
誰が、何秒前に操作して、
更新がとまっているかも分かるようになるため、
途中でウインドウを閉じたりした場合の確認にも応用できます
そういえば、ルームの人がいなくなっていないかどうかも
これにした方が早そうですね。
時間の情報の発想は考えてなかった・・・