ゲームエンジンの開発
コンピュータゲームとそのエンジンを計画しています。一人称視点の3次元の世界があり、現時点ではシングルプレーヤーになります。プログラミング言語はC ++で、OpenGLを使用しています。
データ中心の設計決定
私の設計上の決定は、グローバルイベントマネージャーとグローバルデータマネージャーがあるデータ中心型アーキテクチャを使用することです。物理、入力、サウンド、レンダラー、aiなどの多くのコンポーネントがあります。各コンポーネントは、イベントをトリガーしてリッスンできます。さらに、各コンポーネントはデータの読み取り、編集、作成、削除を行うことができます。
問題はデータマネージャーについてです。
リレーショナルデータベースを使用するかどうか
SQLiteやMySQLなどのSQLデータベースを使用してゲームデータを保存する必要がありますか?これには、アイテム、キャラクター、インベントリなどの実質的にすべてのゲームコンテンツが含まれます。さらにパフォーマンスに関連するメッシュとテクスチャを除いて、メモリに保持します。
SQLデータベースは、動くキャラクターの位置などのゲーム情報をリアルタイムで読み書きするのに十分な速度ですか?また、プラットフォーム間の互換性にも注意する必要があります。すべてをメモリに保持する以外に、どのような代替手段がありますか?
利点は
MySQLのようなリレーショナルデータベースを使用する利点は、高速な計算を可能にするデータ指向の構造です。エンティティを表すためのオブジェクトは必要ありません。レンダリングに必要なプレーヤーの近くのオブジェクトのデータを簡単にクエリできました。そして、遠くにあるオブジェクトのデータを気にする必要はありません。さらに、ホールゲームの状態はデータベースに保存されるため、savegamesは必要ありません。最後に重要なことですが、ホールゲームの状態が格納されている場所が既にあるため、ゲームをオンラインゲームに拡張することは比較的簡単です。