文本冒险游戏的游戏设计和架构建议

3
我正在尝试创建一个老派的文字冒险游戏。我在创建世界地图和房间方面遇到了一些困难。
房间描述应该是源代码的一部分还是应该分离出来?我考虑将所有这样的描述和房间属性放入MySQL数据库中,然后编写代码来组织每个房间的逻辑;将每个房间的描述与实际源代码放在一起似乎有点凌乱。
这种方法是否是组织冒险游戏中描述的首选方法?我也在考虑这可能更可取,因为我可以查询数据库以查找关于数据的共同属性。
欢迎提出任何意见。
8个回答

6

不要在代码中包含级别/房间描述,这样不够动态。

现在许多开发框架都倾向于将代码与数据分离。因此,在通常情况下,我们将游戏房间数据放在文件中,并读取这些文件来构建关卡,可能还可以让用户自己构建新关卡,最终创建一个新文件来携带房间数据。


4

我在一家制作游戏的公司工作,他们将房间和代码分开存储,使用mysql数据库进行存储。实际上,每个房间中的物品也在一个表格中,还有一个表格记录了当前哪个物品在哪个房间。 此外,如果想要扩展游戏或对其进行统计,使用数据库会更好。


4
我将在这里讨论两个问题。首先,您正确地将定义游戏的数据与将使用它的引擎分开。这样,如果是基于文本的游戏中出现了错别字或其他错误,您就不必重新编译所有内容。
其次,我想质疑使用MySQL的必要性。如果您正在制作一个要安装在用户系统上的dos类型游戏,您不希望安装MySQL成为前提条件。有一个名为SQLite的C语言程序可供免费使用,非常适合您的需求。但如果发布这个基于文本的游戏的媒介是网络,那就可以使用MySQL :)

2
你可以使用类似 ADRIFT 的系统,这样你只需要关注描述和逻辑。

1
我建议使用已经拥有活跃社区的引擎。这样,您的源代码只是游戏的源代码。我会选择TADS 3Inform 7

1
房间描述应该是源代码的一部分还是应该被分离出来?
应该被分离出来。
尝试使用Prolog语言。
  • 它有类似于SQL的数据库(实际上是逻辑谓词)
  • 通过一些技巧,您可能能够检查在某些更改之后您的冒险是否可完成。
  • 如果您不介意它看起来很“像计算机”,那么您可以通过一些逻辑谓词轻松创建这个描述。
您可以通过简单的Google搜索查看Prolog文字冒险的示例

0
我会构建一个解释器来读取房间数据,并基于房间数据允许一组有效的命令(移动、拿取、放下、更改...)。对于移动,您将拥有一个预先构建的图形,其中节点是房间,边缘是允许的移动。

0
我会将描述与代码分开,创建一个拥有描述对象的房间对象,通过某个Facade调用“数据库”,这样你就可以使用文件、数据库或任何你想要的东西。这也最终允许你向房间本身添加一些脚本,比如在描述中拥有具有行为的对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接