我正在C#中开发一个"Zork“风格的文本冒险,它将有相当多的不同领域的描述和环境修饰符。理想情况下,我不想拥有一个数据库,除非它确实是最好的方法。
我需要关于存储/加载这些数据的最佳方法的建议。
它将包括:
发布于 2010-09-17 11:46:39
序列化所有要文件的数据。它将确保最小的足迹时,用户安装游戏,没有任何真正的缺点。当您有大量数据时,数据库是很棒的,但是您正在谈论的是一次文本冒险,您将在其中将整个游戏内容加载到内存中。一个简单的文件可以很好地处理这个问题。
注意,我说的不是xml,而是二进制序列化。任何类型的文本序列化都将允许用户查看您的数据,或者欺骗或者破坏游戏。您也可以轻松地交换序列化的数据文件,无论是文本文件还是二进制文件。记住,你的整个“文字”最多可能只有几百千字节。
发布于 2010-09-17 14:56:12
我会通过放弃C#并用Inform7编写程序来解决您的问题。Inform7是我见过的最棒的编程语言,它是专门为解决问题而设计的。
关于Inform7最棒的一点是,您用类似文本冒险的语言编写文本冒险。例如,下面是一个示例冒险者的源代码的片段:
The iron-barred gate is a door. 
"An iron-barred gate leads [gate direction]." 
It is north of the Drawbridge and south of the Entrance Hall. 
It is closed and openable. 
Before entering the castle, try entering the gate instead. 
Before going inside in the Drawbridge, try going north instead. 
Understand "door" as the gate.这在游戏中增加了一个物体--这个物体是一个门,它被称为“铁栅栏门”。一扇门被理解为介于两个房间之间,在这种情况下,吊桥和入口大厅。如果玩家尝试“进入吊桥”,则游戏逻辑将知道这与“向北”相同,然后门逻辑将确定门是否关闭。诸若此类。这使得写作文本的冒险变得非常容易。
您想要使用C#而不是特定于域的语言(如Inform7 )有什么特殊的原因吗?如果您的目标是学习如何编写C#代码或如何构建解析器等等,那么您可以自己动手。如果你的目标是写一个文字冒险,那么我会使用一种设计语言。
发布于 2011-12-05 04:31:56
已经有很多互动的小说引擎了。我想看看它们的数据格式,这样您就可以重用现有的内容和工具来编辑内容。
目前最流行的引擎是Glulx http://eblong.com/zarf/glulx/和Z-Machine http://en.wikipedia.org/wiki/Z-machine。
以下是Glulx格式的技术参考:http://eblong.com/zarf/glulx/technical.txt
https://stackoverflow.com/questions/3734679
复制相似问题