存储文本冒险区域数据的最佳方法是什么?

Lig*_*ggi 5 .net c#

我正在用C#开发一个"Zork"风格的文本冒险,它将有相当多的不同领域,包括描述和环境修饰符.理想情况下,我不想拥有一个数据库,除非它确实是最好的方法.

我需要有关存储/加载此数据的最佳方法的建议.

它将包括:

  • 区域描述
  • 环境改良剂(窗户打开/折断,门关闭)
  • 默认情况下存在的项目

Eri*_*ert 13

我会通过放弃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.
Run Code Online (Sandbox Code Playgroud)

这为游戏添加了一个对象 - 对象是一扇门,它被称为"铁栅门".门被理解为在两个房间之间,在这种情况下,是吊桥和入口大厅.如果玩家试图"进入吊桥",则游戏逻辑将知道这与"向北"相同,然后门逻辑将确定门是否关闭.等等.它使写文本冒险非常容易.

您是否有一些特殊原因要使用C#而不是像Inform7这样的特定于域的语言?如果你的目标是学习如何编写C#代码或如何构建解析器或其他什么,那么一定要自己动手.如果您的目标是编写文本冒险,那么我将使用专为此设计的语言.

  • @ ryansworld10:你在谈论你所知道的事情,还是只是发表一个不知情的意见?如果您不知情,那么您真的应该看看Inform7中可实现的大量行为.它当然不是限制性的,*廉价是一件好事*.如果您的目标是学习*如何使用C#*编写冒险游戏,那么一定要用C#构建自己的系统.如果你的目标是*写一个冒险游戏*然后使用最好的工具写一个冒险游戏.如果你喜欢航海,那么**不要建造船只**.帆船! (7认同)
  • @ ryansworld10:嗯,那很好,但是让我们采取一个魔鬼的倡导者的立场:当你可以使用[插入更低级别的编程语言]时,为什么要使用[插入你使用的任何编程语言]?**每一种**高级语言都是由那些在简单易学和努力学习方面做出权衡的人设计的. (4认同)

Kir*_*rst 7

将所有数据序列化为文件.当用户安装游戏时,它将确保最小的占地面积,没有任何真正的缺点.当您拥有大量数据时,数据库非常棒,但您正在谈论文本冒险,您可以在其中将整个游戏内容加载到内存中.一个简单的文件可以非常好地工作.

注意,我不是在讨论xml而是二进制序列化.任何类型的文本序列化都将允许用户查看您的数据,并欺骗或破解游戏.您可以轻松地交换/输出序列化数据文件,无论是文本还是二进制文件.请记住,您的整个"文本"最多可能只有几百KB.