隨機性的樂趣:這些經典大作都是如何做隨機生成的?
對於一款遊戲而言,加入隨機性意味著可重複性的提高,不管是攻擊傷害、資源產出還是地圖生成,每次看到不一樣的結果總可以給玩家帶來新鮮感。
但是,如果做不好,隨機性也可以給遊戲帶來負面影響,如果遊戲里很多事情的隨機性太高,則會讓很多不那麼有耐心的玩家覺得投入的時間都是浪費,因為「非酋」再怎麼努力也是趕不上「歐皇」的,比如因為開箱子和抽卡,不少作品都被人戲稱為「看臉的遊戲」。
在遊戲行業,實際上真正完全隨機的遊戲是極罕見的,當我們搖骰子的時候,離手之後實際上就不再是我們所能夠控制的,當它落到桌子上之後,,你也不知道什麼時候會停下來。那麼,遊戲里的隨機性該怎麼做才不會出錯呢?我們不妨看看一下這三款經典遊戲的範例:
《最終幻想1》:從預生成的數字當中按順序讀取
原版的《最終幻想》和Square早期的很多Famicom遊戲,都是由Nasir Gebelli寫的程序,他本人也是Apple Ⅱ計算器時代的程序大牛,所以,處理遊戲當中的隨機性,也是他在寫代碼的時候需要處理的問題。
其中一個案例就是角色走路的時候碰到遭遇戰,這些遭遇戰大多數都是由存儲在ROM里的預製表格完成的,該表格有256個數值,玩家每走一步都會更新指數,這是數字會指向一個臨界值,如果存儲的數值低於臨界值,遭遇戰就會生成。
本質上來說,這個系統其實就是一個隨機數字的列表,然後重複使用,當系統重置的時候,玩家的位置指數也會重置。
這並不是原版《最終幻想》唯一的的隨機系統,在戰鬥期間,當需要搖骰子的時候,類似的系統就會被調用,而且使用的也是一個256數值的隨機系統,只不過這個系統是按順序讀取的,與遭遇戰生成指數不同的是,這個隨機系統是存儲在有電池的RAM里,這就意味著當你重新載入遊戲的時候,就可以在同一個區域遇到,而且會是同一批敵人。
有趣的是,雖然這個隨機生成器存儲在RAM里,但卻並不會包含在玩家的存檔之中。
在一款RPG遊戲里,你必須對隨機數字慎之又慎,因為當他們摸清了隨機生成的規律之後,再加入遭遇戰就失去了意義,對於休閑玩家而言,《最終幻想1》的隨機性是很難猜測的,但是,如果隨機的結果里,有玩家們完全打不過的戰鬥該怎麼辦呢?
比如在遊戲的一個房間里有個叫做Warmech的boss,它出現在遭遇戰概率很高的房間里,但它只出現在第八組中,而需要出發這個遭遇戰只會被3個數值觸發,所以就意味著在256場戰鬥中,你遭遇到Warmech的概率只有3次
《超級馬里奧64》:線性同餘生成器(Linear Congruential Generator)
偽隨機數字的做法是很受歡迎的,因為這意味著在被執行的時候,它們不會對遊戲帶來破壞性的影響,這就是線性同餘生成器。
你首先從一個種子數值開始,然後通過基本的演算法操作獲得一個結果數值,它在返回數值的同時可以當作下一個種子數值,比如《超級馬里奧64》就是用了這種方法,它的演算法是在65114個數值之後才開始循環,由於該生成器只有65114種可能,所以如果不是必要情況,是不會加入隨機性的,所以只有在需要出現隨機性的時候,才會調用。
《口袋妖怪翡翠》:隨機種子數值決定成長屬性
《最終幻想》的隨機生成器可以決定玩家們何時何地遭遇敵人,但卻需要大量的工作才能搞定,《馬里奧64》的生成器可以影響金幣產出和敵人行為,但卻沒有對遊戲體驗帶來破壞。《口袋妖怪》的隨機生成器則前兩者都不同。
當一個妖怪誕生的時候,一些數值在很長時間裡都是對玩家隱藏的,但卻可以對他們產生長期影響,由於口袋妖怪可以在玩家們之間相互交易,如果玩家可以掌握這種隨機性,那麼對很多人的遊戲體驗都會帶來災難性的影響。
所以在該系列的最新遊戲當中,開發者把偽隨機數字做的更加複雜,由於該遊戲非常受歡迎,甚至不少人專門研究如何掌握遊戲的隨機性,他們這麼做是希望得到酷炫的妖怪,雖然沒有很高的戰鬥力,但卻是非常稀有的,由於該遊戲的隨機生成器是通過種子數值獲得的,因此因此在特定的位置可以決定妖怪的屬性是否稀有。
※「頭騰大戰」再升級,繼遊戲發行後今日頭條進軍遊戲直播
※征途嘉年華!史玉柱發布遊戲史上「最難任務」
TAG:GameLook |