ネットを介した時点で「一瞬のラグ」は絶対発生しますので、ゲーム設計でラグの回避策を考えるのが一般的です。これは設計の問題ですので、UE4だとかUnityだとかはあまり関係ありません。どちらが向いているかと言われれば、どちらでも作れる、といったところでしょうか。
一般的に採る「リアルタイムな通信ゲーム」の設計について2つほど紹介します。
送受信するデータを数十バイトにまで絞り込むこと
これは格闘ゲームやFPSなどに言えることです。可能な限り相手にデータを伝えるため、送受信するデータを限りなく小さくします。ハンドガンとマシンガンのような違いで、そこそこ大きなデータを遅い間隔で送っていたのでは間に合わないため、小さなデータを素早い間隔で送信します。ただし、この方法は通信環境のレイテンシに左右されるため、データを小さくするだけで解決できる問題は少ないです。通信速度とレイテンシは別の話ですので、気をつけてください。レイテンシを測るための数値はpingと呼ばれます。調べてみてください。
お互いの操作が多少遅れても問題のない仕様にすること
これはモンスターハンターシリーズをプレイしたことがあれば経験したことがあるかと思います。あくまでお互いに共有するのは敵や味方のステータスなどであり、操作は結構手抜きなやりとりをします。明らかに味方の動きが遅れて、味方の攻撃が届いていないのにちゃんとボスのHPが減っているとか、ボスの突進を同時に受けたのに自分はすぐ吹っ飛んで味方は一拍遅れて吹っ飛ぶ、といったものを見たことがあるかと思います。あれはプレイヤーそれぞれのゲーム機の中で、「自分とボス」の動きだけが最速で反映され、味方の動きは通信で多少遅れて後から再生しているからです。自分とボスの判定は自分のゲーム機で管理し、味方とボスの判定は味方のゲーム機で管理しており、お互いの情報を後から通信で補うことで成立しています。
※といっても、私がモンスターハンターを作ったわけではないので、動作を見た私の推測でしかありませんのであしからず
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/25 11:57