タグ付けされた質問 「server」

オンラインゲームで一般的に発生する、複数のクライアント接続との相互作用の処理を担当する親コンピューター。

6
選択するサーバープラットフォーム[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 5年前休業。 これらの要件を備えたオンラインマルチプレーヤー用のサーバーを作成します。 完全にサーバー上でプレイされる非常にシンプルなターンベースのゲーム(カードゲームを考えてください)(セキュリティ上の理由) テーブルごとに4人のプレーヤーで複数のゲーム(テーブル)を実行できる必要がありますが、ロビーシステムは必要ありません(別のサーバーが処理します) できるだけ多くのプレーヤーを同時にサポートできます。複数のサーバーが必要になる場合があります プレイヤー間でチャット Flash / AIRクライアントへのソケット接続 他のサーバーと通信できる必要があります(プレーヤーアカウントなど) 今、私は2つのオプションを考えています: Smartfox(または同等のもの) TomcatなどのカスタムJavaソリューション Smartfoxを選ぶ理由 複数の部屋を処理し、ネイティブでチャットします おそらく、よく知られているマルチプレイヤーゲームの問題の解決策があります。 なぜカスタム? Smartfoxには多くの不要な機能があり、パフォーマンスが悪い SmartfoxはXMLベースのフォーマットと通信するため、より効率的なバイナリフォーマットを使用できます。 Smartfoxの拡張メカニズムを使用して、サーバーでゲームモデル全体を実行するのが便利かどうかわからない 複数の部屋とチャットは簡単に再実装できます Tomcatまたは軽量コンテナはSmartfoxよりも展開が簡単です Tomcatでの開発のためのより良いIDEサポート(自動デプロイなど) どう思いますか?私の仮定は正しいですか?追加するものはありますか?どのオプションを選択する必要がありますか(または完全に別のオプションを選択する必要があります)?

0
OpenFLを使用したSceneManagerの実装
OpenFLとHaxeを使用して基本的なSceneManagerを実装しようとしています。OpenFLとHaxeの使用経験はあまりないので、いくつか問題があります。 以下は、SceneManagerクラスの設計方法です。 package; import openfl.display.Sprite; import openfl.Lib; class SceneManager extends Sprite { private var currentScene: ...; public function new(rootScene: ...) { super(); currentScene = rootScene; Lib.current.addChild(currentScene); } public function changeScene(newScene: ...): Void { Lib.current.removeChild(currentScene); currentScene = newScene; Lib.current.addChild(SceneTwo); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

2
MMORPGサーバー側Javaアーキテクチャ
現在ターンベースのMMORPGゲームを制作しています。クライアントはAndroidで実行することになっています。今、私の友人がグラフィックをやっていて、私はゲームのクラス(プレーヤー、武器など)をやっています。さて、戦いが始まると、クラスはインターフェースによって操作できます(実際、私のパートナーにとっては、純粋なインターフェースを操作するようなもので、実装クラスへのアクセスは必要ありません)。 次に、複数のプレイヤーを許可するためにゲームサーバーを導入する必要があります。そして、いくつかの非常に重要な質問が発生します: 1)クライアントにクラスを残さずにゲームモデルをサーバーに完全にコピーしますか、またはサーバーに1つとデバイスに1つ、モデルの2つのコピーを用意して、それらの間の定期的な同期を完了する方が良いですか? 2)クライアントとサーバーのどちらの接続方法を選択しますか(視界内のクライアントはAndroidフォンです)?サーバーに関しては-私はそれを使っていくつかの経験があるjava原因に向けています。しかし、今の質問は-このタスクにはソケットを使用する方がいいですか、それともRESTサービスを使用できますか、それともJava EEサーバーに接続することも可能です。合併症?ゲームはマルチプレイヤーですが、ターン制なので、頻繁に更新する必要はありません。 3)スレッドについてはどうですか?すべてのクライアントは独自のスレッド(ソケットの場合)を持つ必要がありますか? 4)REAL MMORPGサーバーゲームのプログラミングに関する本はありますか???

1
オートマッチ/キューイングプレイヤー
Node.jsとRedisを使用しています。プレイヤーをオートマッチする信頼できる方法を考え出そうとしています。一致するサーバーがあり、複数のゲームサーバーがセットアップされています。 以下は私が起こらなければならないことです: プレーヤーはゲームの種類(小/中など)で参加リクエストを送信します マッチングサーバーは、プレーヤーを待っている現在のゲームタイプにプレーヤーを追加します ゲームサーバーはプレイヤーにゲームIDを送信します 現在、私はこれを次のように実装しています: マッチングサーバーはBRPOPを使用してgame:queue:smallをリッスンします game:queue:small:id = idが存在するかどうかを確認します game:id:usersの長さが<= 6(最大プレーヤー)かどうかを確認します プレーヤーをgame:id:usersリストに追加します ゲームの長さが6になったら、game:queue:small:idを削除します 一致するサーバーがgame:queue:small:idがないことを検出すると、次のようになります。 INCRゲーム:nextGameId game:queue:small:idを以前に生成されたIDに設定します ゲームIDをgame:queue:waitingに追加します ゲームサーバーは、BRPOPを使用して新しいゲームを待ちます。ユーザーが1人になると、ゲームのユーザーが2人以上になるまで待ってから、タイマーを開始します。それらがその時間内に満たされない場合、それらは持っているユーザーから始まり、その後game:queue:small:idを削除します(したがって、マッチメーカーに新しいゲームを要求するよう強制します)。 私の方法が機能している間、私はそれが生産でうまく機能すると確信していません、そしてそれは非常に入り組んでいるようです。次の問題の可能性を確認できます。 待機リストからゲームIDを受け入れるとゲームサーバーがクラッシュし、ユーザーはgame:id:usersに追加されますが、何も起こりません(クラッシュ自体は問題ではありませんが、ユーザーがゲームキューに追加され続けると、 ) ユーザーが切断してゲームが開始されていない場合、ゲームサーバーはユーザーをgame:id:usersリストから削除します。それを行っている間、マッチメイキングサーバーはユーザーをリストに追加して、ゲームがいっぱいであると考え、キューから削除することができます。 私の最初の考えは、1つのゲームタイプを待っているユーザーの単一のキューに変更することでした。ただし、これにはさらに問題があります。 ユーザーが接続するサーバーがクラッシュした場合、ユーザーをキューから削除しないため、ユーザーが存在しない場合でも、そのユーザーはゲームに参加できます。ソートされたセットを使用してリクエストの時間を保存し、ゲームIDが返されるまでクライアントにポーリングさせることができますが、これは、そのクライアントがどれだけ待機したかわからないため、ゲームを開始するかどうかわからないことを意味しますユーザー数が少ない。 ユーザーをゲームに参加させないと、ユーザーが参加しているものを確認したり、待機しているユーザーとチャットしたりできません(ゲームIDが必要になるため)。 私がこれを設定した方法はどれも正しくないので、誰かがいくつかのより良い提案を提供できるかもしれないと思っていました。ゲームサーバーとマッチメイキングサーバーを別々にしておく必要がありますが、必要に応じて拡張するためです。

2
サーバー側ゲームループ
多くのJavaゲームでは、fpsを制御するためにthread.sleep()を使用しています。サーバーはグラフィックを表示しないので、サーバーのゲームループはデルタ時間を計算するだけで実行し続ける必要がありますか?この例のように: long lastLoopTime = System.nanoTime(); final int TARGET_FPS = 60; final long OPTIMAL_TIME = 1000000000 / TARGET_FPS; while (gameRunning) { long now = System.nanoTime(); long updateLength = now - lastLoopTime; lastLoopTime = now; double delta = updateLength / ((double)OPTIMAL_TIME); doGameUpdates(delta); }

1
チームは開発中にゲームコンテンツをどのように共有/保存する必要がありますか?
Dropbox以外に、開発中の画像などのゲームコンテンツの保存と共有に特に役立つものは何ですか(オフラインでの作業、自動同期、windows / osxのサポートなど、Dropboxに設定された同様の機能)。 私たちは独自のSharePointサーバーをホストすることを検討していますが、それは本当にドキュメントに集中しているようです...たぶんBox.netはうまくいくでしょうか? 編集 コードについては、Gitを使用しています。 もっと正確に言うと、アーティスト/オーディオエンジニアが制作したコンテンツを誰でも簡単に、自動的に利用できる方法を探していました。資産の承認などの機能も害にはなりません。Tetradによってリンクされた回答に続いて、Alienbrainはかなり興味深いように見えましたが、予算からかけ離れています(将来的に投資する可能性があります)。 結局何をしていたのか... 私たちはBox.netを使用するつもりでしたが、デスクトップ用の同期アプリをダウンロードするには、何らかの理由でそれらからの連絡を待つ必要がありました。待つ時間があまりなかったので、Dropboxチームと一緒に行きました。Box.netには優れた機能セットがありますが、それがないと、私たちは本当に手遅れになることはありませんでした。 助けてくれてありがとう :)。
8 server  storage 

2
ロビーサーバーの記述には何が関係していますか?
ゲームルーム、一般的なチャットなどのロビービューに基づいてチェスのマッチメイキングシステムを書いています。これまでのところ、プロトタイプは機能していますが、サーバーで行ったいくつかのことには大きな疑問があります。ゲームロビーサーバーを書くことは私にとって新しいプログラミングエクスペリエンスであり、そのための明確で正確なプログラミングモデルはありません。また、それがどのように機能するかを説明した論文も見つかりませんでした。アマゾンから「Javaネットワークプログラミング3版」を注文しましたが、まだ出荷を待っていましたが、この本で役立つ例や情報が見つかると思います。 その間、私はあなたの意見を集めて、サーバーを正しく書く方法を学ぶことができるようにいくつかのことをどのように処理するかを見たいと思います。ここに私の頭の上のいくつかの質問があります:(もっと来るかもしれません) 最初に、サーバーの動作を定義しましょう。主な機能は、クライアントとのTCP接続を保持し、クライアントが生成したイベントをリッスンして、他のプレーヤーにディスパッチすることです。しかし、それだけではありませんか? クライアントごとに1つのスレッドを使用する必要がありますか?その場合、300クライアント= 300スレッド。それは多すぎませんか?それをサポートするにはどのようなハードウェアが必要ですか?そして、ロビーはおよそどのくらいの帯域幅を消費しますか? クライアントのソケットを保持するためにどのようなデータ構造を使用する必要がありますか?スループットを損なうことなくイベントをディスパッチするために繰り返し処理するときに、同時変更(たとえば、プレーヤーがロビーに入る、またはロビーに存在する)からそれをどのように保護しますか?ここでConcurrentHashMapが正しい答えですか、それとも私が知っておくべきいくつかのテクニックがありますか? ユーザーがロビーに入るとき、ロビーの状態をユーザーに転送するためにどのようなメカニズムを使用しますか?そして、これが起こっている間、他のイベントはどこで泡立ちますか?
8 java  server 

2
サーバー上のすべてのNPC / AIオブジェクトを管理する方法は?
私は単純なMMOを作成しており、現在、複数のユーザーがお互いを確認し、一緒に移動できるようにサーバークライアントアーキテクチャを配置しています。今度は敵を追加します。 世界で管理する必要のある何百ものNPCオブジェクトを最適に処理する方法を論じている記事へのリンクがあるかどうか疑問に思っていました。私はいくつかの検索を行ったが、これが通常どのように行われるかについての多くの情報を見つけることができなかった。 私が考えることができる実装を構造化する2つの方法: すべてのインスタンス化されたNPCオブジェクトをリストに保持し、NPCスレッドがそれらを順番にループして、それぞれに処理および必要なアクションを実行する必要があるロジックがあるかどうかを確認します。このデザインのパフォーマンスが十分かどうかはわかりませんか? イベントベースのシステム。AI / Logicを処理するメソッドをNPCクラスで作成し、関連するイベントが通知されたときにこのメソッドが呼び出されるようにします(相互作用しないAI機能のタイマーで(ワンダリングなど)、またはパケットから外部にイベントを通知します)。ハンドラー(近くに移動するプレーヤー、または範囲内で攻撃するプレーヤー)。 これらのアプローチのどちらが正しい方法ですか?これを行う他の方法は何ですか?

1
MMO衝突検出
2Dゲーム用のMMOゲームサーバーを構築していて、現在衝突検出を実装しています。どうすればよいか知りたいのですが。 1000人のプレイヤーがプレイしていて、10,000個のオブジェクトがあるとします。それらすべてを繰り返し処理して、衝突しているかどうかを判断する必要がありますか?これは少し高価なようです。 世界をチャンクに分離し、チャンク内の各プレーヤーのすべてのオブジェクトを反復することができます。 他のアイデアや標準とは何か知りたいのですが。MMOサーバーが衝突検出を処理する最良の方法は何static objectsですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.