ターンベースのボードゲームサーバーの参照?[閉まっている]


12

ターンベースゲームサーバーの構築方法について推奨する参考資料/書籍はありますか?チェスプレーヤーをペアリングし、ゲームの状態を保持するチェスサーバーのようなものです。過去には、たとえば、IGS(go、weiqi)はソケットベースの実装です。利用可能な現代の技術は何ですか?ありがとう!


gdevフォーラムに関連するスレッドがありますgamedev.net/topic/565319-turn-based-game-design-help
zinking

あなたは、次のゲームサーバの設計から学ぶことができます。developers.google.com/games/services/android/...
tomash

回答:


5

トピックはささいなことなので、これに関する特定の本はないと思います。

プレイヤーがアクションをメールで送信できるメールサーバーを想像してください。サーバーには、これまでに実行されたすべてのアクション(メールとして)があります。つまり、ゲームの状態があります。ゲームステートをリロードする場合は、メール内のすべてのアクションを時系列に実行するだけです。あなたがしなければならない唯一のことは、それが誰のターンであるかを確認することです...しかし、それも簡単です(例えば、ターン番号)。現代の技術は必要ありません...修正されたメールサーバー/クライアントソリューションで十分です。

PloのペアリングはElo経由で実行できますが...


たぶんもう少し説明できるでしょう。'elo'がわからない
12

Eloシステムへのリンクを含めるように投稿を編集しました。
キロタン

2

それが私なら、ソケットを使って一から構築します。送信するデータの量は非常に少なく、ターンベースの性質により、わずかな遅延が目立たなくなります。

私の意見では、本当の質問は、あなたがそれに追加する必要がある機能です。ゲームセッションは永続的ですか(誰かが脱落して再参加できますか、ゲームを保存できますか)。Civilizationスタイルの保存を行う場合は、おそらく保存データをすべてのクライアントにプッシュするか、検証のためにサーバーが提供するキーを保存したクライアント側に保存する必要があります。

「プレイヤー2がユニットを移動している」や「対戦相手がAFKである可能性がある」など、ターン間レポートのようなものが必要ですか?その場合、ソケット接続を開いたままにしておくことができます。

一般的に言えば、逸脱する説得力のある理由がない限り、サーバーはできるだけ愚かでシンプルなものにします。デバッグする時間が少なくなります。実際のゲームクライアントなしでtelnetを使用してサーバーをテストできるため(特定の問題で疑わしいかもしれません)、プレーンテキストプロトコルを使用することも好きですが、これはデータのWireshark操作を奨励します(おそらくとにかく確認してください)。

編集:ゲームが1対1のゲームのみをサポートしている場合、ピアツーピア接続に注目する価値があります。


1

サーバーとは何か、責任は何かを考え直さないことが重要です。この場合、比較的遅い演技のゲームがあるので、サーバーアーキテクチャは信じられないほど複雑になりません(推測航法などのペースの速いゲームに対して)。サーバーは、接続されたクライアントが情報のパケットを送信するために、TCPポートでリッスンする必要があります(速度が必要ない場合はUDPをスキップすることもできます)。パケットを受け入れ、ゲームのルールに基づいて検証し、応答を送り返します。特定のケースでは、サーバーは現在誰がターンしているのかを知り、他のプレイヤーが自分のターンになるまでアクションを実行する試みを拒否する必要があります。

あなたがどのような技術を念頭に置いていたのかわかりませんが、Kyronetライブラリを使用してJavaでこれを行うのに十分簡単なことです。ゲームアクションを中央サーバー(2人のプレイヤーのいずれか)に送信し、それを処理して、ゲームの更新を両方のプレイヤーに送り返すだけです。同様のことが.NETにも存在すると確信しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.