単に楽しみのためにシンプルな小さなMOBAを作成しています。私はすべてをシングルプレーヤーにしていたときに、「マルチプレーヤーを追加する必要があるだろう」と気づきました。
私はこれまでネットワーキングで何もしたことがないので、Lidgrenをゲームに統合する方法を学ぶのは楽しくて素晴らしいものでした。問題は、私が行っている方法が間違っていることはよくわかっています。なぜなら、私が知る限り、メインストリームゲームを使用するには十分に堅牢ではないからです。しかし、何が問題になっていますか?
私がやっていることは、基本的に、プレイヤーがアクションを実行するたびに、「ちょっと、これをやっただけだ」というメッセージをサーバーに送信することです。サーバーとクライアントはどちらも同じシミュレーションを実行しています。次に、サーバーは他のすべてのクライアントにメッセージを送信して、その人がそのことをしたことを伝えます。
いくつかの場合を除いて、ほとんどの場合、プレーヤーが何かをするとき、クライアントはそれがクールであると想定し、自分でそれを進めます。したがって、どこかを右クリックしてそこに移動すると、そのプレーヤーのクライアントは彼の男をそこに移動し始め、それを知らせるメッセージをサーバーに送信します。
だから基本的に:
- プレイヤー1が呪文を唱えると、6秒間100%速く動くようになります
- プレーヤー1のローカルクライアントがそのバフをユニットオブジェクトに追加します
- プレーヤー1のクライアントがサーバーに「この呪文を唱えただけだ」というメッセージを送信します。
- サーバーは、彼がその呪文を唱えるのに十分なマナを本当に持っていることを確認し、もしそうであれば、そのバフをサーバーのそのUnitオブジェクトのコピーに追加します
- サーバーは他のすべてのクライアントに「この男はこの呪文を唱えた」というメッセージを送信します
- 他のすべてのクライアントはメッセージを受信し、「ああ、大丈夫」に進み、そのバフをそのプレーヤーのローカルユニットオブジェクトに追加します
ビッグゲームがマルチプレーヤーでどのように機能するかを確認するために、さまざまな情報をざっと調べてきましたが、この機能に手を出し始めたばかりのユーザーを混乱させるようなものですが、Sourceエンジンは、すべての変更を含むパケットを世界のすべてのダニ?繰り返しますが、これはまったく新しいことですが、それほど多くのデータを頻繁にプッシュできますか
これが少し乱暴である場合は申し訳ありませんが、基本的には、なぜ私のシンプルなシステムが適切な方法ではないのかと思っていました。