これはデータベースの仕事のようです
確かに、「データベース」は「リレーショナル データベース」を意味する必要はありません。ほとんどの既存の MUD はすべてのデータをメモリに保存し、プレーンテキスト データ形式で保存されたフラット ファイルから読み込みます。私は必ずしもこのルートを推奨しているわけではなく、従来のデータベースは決して必要ないことを指摘しているだけです。リレーショナル ルートに進みたい場合は、最近のバージョンの Python にsqliteが付属しています。これは、優れた SQL サポートを備えた軽量の組み込みリレーショナル データベースです。
コードでリレーショナル データベースを使用すると、厄介な場合があります。ゲーム ロジック クラスへの変更には、データベースへの並行変更と、データベースの読み取りと書き込みを行うコードへの変更が必要になる場合があります。このため、適切な計画は大いに役立ちますが、経験がなければ適切なデータベース スキーマを計画することは困難です。少なくとも、最初にエンティティ クラスを計画してから、それを中心にデータベース スキーマを構築します。データベースの正規化について読んで、そこでの原則を理解すると役立ちます。
この多くを簡素化できる「オブジェクトリレーショナルマッパー」を使用することをお勧めします。Python の例には、SQLObject、SQLAlchemy、およびAutumnが含まれます。これらは多くの複雑さを隠しますが、結果として重要な詳細の一部も隠すことができます. データベースに慣れるまでデータベースを直接使用することをお勧めします。将来的には ORM の使用を検討してください。
各エンティティのデータベースに Dictionary オブジェクトを格納することを考えていました。このようにして、データベースの列を変更することなく、その場でデータベースに新しい属性を簡単に追加することができました。それは合理的に聞こえますか?
残念ながらそうではありません。そうすると、データベースの機能の 99% が浪費され、美化されたデータ ストアとして効果的に使用されます。ただし、前述のデータベース機能が必要ない場合、ジョブに適切なツールを使用する場合、これは有効なルートです。標準のシェルブモジュールは、この目的のために検討する価値があります。
すべての情報を同じデータベースに保存する必要がありますが、異なるデータベースの異なるテーブルまたは異なるエンティティ (敵と部屋) に格納する必要があります。
1 つのデータベース。エンティティ タイプごとにデータベース内の 1 つのテーブル。これは、リレーショナル データベース (MySQL、SQL Server、SQLite など) を使用する場合の典型的なアプローチです。
これがワームの缶詰になることはわかっていますが、優れたデータベースの提案は何ですか? MySQL は良い選択ですか?
SQL に慣れるまでは、sqlite を使い続けることをお勧めします。それ以外の場合、MySQL は PostGreSQL と同様に、無料のゲーム データベースとして妥当な選択です。