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