其實加上第一天的Trick 0,小哈在昨天鐵人賽的文章就已經累積滿三十篇,不過因為系列標題寫著《30個遊戲程設的錦囊妙計》,如果不寫到Trick 30,好像對不起這個標題,因此今天繼續來和大家分享遊戲製作的心得。
今天借花獻佛,將英國的David Strachan在Github分享的平台遊戲跳躍準則十二點,介紹給大家。
原文與示範遊戲:http://www.davetech.co.uk/gamedevplatformer
遊戲原始碼:https://github.com/DavidStrachan/GM-Perfect-Platforming-Paragon
平台遊戲(Platformer)是遊戲分類中的一個大類別。玩家在側視圖的地圖上,以前進、跳躍、落下等有重力感的操作,在平台之間移動冒險,打怪找寶物。著名的平台遊戲有經典的瑪利歐二代、惡魔城月下夜想曲、銀河戰士等。
By Free Lives Games - Shaz from Free Lives, via email attachment, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=27166309
跳躍能力是左右一個平台遊戲生死的重要機制,如果玩家無法在平台間順暢地冒險,但其他遊戲內容再怎麼豐富、畫面再怎麼細緻,都無法彌平跳躍無能的缺陷。
那麼,什麼樣的跳躍能力是好的?是平台高度差和跳躍最大高度的比例?是飛行時間的多寡?是空中轉向的加速度?
都不是!好的跳躍能力,就是能順從玩家的心願,依照規則想做的事,都可以做到的能力。
那是啥意思?什麼叫想做的都可以做到?
意思就是對於跳躍,要給予玩家最佳的誤差容許範圍。因為平台遊戲中,玩家最常做的事就是在各種平台邊緣進行跳躍的極限測試。如果死死地讓各種極限跳躍,不是成功就是失敗,那麼玩家玩起就會覺得這遊戲卡卡的,跳躍能力有問題。
所以以下講的十二點準則的最高指導原則,就是讓玩家的操縱感不要因為一個像素的差別就決定成功失敗,而要在合理的範圍內,給予玩家最大的福利。
以下就列出Dave認為平台遊戲最重要的十二點跳躍準則。這些準則並不一定適合所有遊戲,但是非常值得設計師細細品味。
讓玩家在跳躍到達拋物線頂端後,降低重力再緩慢回復,讓玩家在空中有充裕的時間可以調整落地的位置。
當然這些調整都是緊縮在幾個幀的範圍,並不是好像背著降落傘的感覺。
當跳躍在到達拋物線頂端前,跳躍按鈕被放開的時候,玩家就應該提早降落。
有了這個機制,製作地板小縫或小型地板機關才有意義。
在玩家落地前的幾幀,如果再次按下跳躍按鈕,那麼遊戲應該要幫助玩家在落地後觸發跳躍,不要因為這兩三幀的誤差,毀了遊戲的操作性。
如果玩家在落地前按下了反方向的前進鈕,那麼在玩家落地時,應該要取消落地時的短暫滑行,讓玩家在比較難的地形上,能夠精準控制落地點。
玩家在兩個較遠的平台之間來回跳躍時,這個準則也可以幫助玩家準確地預測連續跳躍的起跳點。
當玩家在空中朝反向飛回來的時候,給予玩家反向速度加成,讓玩家有辦法回到起跳點的平台。
在移動中的平台上進行跳躍,或是跳去拿空中的寶物時,也需要這個準則來幫助玩家選擇降落的地點。
即使玩家衝出平台邊緣幾個像素開始掉落,應該還是要讓玩家有辦法在那幾幀的範圍內觸發跳躍。
Dave在示範程式中選擇了132毫秒的誤差容許範圍,不過這個值是為了讓規則示範起來更明顯,一般遊戲中可能折半就可以。
如果往很深的懸崖掉落,應該不要讓重力無限加速,而要設定一個最大降落速度,讓玩家有時間觀察地面,並做出反應。
在玩家在空中時,如果腳趾踢到平台邊緣,而且只差一點就可以爬上平台的話,就幫助玩家爬上平台。
有了這個設計,玩家也可以放心在有小縫的平台上飛奔,而不用擔心一點小縫就會掉下去。
當玩家往上跳,想要鑽進天花板的一個洞,那麼請系統自動調整玩家位置,讓玩家不要因為頭撞到一點角落就掉下來。
當玩家跳躍往上的途中,將玩家腳上的碰撞範圍往上提一點,才不會因為腳趾踢到一點平台的角落,就完全停止他往前飛的速度。
如果玩家有辦法可以走得比平時慢,那麼在玩家走到平台邊緣進行偵查,或遊戲希望玩家的注意力不在角色腳上的時候,就可以避免玩家跌落平台,讓玩家專注在遊戲希望他專注的地方。
有很多平台遊戲都有設計這種,可以往上穿越,但掉落時可以踩上去的半固狀平台。玩家也可以按下再跳,往下穿越平台往下跳。
若玩家想要跳上這種平台,在到達跳躍頂端時卻少了幾個像素才能登上平台的話,可以設計多一點容錯範圍,幫助玩家更容易跳上去,因為這種平台的設計本來就不是考驗技術用的。
其實這十二點準則,合起來一句話,就是想辦法幫助玩家前往他們心裏真正想去的地方,減少一個小失誤就造成天堂和地獄的差別待遇。至於遊戲的難度,應該要用更多的關卡設計來實現,而不是讓玩家在那幾幀的動畫差別上鑽牛角尖。
當然,以上講的也不是適用所有遊戲,也許有的遊戲就是想表現出精準的操作才能過關的精神,像是經典的魔界村系列(Ghosts'N Goblins),或是蔚藍山脈(Celeste)等,都需要玩家死過一遍又一遍,慢慢掌握每個關卡需要的操作細節才有辦法通關。
所以,想要製作什麼樣的遊戲,想要讓玩家體驗什麼樣的世界,就只有身為遊戲設計師的你才能夠決定。
三十天的分享結束了,很開心一個月前朋友告訴我iT邦有這個鐵人賽的活動,讓我體驗一次這種密集寫作的經驗。
我選的三十個主題,雖然看起來各自獨立,但其實應該還算有脈絡可尋,希望能一步步帶領同學們,一邊撥開遊戲設計的面紗,一邊認識TypeScript,一邊感受將理論變成現實的快樂。
程式語言是一種工具,可以熟練,可以精進。但遊戲設計不一樣,遊戲設計是摸索,是創造,是沒有止境的深淵(坑)。小哈期待能有更多新血可以加入(跳下去),把腦中劃過的遊戲點子,全部點亮!