《Celeste》 開發者是如何精心製作“衝刺”的
簡介與序曲
在Celesete裡,許多細微的行動都是發生在轉瞬之間的,甚至往往比你想象中還要“轉瞬之間”。
1這裡是[遊戲機制設計]專欄,由Alex Whiltshire邀請遊戲製作人員們來分享、討論他們在遊戲製作過程中遇到的困難、趣事和輾轉反側,以及他們是如何戰勝這些瑣事,打造出最適合他們遊戲的機制的心路歷程。今天,我們有幸請到了最近冉冉升起的爬山-平臺跳躍遊戲新作《Celeste》的製作者們,請他們聊一聊精心打磨角色控制程式碼所花費的心血。
上個月初,Celeste的製作者們放出了他們遊戲中最重要的一項機制--主角Madeline的角色控制機制原始碼。其中包含了5472行程式碼以及數不勝數的細緻的Variables(變數):JumpGraceTime,DashHJumpThruNudge或DuckFriction,這些程式碼使得Madeline無論是奔跑、跳躍、攀爬、還是衝刺都能擁有精確並且順暢的感覺,這些程式碼使得玩家操控下的Madeline彷彿有了自己生命一般靈活。
如果你不是一名程式設計師,那你就不大容易猜出來這些程式碼代表了什麼,有什麼意義,所以我採訪了諾埃爾.貝瑞先生來解釋這些程式碼是如何聚合在一起來使玩家角色的操控感“如絲般順滑”的。專注在她的衝刺能力上,經由反覆考慮,最後出現在Celeste這款遊戲中的機制,最終使得你能夠完美操控Madeline,使她能做出玩家真正期望去做出的動作,而並不必須是你按下的按鈕所連線的動作。
就像你預料的一樣,Celeste中的衝刺功能是一個短程的高速衝刺,主角Madeline能夠向8個方向自由地衝刺,在空中也能衝刺。但是想要再次使用衝刺技能的話,則需要主角接觸地面來重新充能衝刺能力,所以說在每次跳躍過程中她只能衝刺一次(使用後頭發顏色變成藍色)。這是個極簡的機制,能讓玩家瞬間就理解其含義,但是並不會馬上就把這個使用這個機制的技巧全部吃透。在此之上,整個遊戲都是圍繞這個機制來創作的,將刺兒們擺放在環境的周圍製造出一個狹窄而危險的區域,僅給予玩家一息之機來落地、充能,重新喘息。
它的運作方式十分直截了當,當你按下衝刺按鈕的時候,她便在那一瞬間進入了“衝刺狀態”(A separate‘dash’state)。她的頭髮會變成藍色,會有一個計時器開始計時,她會被施加一個固定的速率(velocity),指向你按下衝刺按鈕時候的方向。接下來計時器會使你在恰好0.15s內無法控制Madeline(譯註:這使玩家不會因亂輸入指令意外改變衝刺的方向),在那之後,隨著衝刺速率降低,系統會漸漸將你對角色的控制功能還回來,直到她回到“正常狀態”。所有這一切都發生在不到一秒之內。
嘗試將每次“衝刺”做成完美
經典的平臺跳躍遊戲設計技巧
他們做了巨量的工作來確保整個衝刺過程感覺起來很棒、很順,最後巧妙小心地把控制能力,完整地,穩定地歸還給玩家。“如果你得等到整個衝刺時間結束,才能輸入其他操作指令,那麼整個衝刺動作就會感覺很僵硬,”諾埃爾.貝瑞說道。“這裡面有許多微小的細節,是一般玩家不會去注意到的,除非是那些挑戰極速通關記錄的玩家。”
這裡展現了Celeste的動作設計非常聰明的一個點,那就是遊戲始終會把一個動作的“最終裁決權”交給玩家,來維持“操作感”。另外,即便Celeste確實很難,那它其實遠比那種需要精確、完美到畫素單位級的變態遊戲要簡單,比你想象中的還要簡單。“許多我們之所以這樣寫這樣一段程式碼的意圖,是建立在我們認為玩家想要去做什麼樣的動作的基礎上的。”諾埃爾.貝瑞繼續說."我們想要把難度設計的重心放到環境和關卡上。"
他們也使用了不少經典的遊戲設計技巧來潤色操控,比如“威利狼跳”,名字由來於威利狼在動畫裡跑出懸崖範圍之後的空中動作。這實際上是讓系統賦予玩家角色一小段額外時間,可以在Madeline從地面走到空氣後的短暫時間內仍然做出跳躍動作。異曲同工的,當她的衝刺會因稍稍有些低而撞上牆的時候,遊戲會調整路線,使她能夠“滑上”牆壁上方的地面,而不是撞到牆上卡住。
譯者補充圖:威利狼跳(Coyote Jump)
“我們還得考慮究竟精確到多少個畫素單位,當玩家角色在靠近一面牆或者浮於地板之上時仍能夠發出一次衝刺動作”諾埃爾.貝瑞說:“雖然可能只有一兩個單位級別的差距,但是為了把握到正確的感覺,我們做了大量的測試來驗證。”
大量測試與細緻微調
諾埃爾.貝瑞和它的設計師小夥伴麥特.索爾森會邀請朋友來參加測試,雖然他們知道,當新玩家們玩一個遊戲的早期原型時,即便一次又一次地撞牆,玩家們也很難識別出究竟是遊戲的那個部分出了錯。“但觀察他們的遊戲過程,你就能看出那裡運轉的不大對勁。有時候是關卡設計的問題,比如那塊牆本身有問題,有時則感覺是玩家角色摩擦力不足‘太滑了’,所以顯得不穩定,有時則簡單的是他們的跳躍不夠高,沒達到跳躍的最大高度。”
但同時Celeste對於會使遊戲規則產生細微變化的地方十分小心。許多遊戲都會進行一定程度的“操控器微調”,他們會微調系統讀取手柄、鍵盤輸入的資訊,來使他們更大機率符合玩家們實際想要去做的動作,而不是他們實際上按了啥。(譯註:就是說輔助瞄準系統)大多時候是這麼做的:要麼是修改那些輸出實際為零的區域(Deadzone),或者是增大那些常見方向(Direction)相關聯的角度引數,來使玩家能夠更容易向這些方向攻擊、衝刺。
而儘管普通玩家們抱怨最多的就是他們有時會意外地往不想要的方向衝刺,Celeste仍只微調了一點點它們讀取搖桿資訊的方式。因為遊戲需要,衝刺功能可以向任何方向使用,所以遊戲只有在賦予Madeliine能夠衝刺的八個方向中每個方向同等的權重時才表現得最好。呃,大致同等,事實上因為玩家很少向下,下左,下右方向衝刺,這幾個方向稍微有點更高的閥值。
“這是個特別棘手的問題”諾埃爾.貝瑞說道,“我們可以做一些嘗試,來讀取一次操作指令輸入中的多個幀(reading multiple frames of input),但這也會導致其他問題,比如說如果求的是多個幀中的平均值的話,當玩家快速地輕打搖桿時,系統可能沒法讀取到正確的指令。而我們想要做到的是儘可能的精確,所以我們儘可能100%還原從搖桿上讀取的指令,而不是微調它。”
將一個機制從設計層面上調整到最佳
實際上,有許多設計上的細微調整都是在Celesete的早期開發流程中被決定的,而如果我們將時鐘撥回那麼一點點,這款遊戲的原型最早誕生於2015年,是一個麥特.索爾森與諾埃爾.貝瑞僅用了4天完成的PICO-8 jam game。但當他們著手開始設計關卡之後,他們必須要在對主角的操控做修改時加倍小心,因為任何對主角操控動作的微小改動都可能影響所有他們遊戲中所做的其他設計工作。
“我們曾經在遊戲裡放過一個,現在來看比較糟糕的機制,但我們一開始還覺得蠻酷的。”諾埃爾.貝瑞回憶道,“當我們從PICO-8的原型版本轉移到現在工作的平臺之後,我們增加了一個攀爬牆壁的能力給主角,然後我們立刻意識到需要給他加一個精力條、時間限制之類的限制條件。但我們同時也加入了這麼一個設計:當你在攀爬牆壁耗空精力值之後你不得不在地面上站個一、兩秒種來喘氣,之後你才能繼續爬牆。我們甚至做了幾個關卡,是以這個機制為基礎而設計的,像是你必須要在破碎的牆、平臺之中跳躍,然後找準時機喘氣來恢復精力。但是,這個機制其實完全破壞了這個遊戲的“flow“。沒有任何人會覺得站在原地發呆發個兩秒是件有趣的事。所以我們不斷地減少等待所需的時間,然後當我們降到大概只有0.2秒的時候,我們才清醒過來,我們為什麼還要做這個啊?”諾埃爾.貝瑞大笑道。
他們倆也對於把遊戲中不符合遊戲機制,遊戲玩法的東西移除一直是持一個樂觀、正向的態度的。而後來,在他們有了大量的關卡之後,調整的部分就主要是麥特.索爾森的微調了。“他好像甚至有把浮點數(floating)從0.2調到0.21來嘗試一個東西感覺起來對不對味,哈哈”
在Celesete裡,許多細微的行動都是發生在轉瞬之間的,甚至往往比你想象中還要“轉瞬之間”。諾埃爾.貝瑞回想起來了他們設計[綠色水晶]時候的細節,當Madeline在半空中碰觸到一個[綠色水晶]時,遊戲會將畫面幀“凍結”一瞬間然後重置Madeline的衝刺能力。最開始釋出的遊戲版本里,這個一瞬間只有0.1s,但是當他觀看了許多玩家的視訊之後,他仍然覺得那個持續時間太長了。現在的版本,這個一瞬間則只有0.05s,而且這個一瞬間仍然是肉眼可察覺的。“人眼的辨識能力真的遠遠比我們想象的還誇張。”諾埃爾.貝瑞說道。
殊途同歸地,Madeline的單次衝刺過程僅僅持續0.15s,但是你卻能夠清晰感覺到這一瞬間的“份量”,這是由於許多小的、細微的視覺效果的支援。比如一陣疾風般的粒子效果在半空中留下她的衝刺軌跡,或是一陣微小的螢幕抖動,方向恰好是與Madeline衝刺的方向相匹配。“我們忙了很久在這些小玩意上,我們投入了很多精力,來確保遊戲裡的每個動作,每個行動都有它的清晰的影響,”諾埃爾.貝瑞說道。“我們真的很討厭那種任何東西都是輕飄飄的,沒有清晰、立竿見影的衝擊感的情況。”但他們也非常小心,不在這些特殊效果做過頭,不將他們做的喧賓奪主。使得你能感受到它們,但不會被它們分散了注意力。
這不是BUG。。。是技巧!!
一旦你完成遊戲的一週目,你就可以開始著手挑戰遊戲的“B-面”啦,Celeste從B面開始會教你更誇張的技巧來向你展示Madeline的衝刺功能的更多可能性,甚至讓你抵達一些你之前想都沒想到的關卡。比如說一種“長跳”一樣的動作,在Madeline的一次衝刺抵達地表的一瞬間跳躍,這時Madeline就能繼續這股勢能,向前躍進。這個動作靈感來源與諾埃爾.貝瑞和麥特.索爾森之前合作過的一款遊戲《Towerfall》,但他們在本作裡放入了更多深度。延遲Madeline的跳躍動作直到她的衝刺能力冷卻好的瞬間,這會使她帶著衝刺的勢能衝向半空中,並且她能準備好再次衝刺。
這並不是提前計劃好的,而是自然而然從現有機制裡生髮出的。但當這個技巧成功地幫助速通玩家跳過他們做好的關卡設計後。麥特.索爾森和諾埃爾.貝瑞就開始愛上這個了。“速通玩家能夠做一大堆那些瘋狂的事!而且這些並不會過度影響休閒玩家的遊戲體驗。那些技巧的判定幀足夠短暫,所以沒人能夠偶然性做出那些動作,不過一旦你搞懂原理,它的判定幀也長到足夠讓你捕捉到機會持續使用這個技巧。”
也有其他幾個遊戲技巧在遊戲的開發流程中浮現出來,諾埃爾.貝瑞和麥特.索爾森全心全意地支援著這些技巧,但並不是所有的這些遊戲技巧都有一個出彩的結果。遊戲裡內設了一個計時器,顯示了一場遊戲已經經過的時間(為速通愛好者準備的)。在遊戲剛發售的時候,這個計時器會在玩家開啟選單,以及經過過場小動畫的時候暫停。“但是在遊戲發售的幾周後,玩家們意識到在幾個特定的房間內,如果你開啟暫停選單再恢復遊戲時,Madeline會移至到她在房間裡設定的重生點。這會幫助玩家省下幾個畫素格的時間,因為在開啟選單時遊戲的計時器會暫停。我並不確切地知道到底有多少個房間是最適合使用這種技巧的,不過我想大概得有幾十個吧,而且說實話這個技巧並不是一件很有趣的事。沒有玩家喜歡這種技巧,沒人想要在每次進入一個房間的時候都試一下開啟然後再恢復選單。”
結語:
在遊戲中,所有賦予Madeline移動能力的系統都是隱形的。在玩家眼前,她只是單純地移動著。但是這份輕鬆自如的靈活手感,卻是來自於實實在在的數個月的對於原始碼中細微數值的微調,來使她的移動模式真正符合玩家想要的。“這就是為什麼程式碼裡她的類(class)有那麼長,這是因為我們不斷地新增細節到我們關注的特定的例項中(Insatances),”諾埃爾.貝瑞說道。“這對於一個以移動能力為核心的遊戲來說非常重要,總是有些你不得不去設計的細節,他們也許在現實的物理環境下不合理,但是在遊戲裡的手感卻能成倍順滑。”
你能在這裡看到關於Madeline的移動能力的原始碼。
作者:Alex Wiltshire
編譯:sPicaLance
來源:奶牛關
原譯文:https://www.rockpapershotgun.com/2018/04/03/celeste-dash/
相關文章
- 團隊作業4:專案衝刺-敏捷衝刺日誌的集合貼敏捷
- 結對作業衝刺2
- 結對作業衝刺7
- 結對作業衝刺8
- 團隊作業4——專案衝刺 第 2篇 Scrum 衝刺部落格Scrum
- 團隊作業4——專案衝刺 第3篇 Scrum 衝刺部落格Scrum
- 團隊作業4--專案衝刺 第7篇 Scrum 衝刺部落格Scrum
- 今日總結-結對作業衝刺
- 團隊作業4——專案衝刺
- 團隊作業4——專案衝刺-1
- 團隊作業4——專案衝刺-3
- 團隊作業4——專案衝刺-2
- 團隊作業4——專案衝刺-4
- 團隊作業4——專案衝刺5
- 團隊作業4——專案衝刺-5
- 衝刺05
- 衝刺08
- 衝刺03
- 衝刺04
- 衝刺07
- 衝刺2
- 衝刺1
- 衝刺3
- 衝刺4
- 衝刺8
- 衝刺7
- 衝刺6
- 衝刺5
- 衝刺10
- 衝刺9
- 開發者談如何製作首款iPhone遊戲iPhone遊戲
- 結組作業,第一階段衝刺(4)
- 4.29(衝刺一)
- 5.2(衝刺四)
- 5.5(衝刺七)
- 專案衝刺
- 衝刺計劃
- 專案衝刺——第二篇Scrum衝刺部落格Scrum