游戏邦在:
杂志专栏:
gamerboom.com订阅到鲜果订阅到抓虾google reader订阅到有道订阅到QQ邮箱订阅到帮看

从六个步骤设定谈游戏互动文本的编撰问题

发布时间:2015-02-25 14:55:54 Tags:,,,,

作者:Ben Serviss

写作是件很困难的事。而编写带有多种选择的互动游戏更加困难。

last_monster_master(from gamasutra)

last_monster_master(from gamasutra)

如果你擅于辞令的话自然是极好的。如此你便能够轻松地创造出由3个不同的角色在4种不同的情境下所说出的不同话。通常情况下,编写非线性文本游戏对话和叙述内容是在约束,创造性再利用以及确信等条件下的有效实践。

假设你为一款基于文本的游戏列出了提纲。你知道游戏主题,主角,每个章节所发生的的主要事件,玩家的能力等等。那么现在你便可以开始进行编写—-但是你却难以迈出这一步。你该如何编写一个任何事情都有可能发生的故事?你该如何设定玩家的选择?你该从哪里下手?

最近我面向Choice of Games发行了我的首款未删节文本游戏《The Last Monster Master》(共有25万个单词!),并且在这个过程中我想到了一个能够帮助人们一章一章编写游戏的基本框架。在将最后文本带到ChoiceScript(游戏邦注:Choice of Games自己的脚本语言)前,我使用了Chat Mapper(免费)去编写每个非线性章节。

我将这个过程分解为了6个部分去完成每个章节,这能帮助我保持注意力。此外,Chat Mapper还拥有一个能让你改变每个文本节点颜色的功能。这能够让你追踪每个文本,并且我还使用这一功能去改变每个节点颜色以标记完成的内容。

第一道—-存根文本(没有颜色)

第一道是关于为章节制定结构。比起编写实际的对话或描写,我们可以使用占位符作为存根对话去预示谁将说话,何时会说话以及玩家的选择会是什么。

如果基于统计值以及其它条件会出现不同分支,那就指出有问题的统计值并清楚地描述选择内容。这时候你还不用担心去编写任何游戏逻辑,这是之后要做的事。

避免在这一道中进行过多的修改—-主要目的是为了将高级的章节结构分解成可读格式。当你完成这一任务时,你便能够初步明确接下来所有内容的路标。

在以下来自《The Last Monster Master》的序列中,玩家的一个怪物在进攻的时候陷进一棵树中。玩家必须选择使用心灵感应或字体语言检测技能去帮助怪物抵御进攻或逃出去。

stub_text(from gamasutra)

stub_text(from gamasutra)

第二道—-修改存根文本(黄色)

在下一道中你应该只专注于你刚刚创造的结构。你正在着眼于内容的设置—-不要担心拼写错误或任何与文本相关的内容,因为在修改过程中你所编写的所有内容都会被替换掉。

你主要是在寻找无意义或者与故事或边界情况不符,并且有可能在之后引出问题的选择或选择分支。

其次,你正在确保到目前为止所设置的结构是使用你计划在这一章节中使用的所有玩家统计或能力选择。如果最终证明你并未执行你想执行的内容,那么你便需要做出一个明智的决定去修改最初的计划,创造使用这些统计的全新序列或选择,或者通过标注在未来章节使用那些被遗漏的统计。

第三道—-第一道文本(橙色)

基于有组织且经过完善的结构,现在是时候编写玩家能够看到的真正文本了。这是非常直接的一道,但与之前一样,你应该保持注意力。

不要担心为变量,结构转换或任何单纯编写内容设定数值。与大多数单纯编写内容一样,这是最有趣也是最消耗时间的一部分。

first_text_pass(from gamasutra)

first_text_pass(from gamasutra)

第四道—-修改文本(紫色)

你是否曾经编写过真正的章节?现在事情的发展变得更加迅速了。你将进入编辑模式。

在阅读第一道文本时你会发现自己在编写时并不带任何感情色彩。所有与文本相关的内容都是关于游戏—-拼写,语法,对于角色或地点的错误引用,更严格的词汇选择等等。再一次地,你应该专注于编写。创造出生动的文本内容。

第五道—-变量(蓝色)

结构已经明确文本也很紧凑。现在我们将再次检查章节并寻找任何可能出现变量的情况,特别为了决定结果而修改或引用玩家统计的地方。有可能对于特定玩家道具或一次性遭遇你将只能找到少量的例子。

你将在之后的修改,游戏玩法平衡以及测试中完善这里所使用的数值。而现在,你将在你认为数值需要出现的地方画一条线。

为每个章节所需要的特定统计创造一份外部引用文件。例如,如果玩家的力量统计至少达到45他们才能在章节4踢倒一扇木门,那么在章节6要求玩家拥有65个力量才能踢倒一扇金属门便是符合逻辑的。

在特定的道中执行这一做法将能够确保统计的内部一致性,这也将进一步调整之后的数值。

variable_pass(from gamasutra)

variable_pass(from gamasutra)

第六道—-输出和逻辑(绿色)

最后,你需要将已经完成的章节带到你创造游戏所使用的开发工具中。幸运的是,Chat Mapper能够输出XML,JSON,Excel,和Rich Text等格式,如此便为你提供了更多选择。对于《The Last Monster Master》,我只审查了每个文本节点并将其复制到我的ChoiceScript文件中,并为格式化以及部分转换进行调整。

如果你也是自己编写幕后的真正逻辑,你便需要在将文本带到游戏时开始编写脚本内容。幸运的是,因为你已经解决了何时以及在哪里发生的问题,所以每个脚本任务将从内容中轻松地脱离出来。

其它方法

这并不是编写非线性文本游戏的唯一方法,但却非常适合这一项目。根据你的开发类型以及所使用的工具,你可以选择将存根文本较早输入游戏中,如此你便可以尽快执行了。此外,因为Chat Mapper支持Lua,那么只要你不介意再次在开发环境中编写所有内容的脚本,你便可以直接在程序中设置所有需要的逻辑。

不管你选择怎样的过程,你都应该一次只专注于一项任务,庆祝每一次的成功并记下你需要完善的内容。争辩非线性叙述并非一个琐碎的任务—-所以你何不从中创造一款真正的游戏?

本文为游戏邦/gamerboom.com编译,拒绝任何不保留版权的转发,如需转载请联系:游戏邦

Writing Interactive Fiction in Six Steps

by Ben Serviss

Writing is hard. Writing interactive, multiple-choice games is harder.

Good at turning a phrase? Excellent – now turn seven of them, all equally-well written, that make sense in four different contexts, as said by three different characters. If nothing else, writing non-linear text game dialog and narrative is an exercise in constraints, creative reuse, and conviction.

Say you’ve got an outline for a text-based game. You know what the game’s about, who the main characters are, the major events of each chapter, what the player’s abilities are; all of the major pieces. Now it’s time to start writing – but you’re stumped. How can you write a story where anything can happen? How do you set up the player’s options? Where do you even start?

I recently released my first full-length text game for Choice of Games, titled The Last Monster Master (clocking in at 250,000(!) words), and through the process I came up with a basic framework to help write it chapter by chapter. I used the excellent (and free) Chat Mapper to write each non-linear chapter before bringing the final text into ChoiceScript, Choice of Games’ own writer-friendly scripting language.

I broke the process down by taking six passes through each chapter, which helped significantly in retaining focus. What’s more, Chat Mapper has a great feature that lets you change the color of each individual text node. To help track each text pass as I worked the chapters, I used this feature to change the color of each node to mark it as finished for that pass (as in the screenshots below).

Pass 1 – Stub Text (No Color)

The first pass is all about laying down the structure for how the chapter will play out. Instead of writing any actual dialog or descriptions, use stub dialog as placeholders to indicate who will say what and when they’ll say it, and what the player’s options will be.

If there are different branches depending on stat values or other conditions, indicate the stat in question and describe the options in plain English. Don’t worry about writing any game logic yet; that’ll come later.

Avoid excessive revisions (or any, if you can help it) in this pass – its main purpose is to get the high-level structure of the chapter down into a readable format. When you’re done here, you’ll have a first draft of a roadmap for everything that comes next.

In the below sequence from The Last Monster Master, one of the player’s monsters is stuck in a tree during an attack. The player must choose to use their Telepathy or Body Language detection skills to help the monster withstand the attack, or to run over and help directly.

Pass 2 – Stub Text Revision (Yellow)

In the next pass, focus only on revising the structure you just created. You’re looking only at the placement of things – don’t worry about misspellings or anything related to the text, since everything you’ve written will be replaced in revisions.

You’re primarily looking for choices or option branches that don’t make sense or are inconsistent with the story, edge cases that can lead to problems later, and dead ends that don’t link back to the main narrative flow.

Secondarily, you’re making sure that the structure so far makes use of all of the player stats or ability options you’ve planned to use in this chapter. If it turns out that you haven’t implemented as many as you would’ve liked, make a conscious decision to either amend your original plan, create new sequences or options that use these stats or make a note to utilize the forgotten stats in future chapters.

Pass 3 – First-Pass Text (Orange)

With the structure organized and refined, now it’s time to write the actual text the player will see. This is a fairly straightforward pass, but just as before, maintaining your focus is key.

Don’t worry about setting values for variables, structuring transitions, or anything else that isn’t pure writing. And just like most pure writing, this is both the most fun and the most time-intensive part.

Pass 4 – Text Revision (Purple)

Did you survive writing the actual chapter? Great! Things start to move significantly faster now. You’re about to enter editor mode.

Read through the first-pass text you just wrote with a merciless eye. Everything related to the text itself is fair game – spelling, grammar, incorrect references to characters or places, tighter word choices, etc. Again, keep your focus on the writing. Make the text sing.

Pass 5 – Variables (Blue)

The structure is nailed down and the text is looking tight. Now, go through the chapter again, looking for any instance where variables are invoked, specifically anywhere where player stats are modified or referenced in order to determine outcomes. It’s likely you’ll also have a few special cases for unique player items, one-off encounters and the like.

You’ll refine the values used here in subsequent revisions, gameplay balancing and playtesting. For now, set a baseline for where you think values need to be.

Keeping an external reference document for how much of a given stat is required per chapter or before significant events can help with consistency. For example, if the player’s Strength stat must be at least 45 for them to kick a wooden door down in Chapter 4, it’s logical to require somewhere around 65 Strength to knock down a metal door in Chapter 6 (i.e., the requisite should go up).

Doing this in a dedicated pass helps enforce good internal consistency for stat checks, which will help with across-the-board adjustments to values later.

Pass 6 – Export and Logic (Green)

Finally, you need to bring your (almost) finished chapter into the development tool you’re using to make the game itself. Fortunately, Chat Mapper exports to XML, JSON, Excel, and Rich Text formats, giving you plenty of options to work with. For The Last Monster Master, however, I simply went through each text node and copied it into my ChoiceScript file, adjusting for formatting and segment transitions as needed.

If you’re also writing the actual logic that happened behind the scenes, you’ll need to start scripting this as you bring the text into the game. Fortunately, since you’ve already resolved the questions of what needs to happen when and where, each scripting task is handily divorced from the content for pure problem solving.

Other Methods

This isn’t the only way to go about writing non-linear text games, but it worked well for this project. Depending on your style of development and the tools you’re using, you could opt to export your stub text into the game early on so you can actually play through it as soon as possible. Plus, since Chat Mapper supports Lua for scripting, you could even set up all of the logic you’d need directly inside the program, as long as you don’t mind possibly scripting everything again in your actual development environment.

Whatever process you choose, stay focused on one task at a time, celebrate each milestone and take notes for things you could improve upon. Wrangling non-linear narrative is not a trivial task – so why not make a game out of it?(source:gamasutra)

 


上一篇:

下一篇: