-3

私は sql を使用してカード ゲーム エンジンを作成することを計画しています。ゲームは 4 人の人間のプレーヤーで構成され、カードは sql テーブルにあります。現在、ゲームのロジックとポイントに関するすべてのことが行われ、各ゲームは個別の sql テーブルによって管理され、プレーヤーは部屋を作成できる

各部屋にはゲームテーブルがあり、各プレイヤーが列に表されたカードデータと個別のチャットテーブルが含まれます

  1. 同時に 1000 ゲームが実行されていて、カードがプレイされるたびに、プレイヤー デッキからカードを削除するようサーバーに要求が行われる場合、プレイヤー スコアと合計ゲーム スコアを記録します。これを単一の SQL データベースで処理できますか遅延やパフォーマンスの問題はありませんか?

  2. ゲームルームごとにグローバル一時テーブル ##sometable を使用できますか、それともテーブルを手動で作成してゲーム終了後に削除する必要がありますか?

  3. チャット データを単一の SQL テーブルに保存すると問題が発生するかどうかも知りたいのですが、私が考えたことの 1 つは、開いているすべてのルームのチャット データをゲーム ID 列を持つ単一のデータ テーブルに保存することですが、これによりパフォーマンスの問題が発生します。何千行ものチャット データがありましたか?

  4. また、各ゲームのデータベースについてはどうでしょうか。それはやり過ぎでしょうか?
  5. そのようなアプリケーションは通常どのように管理されますか?

  6. 複数のサーバーを使用して、実行中のゲームを配布する必要がありますか?

  7. そのようなものを最適化することについてあなたが持っているアイデア
4

4 に答える 4

3

パフォーマンスの問題に対処するには、VelocityやMemcachedなどのメモリベースのキャッシュシステムを検討する必要があります。

于 2013-01-10T16:50:02.210 に答える
1
  1. はい。このようなタスクをどのようにスケーリングするかについての議論は長いものです。
  2. あなたは出来る。ただし、1 つのテーブルで複数のゲームが発生する、よりスマートなモデルを検討する必要があります。
  3. チャットにはSQL Server Service Brokerを使用します
  4. はい。

問題領域の 1 つの側面を専門とする貢献者がそれに応じて貢献できるように、質問を複数の質問に分割することをお勧めします。

どのように機能するかわかりませんPHP。しかし、多くのゲーム ロジックがクライアント側で発生する方がはるかに効率的であると確信しています。すべてのゲーム アクションに対してサーバー呼び出しを行うことは機能しますが、私の意見では、それは最適ではないということです。

于 2013-01-10T16:06:59.173 に答える
1
  1. はい、ライブ プレイヤーは移動する前に少なくとも 1 秒の遅延があり、ゲームごとに一度に 1 つのプレイだけが移動することを期待しています。したがって、1000 ゲームの場合、1 秒あたり約 1000 のトランザクションがピークになります。最新のアーキテクチャでは過度の負荷ではありません。
  2. ほとんどの DBMS では、テーブルを作成および破棄するためのオーバーヘッドが大きくなります。すべてを同じテーブルに保管してください。
  3. チャットは単一のテーブルで問題ありません。以前の非アクティブなゲームからのチャットをアーカイブし、プライマリ ライブ データベースから削除することで、パフォーマンスを維持できます。
  4. はい、非常に非効率的です。ゲインなしで複雑さが追加されました。
  5. あなたが何を求めているのかわからない。
  6. スケーリングするだけです。より多くの容量が必要になるまで、単一の db サーバーから始めると思います。
  7. 経験のある人からの最初からの良い設計 db 設計は、長い道のりを歩むでしょう。開始時にマイクロ最適化に多くの時間を無駄にしないでください。スケーリングに合わせて必要に応じて最適化します。
于 2013-01-16T04:28:24.113 に答える
0

簡単に言うと、SQL Server などのリレーショナル DB はゲームにはあまり役に立たないということです。

私はまだ SQL を避けることを提唱しますが、今ではさらに多くのオプションがあり、実際のパフォーマンスを得るには、 Redisや MemcacheNoSQLなどの高速一時ストレージの使用を検討する必要があります。

Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris の比較をすぐに見ることができます

最適化は、全体的なプロジェクト固有のトピックとはまったく別のトピックです。

于 2013-01-13T22:37:02.737 に答える