感謝各位讀者五個月來對本專欄的支持,也許是角色扮演遊戲正是許多玩者的最愛,因此討論到遊戲的製作就引來相當大的迴響,許多讀者也來信問到一些相關的問題。因此筆者特別在本月將一些比較重要的問題在這裡作一個詳細的說明,希望各位讀者可以從這裡找到您所需要的答案。
◎有關地圖的構成◎
在前幾個月,筆者曾經和各位提到過地圖構成的方式,那時由於篇幅的關係,因此沒有辦法說得很完整。也因為這個原固,許多讀者寫來問到關於地圖的構成到底該如何著手,因為這正是他們開始製作角色扮演遊戲時所遇到的第一個問題。因此筆者在本月的問題回答中,就先為各位回答這一方面的問題。
在開始說明地圖的構成之前,筆者要先為各位複習一些相關的名詞。就以單純的平面式地圖來說,以下的幾個名詞若是不搞清楚的話是會弄不清楚筆者在後面文章中的解釋。
元素構成的地圖
首先要和各位談到的是元素,凡是拼合型的地圖﹝註一﹞都是使用元素來構成遊戲的地圖。為什麼要這麼作,其實是因為早期電腦的記憶體以及空間有限,在無法運用太多的記憶體的情況下,所發展出一節省使用記憶體的方式。
註一:所謂的拼合型地圖就字面上的意思來看,就是地圖是採用元件拼成的,在原理上和拼圖有些類似,唯一不同就是在拼圖遊戲中每一塊拼圖都不會有相同的,以免導致玩者的混亂。但是在遊戲製作中,卻是要盡量的運用相同的圖素,使得記憶體的佔用能夠越少越好。
各位讀者先回憶一下您玩過的角色扮演遊戲,地圖範圍是不是都大於顯示畫面?﹝雖然也有少部份的角色扮演遊戲由於程式設計師本身的功力問題,無法設計出可供捲動的地圖畫面,而採用單頁捲動的方式,但整個地圖範圍仍然是大於一個畫面﹞我們就以目前常見的VGA 640x480 256色這個解析度來看,若是一張地圖的範圍是三乘三個營幕顯示範圍的大小,若是採用繪製完成的地圖來顯示的話,光是載入全部的地圖資料就需要以下的記憶體大小:
所需的記憶體大小=307200﹝註二﹞x9=2764800 Bytes=2700K Bytes
註二:在VGA 256色的模式中,由於每一個點就需要一個位元來記錄,因此一張640x480 256色圖就需要640x480x1的記憶體。也就是說這樣一張圖需要使用307200位元的記憶體,也就是300K。
用這樣的方式,光是讀取整張地圖的資料,就需要這麼大的空間,以早期PC的硬體架構來說,只有640K的記憶體,要如何才能榨出這麼大的空間?其他的東西都不需要記憶體了嗎?或許此時就會玩家說那麼就不要一次把整個地圖讀進來嘛,要需要的時候再讀就可以了,不過各位不要忘了您是在玩角色扮演遊戲,若是每走一個畫面就要讀資料,不是會使得遊戲的節奏受到影響嗎?
既然連3x3個畫面大小的地圖都讀不進來,那麼若是地圖的範為更大的時候要怎麼辦呢?總不能說要求使用者都有個好幾M的記憶體吧?﹝當然,到了現在,每個人的電腦為了能應付Windows 95這個可怕的惡魔,沒有個十幾二十M是不可能的,但這總不是解決之道﹞為了要解決這個問題,就請各位先思考一下,是不是真的要用整張的圖片來作為地圖呢?難道說地圖上沒有重複的地區嗎?有沒有什麼辦法可以省下這些重複的地點呢?由於這一連串的思考,就有了拼合型的地圖組合方式了。
元素大小的制定
好了,現在我們已經知道在製作角色扮演遊戲時不太可能利用整張繪製完成的圖來作為遊戲的地圖,因此我們要將地圖切割為一個一個的元素,以節省記憶體的使用。就再拿剛才所舉的640x480這個尺寸為例,若是我們要將它割為16x16的大小,那麼640x480就成為40x30=1200個16x16的小元素了。在這個時候,由於還沒有進行比對,尚未將重複的元素刪除,因此在記憶體的佔用上和原來是一樣的,不過在這1200個小元素中若是有一半市重複的,所需要佔用的記憶體就少了一半,若是重複率再高一點,不是就可以節省更多的記憶體了嗎?
那麼元素的尺寸是如何決定的呢?這就要看每個遊戲的需求而自行決定了。像在一小角色扮演遊戲中,由於地圖的捲動單位是一個元素,因此地圖的尺寸定的越小,在地圖捲動時就可以有更流暢的效果。但也不是把元素的尺寸縮得越小越好,因為這樣作只會增加遊戲在處理資料檔時的困難度。為什麼筆者會這樣說,請看以下的說明。
在我們採用元素的方式來構成地圖之後,由於地圖上的許多區塊是共用的,因此需要另外建立一組資料來些元素的排列順序,這個排列順序的資料列,我們通常都將之稱為地圖資料。就以上面這個例子來說,我們就需要建立一個40x30的矩陣裡面就記錄著每個位置是採用那一個元素。因此當元素的尺寸縮小的時候,這個矩陣相對的就要變大,才能夠構成相同大小的地圖。若是地圖元素縮小到8x8的時候,矩陣就要相對的變成80x60=4800,也就是說地圖元素每縮小四分之一,地圖資料相對的就要增加四倍。所以若是為了沒有意義的原因縮小地圖元素,只會造成製作時的困擾。
如何切割地圖元素
那麼在遊戲製作中要如何去切割地圖元素呢?若是使用8x8的地圖尺寸,總不可能真的是在8x8的方格中作畫吧。當然在遊戲製作的時候,是不會用這麼沒有效率的作法,通常都是採用先繪製再進行切割的方式,就是遇到比元素尺寸要大的物件時,先繪製完成後再以這個尺寸來進行切割為正確的尺寸,如此就可以順利的完成所有的地圖元素。
當然這樣的作法並不是最好的,若是要以便利性來說,能夠使用程式來進行地圖元素切割的工作才是最好的。筆者就曾經看過一個程式,在執行之後會自動的將整張地圖切割為一塊一塊元素的大小,然後再加以比對,刪除掉重複的元素,最後再計算出總共還有多少個元素是沒有重複的。在這個程式的計算下,製作者可以花最少的心力來完成目標,同時也可以在最精簡的方式下計算出元素的數量。
佔用的記憶體
至於為什麼要計算出元素的數量呢?其實也就是要控制佔用記憶體的數量。因為不論在那種機器上,記憶體的管理都是遊戲設計的一大課題。由於程式在規劃各種部份的時候,要瞭解地圖元素要佔用多少的記憶體,因此若是記憶體佔用的數量無法計算出來,可能在遊戲進行就會發生無法估計的狀況。就以前面我們所舉的例子來說,若是採用16x16的地圖元素,最後在計算後共有400個不同的地圖元素,那麼佔用的記憶體如下:
佔用的記憶體 = 16x16x400 = 102400Bytes = 100K
若是以這個數值做為標準,那麼之後的其餘地圖就不要超過這個數量,如此一來在程式撰寫時也就較容易控制。
筆者也提過,光是一張640x480 256色全頁的地圖,需要佔用300K的記憶體,因此在我們這樣切割元素後,在圖素上就只需要300K的記憶體。相比之下如此的作法不是比較經濟嗎?
那麼是不是只有地圖元素會佔用記憶體呢?其實各位若是仔細的看看前面的說明,就會發現到筆者曾經提過一個地圖資料,這些資料也必需要規屬於這一部份,也就是說隨著地圖的大小會隨之變化的資料在這裡都要算在一起。這些資料所佔用的記憶體,就是整個遊戲中地圖資料所需要的記憶體空間。
貼圖的問題
有讀者來信問到,筆者在七月的專欄中曾經提到一個貼圖遮罩的問題,對於這樣的一個專有名詞,他無法瞭解正確的狀況是怎樣的,因此筆者就再對這一點來做個詳細的說明。
平面與立體
現在就讓各們隨便找個角色扮演遊戲吧,把遊戲中的地面看做是一個平面,而上面的所有物件﹝無論是人物、樹木、建築等等﹞都看作是物件,這些物件依其所在的位置不同而排列在遠近不同的地點上。雖然從透視圖的觀點來看應該是遠的東西比較小;近的東西比較大,但是現在就請各位先把透視圖的觀點放到一旁,只要去考慮遠近的問題。因此在不作任何處理的情況下,若是想單純的靠貼圖來形成這種效果的話,是不是就必需要遠至近一一將物件排上,如此一來近的東西自然就會把遠方的東西蓋住,形成了所謂的遮罩,而這也就是遊戲中用來造成遮罩的辦法。
四十五度角
在另外一種遊戲模式~四十五度角中,由於顯示的角度不同,因此常會造成視覺上的不同。不過在原理上,這種視角想要造成遮罩也是遵循著『由遠至近』的這個不變的法則。
◎訊息中的控制碼◎
有朋友來信問到,在一般的角色扮演遊戲中都有許多的訊息,可是某些遊戲的訊息顯示得很不人性化。不是斷行斷得亂七八糟,就是遊戲中因為顯示訊息的區塊太小而導致玩者在看訊息的時候相當的辛苦。但是在某些日本遊樂器的遊戲裡,卻看到人物在談話的時候不但斷句斷得恰當,就連訊息顯示的時候都還有語氣的感覺,因此想問筆者這是怎麼作到的?
筆者就在這裡舉一個小小的例子來說明好了,在一般的角色扮演遊戲中,由於不希望訊息整個蓋住了營幕,因此大多是使用一個所謂的訊息視窗﹝註三﹞來顯示遊戲中的交談訊息。由於早期遊戲的解析度並不高﹝註四﹞,因此無法一次就將遊戲的訊息顯示完畢得情況就常可以看到。通常在這種情況下所採用的辦法就是顯示到顯示空間完畢,然後出現一個符號要玩者按鍵來切頁。由於企劃在編整遊戲訊息的時候並不會依這個顯示視窗的大小來調整,或是真要調整也不是那麼方便,因此常會發生一句話講到一半的時候碰到換頁,或是換頁後只剩下一個標點符號的情況。
註三:這裡所謂的訊息視窗,並不表示一定會有一個看得到的視窗,在有些遊戲裡,這裡所指的視窗可能只是一塊變色的區域,或是某塊用來顯示訊息的地區。
註四:一直到最近,還是有許多使用320x200這個解析度的遊戲。這個解析度在記憶體的佔用以及顏色的顯示上,比起日本常用的640x400 16色方便,因此長期以來許多的遊戲公司都是在這個顯示模式下進行遊戲的設計。不過由於解析度較低,相對的也使得遊戲中文字顯得特別的大。英文最大不過是8x8而已,但是中文字是卻足足大了四倍的16x16,因此在有限的顯示空間中,常常無法將所有的對話訊息顯示完畢。
由於許多遊戲在顯示訊息的地方是用計算顯示數量來決定是否要換頁,因此碰到以上的這兩種狀況時,就必需要用其他的方式來解決。至於解決這些問題其實也很簡單,就是在遊戲的訊息中加入各種控制碼,讓顯示訊息的程式認識這些控制碼,然後會作出相對的動作。例如說我們訂定^P為換頁控制碼,那麼當程式顯示訊息時遇到這個控制碼時,就不再計算顯示的字數,直接執行換頁的動作,如此一來荒謬的斷句問題不就解決了嗎?
至於語氣的問題其實也很簡單,方法和換頁的作法類似,只要加上一個延遲訊息的控制碼,例如我們可以用︿d???來表示要延遲百分之多少秒,數字越大顯示的速度會越來越慢,因此若是有一句訊息如下:
「對︿d20‧‧‧不︿d40‧‧‧起︿d60‧‧‧‧‧‧」︿0
那麼當程式在顯示這一句訊息的時候,字的出現速度就會越來越慢,就好像一個快死的人的說話情況,使得這一句話有著語氣的表現。這樣的作法,可以使遊戲中的訊息更有特色,當然相對的也使得遊戲的企劃在編整訊息對話的時候更加的辛苦。喔,對了。在這句訊息結束後,記得要加一個讓訊息顯示速度恢復的控制碼,這樣子才不會出人命喔。
既然可以有語氣,那麼控制碼就可以有更活的運用方式。像是可以用來變換訊息的顯示顏色啦,插入不同的圖像、加入語音、效果、或是改變背景音樂等等,都是使用控制碼的應用方式。有了這種作法,要使得遊戲的訊息變得具有特色就不是很難了。
◎遊戲創作的開始◎
在本專欄的第一個月時,筆者曾經提出過一個公式:
自己喜歡的遊戲=自己想完成的遊戲≠玩家想玩的遊戲
有讀者問到,如何才能找出一個受到玩者喜歡的遊戲呢?事實上筆者曾經提出過一個不錯的例子,請各位讀者先看看目前的遊戲軟體界﹝不論歐美或是日本﹞,是不是也有許多從模仿出身的優良軟體公司﹖最好的例子就是以《魔獸爭霸》成名的Blizzard公司。該公司正是掛名的第一套遊戲軟體是《黑暗王座》。這個遊戲無論怎麼看都有些像《波斯王子》和《大反擊》這兩個遊戲。除了在動作上的有些類似之外,就連遊戲的進行方式都有些相同。不過該遊戲解謎的過程上略有加強,玩者必需要找尋各式各樣的道具來協助遊戲的進行。而讓該公司一砲而紅的《魔獸爭霸》,更是在任何方面都有《沙丘魔堡2》的影子。
在一次CES 展覽會場上,筆者曾經當面問過該公司的成員,他們在進行一個遊戲的開發時,是如何決定要設計怎麼樣的一款遊戲。該公司的副總裁則是很乾脆的回答「因為我們都喜歡這樣的遊戲,所以就想要製作一個類似的遊戲。」這樣的回答,不是正符合了筆者的理論嗎﹖而看看目前Blizzard在遊戲界的表現,有沒有人會因為他們出身於模仿而看輕他們呢﹖所以筆者才說只要能夠將模仿的部份好好的吸收,再加上自己獨特的創意,那麼就算你是設計一個有些類似的遊戲,也是可以走出自己的一片天。
某次和朋友的聚會中,筆者曾經和友人討論到這個問題。當時有位朋友表示「若是一個遊戲百分之百和另一個遊戲相同,那麼我們可以說它是抄襲;但是當相同的比例降到一個百分比之下的時候,我們就只能說它是的模仿了。」而另一位朋友說得更是明白,他說「一成不變的學習,那叫做抄襲;只有吸收了原本的知識並加以消化,重新做出來的東西才能叫做模仿。」筆者認為,模仿正是踏入創新的開始,只有懂得模仿的人,才有可能設計出新的東西。
也許有人對於模仿這個名詞有些敏感,總認為這麼作很丟臉。但是請各位想想看,在遊戲界中有多少遊戲是原創的呢?要知道一款原創的遊戲絕對不是坐在那邊幾天,或是一群人固定花個幾小時來開會就可以想得出來的,有時候點子來自完全想像不到的地方,也許是在坐車的時候、也許是喜澡的時候,常常點子都是出現在你不是那麼專心在想的時候。
既然原創的點子這麼難出現,那麼設計遊戲的人要怎麼辦呢?難到就這麼坐在那邊等死嗎?當然不了,身為設計遊戲的人,自然該多多接觸遊戲,看看別人是怎麼做的,看看別人做的東西有什麼優點;有什麼缺點,從其他遊戲中吸取經驗,才是最正確的作法。
當然啦,所謂的學習和抄襲自然是不一樣的。就以這兩年之內很紅的《仙劍奇俠傳》這款遊戲來說,由於賣得不錯,因此許多公司也開發了類似的產品,像是什麼《江湖○○傳》、《神劍○○傳》等等的遊戲。可是這些公司有沒有去研究為什麼仙劍會賣得好呢?難到就憑著遊戲的畫面就可以賣得很好嗎?還是說遊戲的介面設計得差不多就會賣得好嗎?就筆者的眼光來看,仙劍這款遊戲的確有其出色的地方,但是更重要的是它抓住了玩者期待遊戲的這股風潮,同時在那時候該遊戲的確也有著相當出色的表現,加上大宇公司多年來的表現,才有著如此的銷售數量。至於一些模仿的遊戲呢?也許其餘的幾點都作到了,但是在非大宇所出以及失了先機的這個情況下,就算是能夠有著仙劍一般的表現,也由於沒有特殊的地方而相形失色。
說到這裡筆者還是免不了要發一些勞騷了。自從仙劍裡面搞了個女主角死亡的情節之後,許多的遊戲都免不了來這麼一套,好像遊戲中女主角不出點意外或是死於非命就不行;不然就是遊戲中一定要搞個多角戀愛﹝管它兩男一女或是兩女一男﹞,把遊戲的情節弄得都像是八點檔的三台連續劇似的。如果說情節合理的話也就算了,偏偏一些遊戲又只學到皮毛,男女主角相遇沒有多久就莫名其妙的陷入情網,或是不知道為什麼他就是要喜歡她,不合理的戀愛或是死亡情節成為遊戲的重點,把真正角色扮演遊戲對於人物個性營造的這個重點都遺忘了,使得遊戲中的角色個個都像是路人甲、路人乙一般的普通角色,完全失去了角色扮演的真諦,實在是讓筆者這個多年的角色扮演玩者看得很心痛。
好了,如何企劃一個角色扮演遊戲到了本月份終於到了一個階段了。下個月,本專欄又要開始介紹新的話題了,就請各位讀者下月多多支持。
(1997.10 發表於電腦玩家雜誌)
銀狐 Silver Fox。一個在遊戲業打滾30年的老頭,現在則是半退休狀態的說書人。有空喜歡玩玩遊戲,談談遊戲產業的事。喜歡出國旅遊,四處吃吃美食增加體重和膽固醇,當當兼職的遊戲顧問、做遊戲的評測,玩一玩自己有興趣的遊戲。
你好,這篇文章當中的內容重覆了兩次唷!
謝謝通知, 已經修正了。