在一般的角色扮演游戲中,人物的成長是一件相當重要的事,無論是角色扮演游戲或是目前熱門的策略型角色 扮演游戲(簡稱RSLG),這些升級系統都是游戲的一個重要部份。不過在一般的角色扮演游戲中,人物的升級 以及成長卻有著很多種的處理方式。在本文中,筆者將為各位介紹各種角色扮演游戲中常用的升級方式,并且 分析各種作法的優缺點。 在一般的角色扮演游戲中,最常用的升級方式就是亂數式的成長方式。在這種模式中,當一名角色獲得升級的 時候,程式會使用亂數來決定升級的各項指數,也就是說所有的升級數值都不是在控制中,而是依據一個亂數 表來決定提升的數值。這種升級的方式是如何處理的呢? 當人物到達升級的標準時,就會進入處理升級的副程式中,在這個副程式中程式會依設計者所定出的一個亂數 范圍,來計算出這名角色所得到的升級指數,然後將這個數值加到需要增加的屬性上。 在這種亂數決定升級的情況下,玩者所能夠獲得的升級數值,完全是由設計者訂定的范圍中求出,無論是升級 的上限或是下限都是在這個范圍內,絕對不會有意外的情況發生,就算是設計者如何提高上限與下限,都不會 改變這些。這種作法雖然可以讓設計者很輕松的訂出升級的上下限,但是卻不能控制升級時的不利因素,那就 是亂數的成份實在是太高了。若是有一名角色因為運氣不好一直只有獲得下限的升級數值,那麼它可能會比一 個一次就獲得上限升級數值的角色要弱。舉例來說,當這個亂數的范圍是一到五的時候,若是角色甲和角色乙 分別獲得上限和下限的升級數值,那麼會發生以下的狀況: ┏ ┳ ┳ ┓ 角色甲 角色乙 ┣ ╋ ╋ ┫ LV1 10 10 LV2 15 11 LV3 20 12 LV4 25 13 LV5 30 14 LV6 35 15 ┗ ┻ ┻ ┛ 各位看看上表,是不是可以看到角色甲在第二級時的數值就已經和角色乙第六級的數值是相同了。由於亂數式 的升級方式會有這種不公平的情況發生,因此常會使得玩者的努力需要有一些運氣的成份在里面;若是運氣不 好,可能原本的努力都無法發揮所要的功效。 由於亂數式的升級方式有這樣的缺點,因此有兩種不同的改進辦法,首先就是百分比制的升級方式。在這一種 辦法里,角色在升級的時候還是使用亂數來進行,不過在每一個數字的出現比例上卻做了一些調整。例如同樣 的升級的范圍還是從一到五,但是每一個數字的出現比例調整如下: ┏ ┳ ┓ 數值 出現比例 ┣ ╋ ┫ 1 10% 2 20% 3 40% 4 20% 5 10% ┗ ┻ ┛ 各位從上表中可以看到,在這一種處理方式上,每一個數字出現的比例做了一些調整。原本的亂數式中,每一 個數字的出現比例都是相同的,就以上面的例子來說,每個數字出現比例是百分之二時,因此上限和下限的數 值比較容易出現,發生不幸的情況比較多;但是在這樣子調整後,上限和下限的數值出現的機會就減低了不少 ,會發生不幸的情況就降低了。 雖然這樣的作法可以降低不幸的發生機會,但是還是無法完全的克服所有的狀況,因為還是有可能會發生相同 的狀況,使得玩者陷入屬性不佳的情況中。因此另外一種改良的方式~修正值升級方式就這麼出現了。 其實修正值的升級方式和原本的亂數處理法在計算的時候是完全相同的,只不過是它在升級到一個程度的時候 ,會來做一次計算并且取出一個修正值,以免玩者因為運氣不好無法達到升級的功效。 在這種作法上,上半部和亂數式的做法完全相同,唯一的不同是下半部的副程式。而這個副程式的作用就是在 幫一些升級時運氣比較不好的玩者取得一點修正值。 我們就以前面所說的升級的數值是從一到五來做個例子,讓玩者每升五級時就可以取得一點修正值。因此若是 一名角色在五次升級中都只有獲得一點的升級值,那麼目前它的數值就是: 10 + 1 + 1 + 1 + 1 + 1 = 15 不過在我們的升級表內中等的數值是三,因此當角色升了五級之後,應該可以獲得以下的數值: 10 + 3 + 3 + 3 + 3 + 3 = 25 這麼說來這名角色因為前五級的升級運氣不好,因此少獲得了十點的升級指數,所以我們就在這一次把這個缺 少的數值以修正值的方式補足,從修正值的計算式中可以得出: 25 - 15 = 10 就將這個數值加到角色的屬性中,讓角色不會因為運氣太差而有不利的情況。若是角色在升級中都獲得比較高 的數值,那麼修正值就是負的,也就表示不需要有修正值的存在了。 這種作法完全是為了不讓玩者因為升級時運氣不好使得屬性太低,因此只能算是修正部份數值的作法,雖然不 能完全解決亂數式的問題,但是可以將不利的因素降低,因此在某些游戲里的確有采用這樣的作法。 除了亂數式的作法外,還有一種是表列式的升級方式。在這種升級方式中,每一名角色的升級數值都是設計者 已經訂好的,完全不會有任何的變動。它的好處是設計者可以完全掌控所有的升級狀況,但是相對的這樣子的 表格需要占掉較多的程式空間。 舉例來說,某個游戲若是采用這種升級方式,那麼在它的記憶體中就需要有這樣子的升級表格。若是游戲中有 七項屬性會獲得升級,等級共有一百級的變化,那麼基本上它就需要有七百個不同的數值表放在程式中。若是 一個數值用了兩個位元(BYTE),那麼就需要用到1K左右的記憶體。如果說游戲中有四名角色,它們升級情況 又都是不同,那麼占掉的記憶體就將近有5K了。這麼算起來各位可能覺得不會很多,但是當這種資料越來越多 的時候,記憶體的消耗也就越來越多,使得程式的空間也越來越小了。 由於表列式的作法會使得升級的情況比較單調,因此大多數的游戲并不愿意采用這種作法,再加上這一類的作 法對於記憶體的占用空間也比較高,因此如果不是必要,大多數都不會用這種作法。 除了以上這些作法之外,還有一種就是指數型的升級方式。這種作法其實就是表列式的改良,因為它將升級的 表格簡化成一個叁數,在升級的時候就依這個叁數來計算能夠獲得的升級值?,F在我就舉一個例子來示范。目 前有一名角色的屬性以及升級指數如下: o 生命:10 生命指數:10 o 法力:10 法力指數:10 o 力量: 3 力量指數: 2 o 智慧: 2 智慧指數: 2 o 反應: 2 反應指數: 2 o 體能: 4 體能指數: 2 o 運氣: 1 運氣指數: 3 那麼當他獲得升級的時候,程式就會依這個升級指數來計算升到下一級時的各項屬性值。因此在升了一級之後 ,各項屬性的數值就是以下的數字: o 生命:20 o 法力:20 o 力量: 5 o 智慧: 4 o 反應: 4 o 體能: 6 o 運氣: 4 用這種作法,在程式內不需要復雜的升級屬性表,只需要幾個簡單的叁數就可以,若是能將各項叁數之間的關 系加以變化,并作一些運算,那麼可以使升級時的變化更多。舉例來說生命的增加和體能有關,或是法力的增 加和智慧有關,那麼在計算起來時會有比較多的變化,使得整個升級的表現不會太單純。 以上這些作法大部份的變化程度都不會很多,沒有辦法表現出一個人的成長情況。就像我們有時候會形容一個 人「大器晚成」或是說他「小時了了」這樣子的情況都不能表現出來。因此後來又有一種成長曲線的升級方式 。在這種升級方式中,我們首先要訂出幾種不同的升級情況。像是: A. 平衡成長 B. 大器晚成 C. 小時了了 要達成這種效果,我們需要將升級的總等級數分成幾個階段。我們以一個可以升到一百級的游戲來說,將每十 級分成一個區塊,就可以訂出這三種成長情況各要給它多少的數值。 其實這種曲線式的升級方式,在處理上和指數式的作法差不多,只不過指數式的作法一個人物每一種屬性只會 有一個數值,這個數值是不會改變的。但是在曲線式的作法中,會依不同階段有不同的升級指數,才可以造出 不同的成長情況。我們就以一名「大器晚成」的角色來說,這一類的角色在開始成長的比較慢,但是當人物成 長到一個階段後,成長的速度就會加快,因此我們可能在前兩個階段只給他們一點的升級指數,後面幾個階段 再給他們較高的升級指數,使這名角色會在游戲後期升得比較快。 反過來說,若是要設計一名「小時了了」的角色,那麼我們在初期可以給他較高的升級指數,但是到了後期就 要給它較低的指數,如此一來就可以表現出這樣的情況。 事實上,在游樂器中的「光明與黑暗續戰篇」就曾經用過這一種作法,使得游戲中的每個角色都有各自不同的 特色。特別是有些屬於大器晚成的角色,曾經因為初期成長的速度太慢而被玩者拋棄,但是後來知道這名角色 的特性之後,再回過頭來訓練的這種情況,正是這種曲線式升級的特色。這種作法使得角色除了單純的數字屬 性之外,還增加了一些隱藏的特性,會讓游戲更有味道。 如果以筆者個人的喜好來說,我是比較欣賞曲線式的升級方式,因為這種方式比較可以隱藏角色的特色,也不 會因為數字的變化太過單調而讓玩者覺得過死板。比起亂數式的不定性和升級指數式的單純來說,這一種作法 可以說是兼具了兩種的特色,同時還有全新的表現,是一種不錯的升級方式。只惜目前國內的游戲很少使用這 種作法,大多還是采用亂數式的作法,對於國內玩游戲的玩者來說,實在是有些可惜,因為大家沒有辦法體會 到這種作法的優點。 |
原文轉自:http://www.anti-gravitydesign.com