【发布时间】:2016-06-21 11:49:17
【问题描述】:
所以,我正在为自己制作一个小型 C# 库,用于在 cRPG 游戏中使用对话。
这个想法是,Dialogue 对象及其字段(如 DialogueNode 和 DialogueOption 对象)是基于 XML 文件创建的,我的目标是使其尽可能简单。除了库中包含的类型的列表或对象之外,这些字段最多是字符串标识符,需要时通过外部方式获取和解析。
我已经实现了基本的功能 - XML 序列化,通过对话运行并退出它 - 以及基本的、基于控制台的应用程序解释器和一个 WPF 编辑器来创建对话,因为用普通 XML 编写对话并不是最常见的世界上最舒服的事。 (最后两个是为了尽可能独立于库,除了可能实现内部显示/创建的内容)
话虽如此,我遇到了一个问题(实际上是两个,另一个我会在考试后有时间时在不同的问题中讨论)。
在给出了一些我没有经验的“noobish”想法之后,我开始想,我希望将一些基本谓词存储在我的节点或选项中 - 稍后将在游戏中检查它们以确定,是显示节点/选项还是保留它(或者说实话对那些进行干预)。例如 - 如果玩家角色的物品栏中有物品 X,则显示一个选项,或者当玩家具有某个属性的最小值时显示节点。
到目前为止,我的实现想法是这样的:
- 在对象中有一个字段 PredicateScript
- 有一个 bool 方法,它将由解释器在运行时执行,如下所示:
我非常简短地阅读了一些关于即时编译的主题,但我不确定它是否正是我想要的 - 我不确定它会如何影响应用程序的性能(无论是解释器还是游戏本身),如果每隔几秒钟重新编译一次......
我没有粘贴任何我正在尝试做的代码,因为我还没有这样做(因为我没有编写代码,我不确定它是否会工作)或者它是库除了我解释的我打算做的事情之外,我认为它不相关的结构。 ^^
谢谢。 ^^
【问题讨论】:
-
This 可能会帮助你
-
看看Roslyn。话虽如此,我会谨慎走这条路,我会敦促重新评估你的设计。我确信有一种更简单的方法可以实现您想要做的事情。
-
@TheBeardedLlama 我的想法是,对话的设计者将代码的谓词位放入 WPF 的编辑器文本框中,将其包含在某个对象的字段中。任何其他想法,我如何在我的对话中实现这些条件?
-
@Schwalbe 这是一个很好的问题,但是,我并不是要贬低,stackoverflow 是一个问答网站,而不是论坛;您遇到的问题可能是为什么很多游戏在其主引擎中使用像 Lua 这样的脚本引擎,因此它们可以按照您需要的方式运行代码(注意,我不是游戏开发人员,所以这都是道听途说)