我和一个朋友目前正在制作一个Discord机器人(Node.js和Discord.js(,旨在允许玩家玩一个由另一个人("Dungon Master"(创建的半持久世界的文本RPG。"DM"使用Web界面中的一些工具创建故事,而玩家稍后将使用机器人随时以他的速度浏览这个世界。
我们目前的想法是创建一个世界的JSON"游戏文件",并让玩家将其交给Discord机器人,然后允许玩家与游戏文件进行交互。
我们的问题:经过一些测试,我们了解到JSON会限制很多事情,或者非常冗长和复杂。不仅适用于文件,还适用于要创建的 DM。 例如:如果玩家移动梳妆台以找到隐藏的通道,则下一个前往那里的玩家应该发现梳妆台已经移动。我们现在需要在 JSON 文件中使用此房间的 2 个状态。如果玩家随身携带一本书,我们需要 4 个状态。另一个项目,我们需要 8。这显然很快就会失控,这是假设每个项目只有 2 个状态。
我的问题:是否有替代数据结构或方法来保存"游戏文件",从而在这方面提供更大的灵活性?或者这只是概念的固有问题?
您可能想尝试墨迹,一种叙述性脚本语言。几年前我偶然发现了它,看起来它正是为了描述叙事内容以及状态和所有这些东西而设计的;但我个人从未使用过它,所以我不知道它的感觉/行为如何。
它基本上允许您写下对话和描述,但也允许合并变量,选择和逻辑流。
您可以将丢失的书籍、移动的梳妆台等作为条件文本合并到房间的描述中,只有在满足该条件时才呈现,并使用对话框功能进行导航和交互。
官方网站给出了很好的概述,包括一些示例:https://www.inklestudios.com/ink/
还有一个节点.js ink 的实现:https://github.com/y-lohse/inkjs