「ウォブ」通信対戦システム 完成・・・?

投稿者:Material 7186 1 mini ikosami 投稿日:2015/06/12 18:40

Rmakeでは珍しいオンラインのリアルタイム通信対戦

とりあえず作ったのですが、まず言えることは「遅い!」



それはもう遅いです。亀のように遅いです。
特にルームに入ってから対戦が始まるまでが遅い。

構造的には、
ルームの状況を見る→

だれかが入ろうとしている最中でなければ入る
(二人同時に入ると二人ともプレイヤー1とかになりかねないため排他処理)→

他の人がルームに入ってくるのを待つ→

ルームに人がそろったら、対戦開始。


排他処理するためには、1秒に1回しか呼べないsaveGameData、loadGameDataを
数回呼ぶ必要があるため、これだけで数秒かかります。

そしてやっていると時間がかかるということが理由で
「途中で他の人が画面を閉じたりしていないかどうか」を
リアルタイムで調べることができません。

それが調べられないということは、対戦開始時に自分しかいないという可能性もあるため
ルームで人がそろったらとりあえず、ほかの人がちゃんといるかどうか
確認を行っているのですが、これがすごく遅い・・・

処理を変えれば、もうちょっと何とかなるような気はするのですが
4人対戦なら最高でも、10秒近く必要になります。

読み込んで変更して書き込む>=2秒
2秒ぴったりだと、万が一ずれたばあい、後がすべておかしくなるため
2秒ちょっといるため、×4で10秒ほど。



あと、一番大事なことですがバグってます・・・
遅く過ぎてテストにすごく時間がかかる・・・

[ウォブ ]

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2015/06/17 18:37, 履歴)
敢えて、操作プレイヤーを限定するとか


1P、操作待ち - 1Pのみ操作可能、2P以降は「他のプレイヤーが準備中です」

1P、OK    - 1P「準備完了」、データを更新保存
         この状態になるまで、2P以降は読み込みだけ処理して待機、
         1Pの書き込み完了を確認すると、2Pが操作待ちに


これなら、ずれを確認する必要がなくなりますし、
1Pの初期読み込みは必要なくなるため、
最短7秒で完了します


また、データの書き込み時に、
最後に操作したPと時間の情報を格納しておけば、

誰が、何秒前に操作して、
更新がとまっているかも分かるようになるため、
途中でウインドウを閉じたりした場合の確認にも応用できます
Material 7186 1 mini ikosami(投稿日:2015/06/19 13:05, 履歴)
ゲームプレー中は、大体そんな感じですが、
そういえば、ルームの人がいなくなっていないかどうかも
これにした方が早そうですね。

時間の情報の発想は考えてなかった・・・
Cdv30200 aoi icon mini aoihikawa(投稿日:2015/06/13 11:24, 履歴)
時流聖伝でも
同様の処理を行っていますが、
(一定ステージクリアでオンライン対戦が可能になります)

やっぱり、1秒に1回という呼び出し時間を
どのように工夫するかが鍵ですね
Material 7186 1 mini ikosami(投稿日:2015/06/17 08:17, 履歴)
あ、やっぱり初ではなかったのですね。

本来、こういう使い方は想定されていないのでしょうけれど、
せめて1秒に10回くらい呼びたいところです・・・