從六個步驟設(shè)定談游戲互動文本的編撰問題
寫#p#難。
last_monster_master(from gamasutra)
如果你擅于辭令的話自然是極好的。如此你便能夠輕松地創(chuàng)造出由3個不同的角色在4種不同的情境下所說出的不同話。通常情況下,編寫非線性文本游戲?qū)υ捄蛿⑹鰞?nèi)容是在約束,創(chuàng)造性再利用以及確信等條件下的有效實踐。
假設(shè)你為一款基于文本的游戲列出了提綱。你知道游戲主題,主角,每個章節(jié)所發(fā)生的的主要事件,玩家的能力等等。那么現(xiàn)在你便可以開始進(jìn)行編寫—-但是你卻難以邁出這一步。你該如何編寫一個任何事情都有可能發(fā)生的故事?你該如何設(shè)定玩家的選擇?你該從哪里下手?
最近我面向Choice of Games發(fā)行了我的首款未刪節(jié)文本游戲《The Last Monster Master》(共有25萬個單詞?。?,并且在這個過程中我想到了一個能夠幫助人們一章一章編寫游戲的基本框架。在將最后文本帶到ChoiceScript(游戲邦注:Choice of Games自己的腳本語言)前,我使用了Chat Mapper(免費(fèi))去編寫每個非線性章節(jié)。
我將這個過程分解為了6個部分去完成每個章節(jié),這能幫助我保持注意力。此外,Chat Mapper還擁有一個能讓你改變每個文本節(jié)點顏色的功能。這能夠讓你追蹤每個文本,并且我還使用這一功能去改變每個節(jié)點顏色以標(biāo)記完成的內(nèi)容。
第一道—-存根文本(沒有顏色)
第一道是關(guān)于為章節(jié)制定結(jié)構(gòu)。比起編寫實際的對話或描寫,我們可以使用占位符作為存根對話去預(yù)示誰將說話,何時會說話以及玩家的選擇會是什么。
如果基于統(tǒng)計值以及其它條件會出現(xiàn)不同分支,那就指出有問題的統(tǒng)計值并清楚地描述選擇內(nèi)容。這時候你還不用擔(dān)心去編寫任何游戲邏輯,這是之后要做的事。
避免在這一道中進(jìn)行過多的修改—-主要目的是為了將高級的章節(jié)結(jié)構(gòu)分解成可讀格式。當(dāng)你完成這一任務(wù)時,你便能夠初步明確接下來所有內(nèi)容的路標(biāo)。
在以下來自《The Last Monster Master》的序列中,玩家的一個怪物在進(jìn)攻的時候陷進(jìn)一棵樹中。玩家必須選擇使用心靈感應(yīng)或字體語言檢測技能去幫助怪物抵御進(jìn)攻或逃出去。
stub_text(from gamasutra)
第二道—-修改存根文本(黃色)
在下一道中你應(yīng)該只專注于你剛剛創(chuàng)造的結(jié)構(gòu)。你正在著眼于內(nèi)容的設(shè)置—-不要擔(dān)心拼寫錯誤或任何與文本相關(guān)的內(nèi)容,因為在修改過程中你所編寫的所有內(nèi)容都會被替換掉。
你主要是在尋找無意義或者與故事或邊界情況不符,并且有可能在之后引出問題的選擇或選擇分支。
其次,你正在確保到目前為止所設(shè)置的結(jié)構(gòu)是使用你計劃在這一章節(jié)中使用的所有玩家統(tǒng)計或能力選擇。如果最終證明你并未執(zhí)行你想執(zhí)行的內(nèi)容,那么你便需要做出一個明智的決定去修改最初的計劃,創(chuàng)造使用這些統(tǒng)計的全新序列或選擇,或者通過標(biāo)注在未來章節(jié)使用那些被遺漏的統(tǒng)計。
第三道—-第一道文本(橙色)
基于有組織且經(jīng)過完善的結(jié)構(gòu),現(xiàn)在是時候編寫玩家能夠看到的真正文本了。這是非常直接的一道,但與之前一樣,你應(yīng)該保持注意力。
不要擔(dān)心為變量,結(jié)構(gòu)轉(zhuǎn)換或任何單純編寫內(nèi)容設(shè)定數(shù)值。與大多數(shù)單純編寫內(nèi)容一樣,這是最有趣也是最消耗時間的一部分。
first_text_pass(from gamasutra)
第四道—-修改文本(紫色)
你是否曾經(jīng)編寫過真正的章節(jié)?現(xiàn)在事情的發(fā)展變得更加迅速了。你將進(jìn)入編輯模式。
在閱讀第一道文本時你會發(fā)現(xiàn)自己在編寫時并不帶任何感情色彩。所有與文本相關(guān)的內(nèi)容都是關(guān)于游戲—-拼寫,語法,對于角色或地點的錯誤引用,更嚴(yán)格的詞匯選擇等等。再一次地,你應(yīng)該專注于編寫。創(chuàng)造出生動的文本內(nèi)容。
第五道—-變量(藍(lán)色)
結(jié)構(gòu)已經(jīng)明確文本也很緊湊。現(xiàn)在我們將再次檢查章節(jié)并尋找任何可能出現(xiàn)變量的情況,特別為了決定結(jié)果而修改或引用玩家統(tǒng)計的地方。有可能對于特定玩家道具或一次性遭遇你將只能找到少量的例子。
你將在之后的修改,游戲玩法平衡以及測試中完善這里所使用的數(shù)值。而現(xiàn)在,你將在你認(rèn)為數(shù)值需要出現(xiàn)的地方畫一條線。
為每個章節(jié)所需要的特定統(tǒng)計創(chuàng)造一份外部引用文件。例如,如果玩家的力量統(tǒng)計至少達(dá)到45他們才能在章節(jié)4踢倒一扇木門,那么在章節(jié)6要求玩家擁有65個力量才能踢倒一扇金屬門便是符合邏輯的。
在特定的道中執(zhí)行這一做法將能夠確保統(tǒng)計的內(nèi)部一致性,這也將進(jìn)一步調(diào)整之后的數(shù)值。
variable_pass(from gamasutra)
第六道—-輸出和邏輯(綠色)
最后,你需要將已經(jīng)完成的章節(jié)帶到你創(chuàng)造游戲所使用的開發(fā)工具中。幸運(yùn)的是,Chat Mapper能夠輸出XML,JSON,Excel,和Rich Text等格式,如此便為你提供了更多選擇。對于《The Last Monster Master》,我只審查了每個文本節(jié)點并將其復(fù)制到我的ChoiceScript文件中,并為格式化以及部分轉(zhuǎn)換進(jìn)行調(diào)整。
如果你也是自己編寫幕后的真正邏輯,你便需要在將文本帶到游戲時開始編寫腳本內(nèi)容。幸運(yùn)的是,因為你已經(jīng)解決了何時以及在哪里發(fā)生的問題,所以每個腳本任務(wù)將從內(nèi)容中輕松地脫離出來。
其它方法
這并不是編寫非線性文本游戲的唯一方法,但卻非常適合這一項目。根據(jù)你的開發(fā)類型以及所使用的工具,你可以選擇將存根文本較早輸入游戲中,如此你便可以盡快執(zhí)行了。此外,因為Chat Mapper支持Lua,那么只要你不介意再次在開發(fā)環(huán)境中編寫所有內(nèi)容的腳本,你便可以直接在程序中設(shè)置所有需要的邏輯。
不管你選擇怎樣的過程,你都應(yīng)該一次只專注于一項任務(wù),慶祝每一次的成功并記下你需要完善的內(nèi)容。爭辯非線性敘述并非一個瑣碎的任務(wù)—-所以你何不從中創(chuàng)造一款真正的游戲?