似乎这更像是数据库的工作
没错,虽然“数据库”不一定是“关系数据库”。大多数现有的 MUD 将所有数据存储在内存中,并从以纯文本数据格式保存的平面文件中读取。我不一定推荐这条路线,只是指出传统数据库绝不是必要的。如果你确实想走关系路线,最近版本的 Python 附带了sqlite,它是一个轻量级的嵌入式关系数据库,具有良好的 SQL 支持。
在代码中使用关系数据库可能会很尴尬。对游戏逻辑类的任何更改都可能需要对数据库进行并行更改,并对读取和写入数据库的代码进行更改。出于这个原因,良好的规划将对您有很大帮助,但如果没有经验,很难规划一个好的数据库模式。至少先计划好你的实体类,然后围绕它构建一个数据库模式。阅读规范化数据库并理解其中的原则会有所帮助。
您可能想要使用“对象关系映射器”,它可以为您简化很多工作。Python 中的示例包括SQLObject、SQLAlchemy和Autumn。这些为您隐藏了很多复杂性,但结果也可以隐藏一些重要的细节。我建议您直接使用数据库,直到您更熟悉它,并考虑在将来使用 ORM。
我正在考虑为每个实体在数据库中存储一个 Dictionary 对象。以 htis 的方式,我可以简单地即时向数据库添加新属性,而无需更改数据库的列。这听起来合理吗?
不幸的是,如果你这样做,你会浪费 99% 的数据库功能,并有效地将其用作美化的数据存储。但是,如果您不需要上述数据库功能,那么如果您使用正确的工具来完成这项工作,这是一条有效的途径。为此目的,标准搁置模块非常值得一看。
我应该将所有信息存储在同一个数据库中,但存储在不同数据库中的不同表或不同实体(敌人和房间)中。
一个数据库。每个实体类型在数据库中有一个表。这是使用关系数据库(例如 MySQL、SQL Server、SQLite 等)时的典型方法。
我知道这将是一罐蠕虫,但是对于一个好的数据库有什么建议?MySQL是一个不错的选择吗?
在您更熟悉 SQL 之前,我建议您坚持使用 sqlite。否则,MySQL 是免费游戏数据库的合理选择,PostGreSQL 也是如此。