1

現在、教育目的のゲームを開発しています。

ゲームは、各プレイヤーが数字を持つ小さなチャットです。この図には、MySQL データベースに書き込まれた位置があり、プレーヤーが自分の図を移動するたびに更新されます。

現在、60 フレームごとに、ゲームはすべてのプレイヤーの位置を更新し、ゲームクライアントでそれらを変更します。データベースのパフォーマンスだけが問題ではありません。これにより、ゲームのフレームレートが約 30 ~ 50 fps に低下するからです。

明らかに、これにより、プレイヤーごとに 1 秒 (ゲームは 60 fps で実行) に位置更新のクエリが 1 つ生成されます。ユーザーとして私と数人の友人よりも少し大きいと考えると、これが問題になる可能性があると想像できます。

標準のレンタル Web サーバーでこれを処理できますか? どうすれば改善できますか?(1 秒に 1 回未満の位置の更新はできません)

私はあなたがいくつかのアイデアを持っていることを願っています:-)

4

2 に答える 2

1

この種のデータは、変更のたびにデータベースに実際に保存されるわけではなく、アクセスがはるかに高速になるように、ある種のメモリ内コンテキストに保持されます。データベースに保存するのは、1 分に 1 回程度など、あまり頻繁に変更されないものです。

あなたができることは、定期的なスケジュールで現在のメモリ内コンテキストをデータベースにスナップショットすることです。つまり、エンジンがクラッシュした場合にその時点から復元できるように、1 分ごとにゲームの状態を「維持」します。適切なアーキテクチャを作成すれば、これはメソッドを定期的に呼び出すのと同じくらい難しくありません。

アクションが発生してからそのアクションの記録が永続化されるまでのこのタイムラグを人々が悪用するのを避けるために、特定のものはすぐに永続化される場合があります。たとえば、ゲーム内通貨を使用したトランザクションはすぐに記録され、メモリ内キャッシュはこれらに対して信頼されません。

プレイヤー数が 100 人未満の場合は、市販の VPS を使用しても問題ありません。より多くのプレイヤーをホストするには、効率的になるように細心の注意を払う必要があります。

于 2012-12-02T12:14:44.563 に答える
0

インメモリ Java データベースを使用すると、プレーヤーをより頻繁に更新できます。その後、変更は頻度の低い頻度で MySQL データベースに保存されます。

于 2012-12-02T18:14:18.360 に答える