データベースを必要とするリアルタイムのマルチプレイヤーゲームに取り組んでいます(プレイヤープロファイル、フレンド、ロック解除、ニュースなどの機能用)。これは標準のPCゲーム(ブラウザベースではない)であり、クライアントサーバーを使用します。建築。私はデータベースを使用するのが初めてであり、過去数日間、白熱した議論につまずいたとき、RDBMS対NoSQLのいくつかの研究を行ってきました。現在、私はNoSQLに傾いていますが、それぞれの使用法(RDBMSとNoSQL)を読んだ後、両方を使用したいと思っています。それは奇妙に思えるかもしれませんが、私の状況を説明させてください。
私のチームは、無制限のmySQLストレージと帯域幅を提供する共有Webホスティングパッケージを持っていますが、唯一の注意点は、一度に25の接続しか開けないことです(共有ホスティングルール)。ニュースの更新を投稿したり、コミュニティ機能(コメント、ファンアートのアップロードなど)をサポートしたりするために、これを自分のWebサイト(間違いなく通常の使用方法)で使用するつもりです。それはすべて大丈夫です-しかし!これは物事が面白くなるところです...私はゲーム内で私のウェブサイトに投稿されたこの同じ情報を表示したいです。これは、Webサイトとゲームの両方でmySQLを使用することを意味します。ニュースの投稿などに加えて、ゲーム内でチャットやサーバーリストなどに使用する予定です。私はその25接続ルールについてほとんど心配しています。
質問#1を尋ねるに至ります:これは機能しますか?
これに加えて、NoSQLのパフォーマンスとリアルタイムゲームに適していることについて読みました(間違っている可能性があります。私はここに到達するために巨大なRDBMSとNoSQLのフレーム戦争を経験し、おそらく火傷します)。基本的に、すべてのゲームオブジェクトデータにMongoDBを使用します。
繰り返しになりますが、何らかのコンテキストを提供すると役立ちます。240MBのMongoDBパッケージを無料で提供するホスト(MongoLab)を見つけました。アップグレードが必要になるまで使用します。240MBを考えると、約60,000人のプレーヤーを保存できると計算しました(各プレーヤーが約4KBで、保存される可能性のある他のものを無視する場合)。記憶域、および将来的にもっとお金を払わなければならない場合(ゲームが成功する場合)は問題ではありません。私が現在すべてのゲームオブジェクトデータにMongoDBを使用する唯一の理由は、このゲームオブジェクトデータにアクセスする頻度(プレーヤーが殺されたとき、アイテムを拾ったとき、銃を撃ったときなど)のためです。また、単純なスキーマフリードキュメント(ゲームオブジェクトデータのマッピングを容易にする)も好きです。かつて、
私は自分のWebサイトで同じMongoDBを使用して、プレーヤーのプロファイル情報を表示するつもりです(完全な一貫性は気にしません。ゲーム内の更新からの遅延は問題ありません)。2番目の質問、質問2に進みます。これは良いアイデアですか、それとももっと良い方法がありますか?
このゲームは、次のような起動エクスペリエンスを備えています。
- クライアントのログイン(MongoDB)
- クライアントは、チャットルーム(MySQL)のあるゲーム内のホームページにあります。
- クライアントはサーバーリストに移動します(MySQL)
クライアントはサーバーに接続して再生します
サーバーはすべてのプレーヤーの更新を通信します(MongoDB)
これは私がそれが機能すると想像した方法です。これはあなたによく見えますか、またはこの計画をどのように改善できるかについての提案がありますか?