首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在文本冒险中存储区域数据的最佳方法是什么?

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

Stack Overflow用户
提问于 2010-09-17 10:51:02
回答 8查看 2.1K关注 0票数 5

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

我需要关于存储/加载这些数据的最佳方法的建议。

它将包括:

  • 区域描述
  • 环境改性剂(窗户开/坏,门关着)
  • 默认情况下呈现的项
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-09-17 11:46:39

序列化所有要文件的数据。它将确保最小的足迹时,用户安装游戏,没有任何真正的缺点。当您有大量数据时,数据库是很棒的,但是您正在谈论的是一次文本冒险,您将在其中将整个游戏内容加载到内存中。一个简单的文件可以很好地处理这个问题。

注意,我说的不是xml,而是二进制序列化。任何类型的文本序列化都将允许用户查看您的数据,或者欺骗或者破坏游戏。您也可以轻松地交换序列化的数据文件,无论是文本文件还是二进制文件。记住,你的整个“文字”最多可能只有几百千字节。

票数 7
EN

Stack Overflow用户

发布于 2010-09-17 14:56:12

我会通过放弃C#并用Inform7编写程序来解决您的问题。Inform7是我见过的最棒的编程语言,它是专门为解决问题而设计的。

关于Inform7最棒的一点是,您用类似文本冒险的语言编写文本冒险。例如,下面是一个示例冒险者的源代码的片段:

代码语言:javascript
运行
复制
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#代码或如何构建解析器等等,那么您可以自己动手。如果你的目标是写一个文字冒险,那么我会使用一种设计语言。

票数 13
EN

Stack Overflow用户

发布于 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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3734679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档