好像这更是一个工作 的一个数据库
如此,尽管“数据库”并不一定意味着“关系型数据库”。大多数现有的MUD都将所有数据存储在内存中,并从纯文本数据格式的平面文件中读取。我不一定会推荐这条路线,只是指出传统数据库绝不是必要的。如果你想要走关系路线,Python的最新版本会附带sqlite,这是一个轻量级的嵌入式关系数据库,具有良好的SQL支持。
使用关系数据库与您的代码可能会很尴尬。对游戏逻辑类的任何更改都可能需要对数据库进行并行更改,并更改为读取和写入数据库的代码。出于这个原因,良好的规划将会帮助你很多,但是如果没有经验,很难规划好数据库模式。至少首先计划你的实体类,然后围绕它建立一个数据库模式。阅读normalizing a database并理解其中的原则将有所帮助。
你可能想要使用一个'对象关系映射器',它可以为你简化很多这个。 Python中的示例包括SQLObject,SQLAlchemy和Autumn。这些隐藏了很多复杂的因素,但结果可能会隐藏一些重要的细节。我建议直接使用数据库,直到您更熟悉它为止,并且考虑将来使用ORM。
我正在考虑在数据库中为每个 实体存储一个字典 对象。通过这种方式,我可以在 的数据库中简单地将新属性添加到数据库中,而不必更改数据库的列。那 听起来合理吗?
不幸的是没有 - 如果你这样做,你浪费了数据库的99%的能力,并有效地使用它作为荣耀的数据存储。但是,如果您不需要上述的数据库功能,如果您使用正确的工具进行工作,则这是一条有效的路线。标准的shelve模块非常值得为此寻找。
我应该存储在 相同的数据库,但在不同 表或在不同的数据库中的不同实体(敌人 和房间)的所有信息。
一个数据库。每个实体类型的数据库中有一个表。这是使用关系数据库(如MySQL,SQL Server,SQLite等)时的典型方法。
我知道这将是蠕虫, 一罐但什么是一个好的 数据库一些建议吗? MySQL是不错的选择?
我会建议坚持使用sqlite,直到你更熟悉SQL为止。否则,MySQL是PostGreSQL的免费游戏数据库的合理选择。
Google搜索“泥浆数据库模式”的顶级结果是专家交流。这里希望在几天后它将成为StackOverflow! – DVK 2009-10-09 19:23:25
另外,我想亲自欢迎您来到MUD开发的绝妙地狱。比我玩沉默的东西更多的乐趣,从我记得的我的不良MUD过去(我编写了一个C MUD,我的朋友跑过) – DVK 2009-10-09 19:25:51
我喜欢一些MUD,但我认为开发一个会很有趣。 – samoz 2009-10-09 21:27:19