22.01.2015

如何创建文本游戏?

来自纽约的程序员、游戏设计师和游戏制作人本·塞尔维斯(Ben Serviss)在他的博客中描述了创建文本游戏的步骤。我们在他的允许下将文字翻译成中文,与大家分享。

如何创建

创作文本是一项挑战。为交互式游戏创作有多个选项的文本则更加困难。

你会准确地构造句子吗?太好了。现在写七个。每个句子都应该写得很好,适合三个不同的角色,并融入四个不同的上下文。为非线性文本游戏构思情节和对话意味着要锻炼坚持、灵活和勤奋的能力。

假设你有一款文本游戏的描述。你知道它讲述的是什么,主要角色是谁,每一章发生了哪些主要事件以及玩家具有什么能力。游戏的所有组成部分都在你的手中。现在是时候开始写作了——但你却陷入了困境。如何编写一个可能发生任何事情的故事?到底从哪里开始?

我最近发布了我的第一款完整文本游戏,名为The Last Monster Master(大约有250,000个单词!)。在这个过程中,我形成了一些基本的结构,它们帮助我逐章写作。我使用了一个出色的(并且免费的)Chat Mapper来创建每一章的非线性内容。然后,我把最终文本转换为ChoiceScript,Choice of Games专用的编程语言,这种语言非常适合创建文本游戏。

最后的怪兽大师

来自《最后的怪兽大师》的游戏截图

我简化了这个过程,将每一章的工作分为六个阶段。在Chat Mapper中有一个非常方便的功能——它允许为每个文本块分配不同的颜色。我利用这个功能来跟踪文本工作的关键点,每完成一个阶段就改变一次颜色(可以在下面的截图中看到)。

阶段1. 文本模板(未标记颜色)

在第一阶段,需要创建章节的总体结构。不要写真正的对话或描述——相反,使用文本模板来指明谁会说什么、何时说以及玩家会有哪些选择。

如果出现依赖于玩家状态或其他条件的情节分支,请在问题中指明该状态或条件,并用最简单的表达描述回答选项。不要担心内在逻辑。这会在后面解决。

在这个阶段,避免过多的修改(如果能做到的话,甚至可以完全不修改)。主要目标是将章节结构描述得可读。完成后,你应该得到一个初步的地图,指明后续要处理的内容。

在下面的《最后的怪兽大师》示例中,玩家的一个怪兽在攻击时被困在树上。玩家可以使用心灵感应或阅读肢体语言的技能来帮助怪兽抵御攻击,或直接奔上前去帮助。

文本模板

阶段2. 文本模板修订(颜色——黄色)

在这个阶段,专注于检查你所创建的内容。到目前为止,你只需关注对话的安排——不要担心文本的语法或美观,因为你所写的内容还会多次被改写。

主要任务是寻找没有意义或与情节相悖的选择、争议性转折点和与主线无关的死胡同。

接着,确保在生成的结构中包含了你计划在此章节中使用的所有玩家状态和能力选项。如果你没有使用你准备的所有内容,或者修改了原计划并添加了额外选项,或者记得在未来章节中使用这些可能性。

阶段3. 初步文本(颜色——橙色)

现在,当游戏结构得到改善和重新组织时,终于可以开始处理玩家将看到的文本了。这个阶段并不特别复杂,但在这里同样重要的是不要失去最终目标。

不要担心与文本直接无关的事情。在这个阶段,你不需要关心选择、阶段结构等等。恰恰是这一部分最有趣——也是耗时最多的。

初步文本

阶段4. 文本检查(颜色——紫色)

完成整章写作后,你活了下来?太好了!接下来一切将更加迅速。我们进入毫不留情的编辑模式。

阅读你写的文本。毫不留情。检查所有与文本相关的内容——语法、标点、用词和人物或地点的描述等等。再说一次:专注于文本。让它发声。

阶段5. 选择(颜色——蓝色)

结构梳理妥当,文本看起来也不错。现在再仔细检查整个章节。寻找所有可能变动的地方,特别是玩家状态变化或情节转折依赖于玩家的地方。可能在这个阶段需要为与独特物品或仅出现一次的人物交互增加选项。

评估情节转折的相关性及其对游戏平衡的影响。

如果你建立一个单独的文档来记录玩家状态在章节或重要情节转折中的参与程度,将会大有帮助。

例如,如果玩家的力量在第四章必须达到45点才能踢开木门,那么在第六章,玩家需要65点才能踢开金属门(即,物品的状态应随着玩家状态的提升而增长)。

变量检查

阶段6. 导出与游戏逻辑(颜色——绿色)

是时候将几乎完成的章节放入你直接用于开发游戏的程序中了。幸运的是,Chat Mapper可以将文件导出为XML、JSON、Excel和Rich Text格式——这为你提供了选择。就《最后的怪兽大师》而言,我只是将每个关键元素复制到ChoiceScript文件中,并根据需要进行修改。

如果你需要添加游戏逻辑,那么在将文本插入游戏后就需要立即开始。幸运的是,由于你已经决定了何时、何地以及发生了什么,每个单独的脚本的创建是与主要内容分开的,这简化了解决问题的过程。

其他方法

呈现的方式并不是创建非线性文本游戏的唯一适用方法,但对于我的项目而言,它有效。根据你遵循的开发风格和所使用的软件,可以尝试在更早的阶段将文本导出到游戏中,以便尽早开始游玩。补充一下,Chat Mapper的脚本可以用Lua编写——这意味着可以在程序中直接设置游戏逻辑。

无论你选择什么,执行一项任务,给自己每个完成的阶段以赞美,并在过程中尽量记录可以改进的地方。处理非线性情节并不简单——为什么不把这一点变成一个游戏呢?

相关主题的其他资料:

评论
写评论...
Related news