我當工程師,我在寫故事 2
今天是兩個半月暑期實習的最後一天,除了清理程式碼、整理遊戲檔案、交接工作、安慰捨不得我離開的實習導師H,我也終於有空為之前開始的故事做個收尾。
上個月初自訂的工作目標,是:
- 利用台南場勘收集的資料,將故事完整的初稿寫出來。
- 把故事跟360影像合併,做出遊戲的早期雛型。
中途踩了一些坑,做了一些白工,不過迄今這兩個目標基本上完成了。如果把這次實習的工作當成一件獨立作品來衡量,那我對成果還算滿意。
下面就是我厚顏無恥講述自己豐功偉業的時間,嘿嘿。
有一段時間,公司靠近大面採光窗的高腳椅上,總是坐著一位望著遠方碧空與山巒之間的交界線,眼神迷離,耳機播著輕音樂,嘴裡喃喃自語的少年。
這可不是在偷懶, 是跟繆思溝通,讓文若春華,思若湧泉的必要條件。
少年腦中的點子多到像過新年放鞭炮一樣,霹哩啪拉的響,不過大部分的點子是毫無邏輯的胡言亂語,無法用文字詮釋的圖像,或沒人想聽的冷笑話。把剩下1%拿來精煉醞釀,終於生出一篇少年以外的人類們可以勉強看懂的近一萬字英文劇本。
劇本設定是:
你是一名宇宙探險者,擔任冒險者一號星際艦艇的船長。不幸,在航⾏過程中,艦艇系統發⽣故障,導致你墜落於一顆未知的星體。
於是,你帶著一面和平旗幟和一張地圖,被迫離開船艙到陌生的星體上探險。四處收集能用來修復艦艇的物品,並且在探索過程中,目睹這個星體獨有的「月世界地理景觀」。
除了序以及結局之外,故事主要的事件軸(main story arc)是非線性的,參照開放式世界,故事裡有六個地點可以探索,分別為:
- The Barrens (荒野)
- Dragon’s Lair (龍穴)
- Lake of Dreams (夢幻之湖)
- Dynasty of Dynastinae (獨角獸森林)
- Firework Barracks (火藥兵工廠)
- Soul’s Retreat (仙靈隱居處)
故事序結束以後,使用者位於艦艇墜落的荒野裡。之後,探索地點的先後順序由使用者自己決定,順序不同,劇情線以及觸發事件也不盡相同。
動筆前還有考慮,這個計畫的本質是與地方政府合作,達成都市行銷以及促進觀光導覽的目的,腦補的科幻故事雖然自己寫得開心,卻怕遠離現實太多。為了結合地理資訊以及地方人文特色,故事裡的六個地點,除了荒野以外,都有對應現實景點或景觀,並且在劇情裡融入相關知識。
龍穴對應月世界地形景觀,講述泥岩、砂岩、以及青灰岩特性,並解答許多人看到這塊土地會產生的疑問:「為什麼月世界地形地表呈現灰白色,而且如荒漠般沒有植物生長?」夢幻之湖對應夢幻湖以及湖中涼亭,會提到洩洪能力公式以及原理,還有涼亭巧妙的設計如何將多餘的雨水和湖水導引到附近的二仁溪。獨角獸森林對應泥岩水土保持教學園區的生態步道。主要說明當地採用的各種生態工法如何將惡地地形變成能夠支持植物生長、讓獨角仙進駐的綠色家園。火藥兵工廠對應龍崎工廠。敘述龍崎的工業歷史、產業轉型、以及當地居民抗議,反對在他們家鄉成立事業廢棄物綜合處理中心以及爆竹生產專區的故事。仙靈隱居處對應內門靈隱寺,一座屹立於山頂的佛教殿堂。敘述當地的人文特色,還有民間的宗教習俗。
故事的遊戲性主要來至於「鑰匙與門」的概念,遊戲中有特定的物品會成為打開「門」的鑰匙。這裡的門,指的是開啟某對話,進到某場所,或開始某事件的觸發條件。沒有鑰匙,就無法看見後續的劇情。這是指向與點擊式冒險(point-and-click adventure games)常見的遊戲方法。
這概念單用說明的有些抽象,所以下面舉出兩個劇本裡實際的例子。
鑰匙與門 :「隱形的力量」
使用者一,幫他取個很沒創意的綽號,叫好帥氣。
好帥氣在墜機後決定先拜訪仙靈隱居處。他會看到以下劇情:
You set eyes upon a unique manmade architecture. A temple stands disparate from its surrounding scenery, boasting the perceptible matte red and orange color scheme and well as the ornamental roof finials at the gable ends.
You smell burning incense, and hear the sound of distant chanting.
Despite the daylight, you feel a chill in the air. An invisible force stops you from going closer.
[翻譯]
你的目光停留在一座與周圍景觀截然不同的人造建築上。一座啞光紅橙色的寺廟,在灰白色的泥岩中脫穎而出。
屋頂兩側的山牆上雕有獨特的裝飾。你聞見香火,也聽見遠方傳來的誦經。
陽光普照,但你感到一陣寒顫。一股隱形的力量阻止你繼續向前。
因為好帥氣這時還沒有找到能當作「鑰匙」的物品,他接著會看到:
You are not welcome here. At least, not yet.
[翻譯]
這個地方並不歡迎你。至少,現在是如此。
於是,好帥氣只好先去探索這個世界的其他地方。探索過程中,他找到一張畫有船舵的油畫。再次回到仙靈隱居處,他會看到:
You approach the temple once again, only to feel the invisible force stopping you in your tracks.
You take out the painting of what looks to be a wheel and place it on the ground in front of your feet. There is a vibration in the air, and you quickly realize that, via some inexplicable mechanism, you are now able to approach the entrance of the temple.
A monk walks out, donning a saffron robe with a pattern reminiscent of a rice field. He unites his palms in front of his heart and makes a small bow.
You do the same.
The monk smiles. “Dharma Charkra. The wheel of Dharma, primarily to be understood as symbol wisdom, knowledge, and insight. Friend, what brings you to our temple today?”
[翻譯]
你再次走到寺廟前。那股阻止你繼續向前的隱形力量仍然存在。
你蹲下,將畫有船舵的油畫恭敬的放在腳前。空氣忽然一股震動,你很快意識到,通過一些無法解釋的機制,你現在被允許接近寺廟的大門。
一位和尚走了出來,他穿著藏紅花長袍,上面精緻的圖紋讓人聯想到在風中翩翩起舞的稻穗。 和尚雙手合攏置於胸前,微微點頭。
你學著他的動作做了一次。
和尚露出淺淺的微笑,開口說:「法輪。合十禮。看來你蠻瞭解我們的信仰。朋友,您今天為什麼來我們寺廟?」
通過擁有「一張畫有船舵的油畫」這把鑰匙,好帥氣成功打開了「仙靈隱居處劇情」的這扇門。值得一提的是,能打開同樣這扇門的鑰匙,不只一把,正因為有這樣的彈性,設計出的故事結構才會變得複雜有趣。
鑰匙與門 :「夢想的花園」
使用者二,也幫她取個很沒創意的綽號,叫好美麗。
好美麗決定馬上到龍穴探險。
Amongst hills of earth and stone, hidden in the rise and fall of the landscape, you notice some sort of structure, a fortress, it seems like, engraved within the terrain itself. Carved deep into the ground and decimating any verdancy in the vicinity, the creator of this spectacle made rifts that resembles two gigantic mustaches, or, perhaps it was supposed to be a huge pair of wings.
Whoever did this must be of tremendous stature and power. You can head closer with your peace banner. Or maybe it’s smarter to simply back off.
(choose) Head closer with peace banner. / Back off.
[翻譯]
隱藏於山丘的起與伏,你注意到某種結構,似乎是一座用地形本身的泥巴跟岩石塑建而成的城堡。 奇怪的是,附近沒有一絲的綠意。無論製作城堡的人——或東西——是什麼,他在地表上刻出兩筆巨大的裂縫,看起來像一對龐大的翅膀。
你猶豫是否該拿著你的和平旗幟,小心的往前走。也許,掉頭離開才是聰明的選擇。
(選擇) 拿著和平旗幟往前走| 掉頭走人!
好美麗在這裡會做出一些影響劇情的選擇,但為了不爆自已劇本的雷,中間部分故事不多做敘述。總之,好美麗遇到了龍,但因為好美麗很美麗,龍不但沒有將她綁架,反而與她相談甚歡。在天花亂墜的對話當中,他們聊到:
The dragon lets out a long sigh. “But how I long for a garden! Small one, if you can figure out a way to grow me a garden despite the geological difficulties, I promise I will reward you handsomely.”
[翻譯]
龍長嘆一聲:「我極度渴望擁有屬於自己的花園!小子,我知道這邊的地質對花草的生存十分嚴峻,但如果妳能送我一座花園,我保證會給妳很棒的回報。」
這時的好美麗,還無法回答龍的訴求。
You have no idea how to satisfy the dragon’s dream, but you promise that you’ll think about it.
You shake your head. “I don’t know how , but I’ll come back when I do.”
[翻譯]
妳不知道如何幫助龍實現他的願望,但妳保證妳會努力思考。
妳搖搖頭:「我找到方法以後,一定馬上回來找你!」
於是,好美麗決定暫時離開,先到夢幻之湖走走。夢幻之湖住有一位湖中女神,湖中女神看好美麗的長相姣好,只比自己差一點點兒,於是跳過所有夢幻之湖的既定劇情,直接送給好美麗一顆擁有神奇魔法的水珠。拿到神奇水珠的好美麗馬上回到龍穴,開啟以下的對話:
A great head pops out from the fortress. “It’s you again, small one. Have you figured out a way to grow me a garden?”
“Yes,” you reply, trying to play cool.
From your inventory, you pull out the magic orb of water. Perhaps you could increase the moisture content of the mudstone landscape with this item. Perhaps it can also alter the soil pH to be more suitable for garden plants.
You throw the orb into the air. The orb lingers, high in the sky, then suddenly, bursts into strings of clear liquid, and down they fall...
...baptizing the badlands, refreshing the landscape with the water of life.
From the cracks of the ground surface, greenery starts to spread. Starting from the entrance of the limestone fortress all the way to the highs and lows of the landscape, grass is sprouting, flowers are blooming, and the prominent grey tones of the lands are replaced with green, dotted with reds, yellows, purples, and oranges.
[翻譯]
一顆巨大的頭從城堡的窗口探出。「小子,原來是妳啊。妳要送我一座花園了嗎?」
妳帥氣的回答:「看著吧。」
妳猜想,從女神那兒拿到的神奇水珠, 應該可以用來增加泥石的水分含量。 也許它也可以改變土壤酸鹼值,讓其更適合花園植物。
妳將水珠拋到高空。 水珠停留在空中,轉啊轉,忽然間,變成了一串清澈的液體,灑落下來⋯⋯
生命之水給惡地地景帶來煥然一新的生命氣息。
地面的小裂縫中,冒出了鮮嫩的新芽。 石灰岩城堡所在的山丘上,山頂到山腳彷彿蓋上了一片綠色的地毯。小草萌芽,鮮花盛開,土地的灰色色調被綠色取代,還點綴著紅色,黃色,紫色,和橘色。
通過擁有「神奇魔法的水珠」這把鑰匙,好美麗打開了「幫助龍實現夢想」這扇門。在這邊偷偷告訴你,得到花園興高采烈的龍會送給好美麗一些好東西,而這些東西可以當成其他門的鑰匙。
對於這種非線性互動型故事而言,劇本的撰寫,跟遊戲的結構密不可分。上方的示意圖是我在開始寫故事前,就事先決定好的遊戲結構。圖中標記出哪些物品可以在哪裡找到,並可以當成打開哪裡的門的鑰匙。好帥氣和好美麗的遊戲經驗可以輕易從這個圖裡得知(下圖)。
這時發生了這次實習採到最大的坑。
寫完劇本,我開始給公司組內一些人試玩紙本雛型(paper prototype)。結果主管把我叫去,跟我說:「這故事的遊戲時間太長,下一版 nondigital prototype 你先做開頭跟結尾,中間支線以後再補。」
等等,我沒聽錯吧。
因為在這種遊戲裡,忽略故事事件軸,等同忽略遊戲結構啊!而忽略遊戲結構,拿掉「鑰匙與門」的遊戲性,等同沒有遊戲啊!
要將遊戲性改到其他地方?那麼劇本豈不是得重寫?
幸好主管也說出了具體想解決的問題,這比空泛的反饋有用太多。除了縮短時間,他希望做出來的遊戲不會讓使用者卡關,無論如何都要能看到結尾。如果用鑰匙與門的遊戲結構,怕有使用者一直找不到鑰匙,便中途放棄體驗。
我馬上聯想到的是戀愛模擬遊戲(dating simulations),當有二維巨乳妹貼在電腦螢幕上,問說:「哥哥,晚上要幹嘛?」的時候,你回答什麼選項都不會影響遊戲的進行。當然,選項亂選可能會不小心在最後看到來勢洶洶的 BAD END.
如果回答:「都可以,跟妳在一起就很開心」,估計之後可以看到繪畫大師的美麗CG,但如果打她一巴掌,說:「退下,我不跟在馬路上只穿蕾絲胸罩的人講話」,下場可能是你被綁起來⋯⋯
對不起,離題了。我是不知道啦,我是正人君子,不碰工口遊戲的。
回歸正題,我當下也說白了,我認為這種遊戲性不好套用在月世界計畫上。用選項去控制某些屬性,再根據屬性的高低分配變動遊戲方法或結局,這種遊戲性有前提:使用者要對角色產生足夠的認同感,在乎遊戲角色的形象或能力塑造,或者,要對獎勵或結果有一定的期待。
這就是為什麼,在有名的多人線上角色扮演遊戲(MMORPG)裡,角色升級時拿到的一點屬性點,要點力量、敏捷、還是智商,可以讓玩家猶豫好一陣子。
這就是為什麼,玩家玩戀愛模擬遊戲時,會想要討好遊戲中的角色,選擇幫助感情進展的選項,因為可以看到養眼圖,或者體驗在現實中不曾體驗過的,毫無缺陷單純的愛情。
這就是為什麼,在網路上看到不知所以然的性格測試時,就算有再荒謬的問題,玩家想知道結果,還是會乖乖照實回答。譬如「測試你的性格是哪一種水果」,裡面可能有一道題目:「你會穿什麼睡覺(多重勾選)」,你選擇帽子跟襪子,發現自己的性格是奇異果的時候,有一瞬間覺得相當合理。
月世界計畫不是無釐頭性格測試,要讓使用者產生認同感或對獎勵有期待,必然得花上一定時間做故事和世界的鋪陳。就算確定將遊戲硬改成這種形式,這跟「遊戲時間不能太長」也產生了一些矛盾。
況且,故事是非得重寫不可啊!真的不是可以隨意在兩種遊戲架構間轉換的。
主管繼續說:「遊戲不就是有限狀態自動機(finite-state machine)而已,都一樣啊!去改。」
我忍住翻白眼的衝動。好喔。可以改。都改。全部改。全。部。改。
於是,第一版的非紙本雛型(digital prototype),我把原始劇本的序跟結尾取出並大幅刪減,中間塞了一些垃圾話,將原本近一萬字的故事壓縮成僅兩百字。用 Google Translate 將故事翻譯成中文,再用 python 寫非常基本的文字解析器(text parser)。某一個工作日,放棄午餐時間,這個prototype一天就做好了。
我覺得這個 prototype 最有趣的地方,不在故事,不在遊戲,而是 Google 小姐的翻譯。她把 “Do you copy, captain?” 翻成了 「你複製,隊長?」;把 “Walk in the brightest direction.” 翻成了 「走向看起來最聰明的方向。」
參考龍與地下城(D&D),每一個選項都伴隨著善良、中立、或邪惡點數。修復好艦艇,離開大氣層時,船的AI會問你:「你認為這個星球怎麼樣?」
如果你的善良點數最高,你會好奇這塊土地的歷史,以及它未來的發展方向;中立點數最高,你會聳肩,不說話;而邪惡點數最高,你會吐一口口水說:「誰在乎?我只想離開這該死的地方。」
我不滿意這樣的設計,因為對於使用者來說,他們不會意識到選項會帶來不同的結局,所以選項有跟沒有一樣,而實際測試時,發現大家的確是亂選。但要讓使用者在乎選項,跟之前說的一致,勢必得做更多的鋪陳。跟主管很友好的吵了一次架,時間要在5分鐘內這個想法,終於被推翻。
在介紹我做的下一版prototype之前,得先稍微講一下這個遊戲的設計規範。我在做視覺設計的早期就對設計規範有些想法,卻一直沒有將其整理成文件,後來覺得不行,不做好,很難把想法讓團隊裡的人知道。雖然在做這個專案的人目前基本上就是我一人而已,但還是得為未來做些準備。
我從設計規範文件挑出其中的十五張放到這篇文章中。強調一下,設計規範裡的圖片幾乎都是網路上的參考圖。所有原圖連結我都放在最後兩張圖片裡面。
第二版的遊戲性與技術性雛形(gameplay and technical prototype),重點有兩個,沒錯,一個跟遊戲相關、另一個跟技術相關。
遊戲性:我要把故事中,其中一個章節的體驗在有限時間內盡量完整的做出來。這個體驗,得包括上一個雛形所缺少的360影片播放器、360影片、文字排版和動畫、角色插畫和動畫、音效、以及背景音樂等。除了360影片本身素材的提供是由H影像處理過後交給我剪輯,剩下的東西都由我負責。
技術性:我要設計非線性文字遊戲的遊戲引擎,為了符合模組化設計,這個引擎要能讀取格式化成某種資料格式的故事劇本以及360影片素材。這樣,未來的故事寫手以及影片導演皆不必懂程式碼,只要將文字和影片丟入引擎就能生出一版自己的遊戲。
話不多說,直接來看雛形成品。
如果你不在乎影片載入花長一點的時間,還有偶爾慢半拍的音效,這個版本我放在GitHub Pages上,可以試玩。
在團隊內部展示這版prototype,實習也只剩下最後一個禮拜。這版prototype雖然也存在一些較明顯的缺陷,譬如影片跟文字關聯性太低,或者劇本比起故事更像國小生物教科書,但大家認為整體感覺還不錯,看得出未來產品的發展空間及方向。
有同事一直說我畫的這隻獨角仙角色長得很像我自己。上一個月說像暴龍,這個月說像獨角仙,到底發生什麼事。
容我在最後用三句話,總結2019年暑期,在 Taiwan AI Labs 的實習經歷。
我以為我心甘情願的放棄暑假,是為了當一位每天注視電腦螢幕八小時,雙手抱頭苦盯著各種複雜演算法的工程師。
實際上,某種因緣際會,我成為一位在創作劇本、在畫奇怪角色、在設計遊戲引擎、在規劃使用者體驗,就是沒有抱頭苦盯著各種複雜演算法的工程師。
我當工程師,我在寫故事⋯⋯
… and I freaking loved every moment of it.