如何製作電腦遊戲 資料來源: 網易虛擬社區北京站 http://bj.netease.com 以下文章使用 :
![](http://www.netvigator.com/search/images/logo.gif)
http://www.netvigator.com/search/translate.html
Netvigator GB/BIG5 Converter 網上行繁、簡體轉碼,如有詞義不達之處請包涵! 游戲制作的主要流程 電腦游戲開發小組中的任何一個人(這個角色通常有策劃擔任),只要有了一個新的想法 或念頭,就孕育著一個新游戲的誕生。在這個創意被充分討論之後,再加上對其操作過程的趣味性及市場銷售的可行性的預測等因素的準確判斷,一個完整的策劃方案才可能產生。在經過充分的討論後,策劃人員必須將討論的重點寫成文字,也就是提出完整的策劃方案,經決策者同意認可後,才能進下一步的工作。這份策劃方案就像一部電影的劇本,它必須完整地涵蓋整個游戲的故事、流程、內容、方式、游戲畫面、角色造型、 場景規劃、人工智能、硬件配備、市場評估等。對整個游戲過程的詳細描述及實施規劃都應 記錄在案。 當進入創作過程之後,策劃還必須隨時和美術設計師和程序設計員保持聯系,以免游戲程序的編寫失控。策劃應能對游戲設置的內容與精神了如指掌,與各個小組及時溝通,並且控制整個游戲制作的進程。 游戲設計基本論 要設計一個游戲,首先你必須要確定幾個重要方針,第一是你要設計的游戲是屬於那一種類型,第二是時代背景,第三是模式,第四是程式技術,第五是表現手法,第六是市場定位,第七是研發時間,在掌握上述七個方針之後,你就可以再做詳細的規劃內容及調配資源,那麼何謂是七項方針呢? 筆者以範例來說明之!
一、類型:
所謂的類型是指這個游戲所著眼的一個游戲方式,通過這個方式來使玩者達到娛樂的目的,這個游戲方式有專有名詞來各別予以命名,茲如下述: (1) RGP角色扮演:
這個類型的游戲以通過故事劇情牽引來使玩家能溶入主角所存在的一個世界,這類型態的游戲多半透過戰鬥升級系統及人物對話的方式來一步步完成設計者所布下的劇情路線,最具代表的作品有日本史克威爾所設計的 "太空戰士系列" 及國內大宇資訊所設計的"仙劍奇俠傳",當然還有很多部作品例如"神奇傳說"等也是此中的佼佼者。
在RGP的類型中,在近幾年來又分支了幾個類似的型態,例如說Blizzard的"暗黑破壞神"Dirblo"被定位為"動作RPG",因其動作成分相當高所至,而"神奇傳說"、"超時空英雄傳說"則被定位盡"戰略RPG",只因戰略成分比重較高所以又有別於傳統RPG。 (2) SLG戰略:
談起戰略游戲,大家最耳熟能詳的應是日本光榮公司所出品的"三個系列",KOEI的三國志風靡東亞,從一代進化到現階段的六代皆為玩家們所津津樂道,而所謂的戰略游戲則是透過經營→戰爭→擴大領土三個手段來蠃得游戲最終目標,一般而言動態成分少,最較偏重於花費腦力的游戲,但從WestWood的新型態戰略游戲"沙坵魔堡"問世之後,戰略游戲也有了重大的分野,一是以KOEI代表的三國志系列被稱為回合制戰略游戲,一是以WestWood代表的C&C及Blizzard所代表的魔獸爭霸被稱為即時制戰略游戲,和回合制所不同的是,即時制擁有較多可由玩家與電腦互動的機會,比較不花費腦力,所進行的 方式是建設→生產→攻擊→殲滅,在業界有句俏皮話是這樣說的:「玩回合制游戲像是自己當了個大將軍(元首),運籌帷幄決勝千裡之外,而玩即時制游戲則像是個士官長(部隊指揮官),只能一味的打打殺殺」由此你可以了解到這兩個型態的異同的了。 (3) ACT動作:
所謂的動作游戲其實就完全靠玩家的反應來做過關的條件,較有名的像DOOM、古墓奇兵、QUAKEⅡ 等,在動作游戲中也分支了相當多的類型,例如快打旋風、鐵拳Ⅲ等被定位為格鬥型態,主要游戲方式就是二人到四人互相對打一直到分出勝負為止,而DOOM、古墓奇兵則被定位為3D動作冒險游戲,主要目的為殺敵闖關,再來像阿比逃亡記、黑暗之心被定位為橫向卷軸游戲,游戲方式就是以攻擊跳躍等動作來走過一連串的關卡,表現方式多為2D卷動畫面的方式在進行,再如飛龍騎士、極上瘋狂大射擊則被定為動作射擊游戲,游戲方式就是閃躲射擊衝過火網進而殲滅守關魔王為止,這些分支型態有共 通特點卻又那樣的不同,這也是動作游戲吸引人的重要原因。 (4) PZL益智:
這類型的游戲以趣味性的思考為游戲的主軸,內容可以包羅萬,思維模式也可朝物理性及邏輯性方向著眼,具代表性的是大宇資訊的"台灣十六張麻將"、"大富翁"、"倉庫番"等,而棋盤式的思考方式著名的有"決戰中國象棋"及光譜資訊的"五子棋大師"等,這些游戲入手容易且不分男女老少皆喜歡的特性,使得益智型態的開發較有市場,成本也較低。 (5) ADV冒險:
冒險游戲的內涵多半脫離不了解謎的成分,是的!這類型的游戲讓玩家抽絲剖繭的找出設在游戲背後暗藏的謎底,以順利完成游戲,具代表作有惡靈古堡、異星搜奇、幽魂等,這類型的游戲年齡層較高,比較不適合國內廠商來研發。
當你在構思一個新的游戲企劃時即應預先想的所屬意的類型,然後才進行下一步的計劃,一般而言國內市場接受度最高的莫過於 RPG角色扮演類型,這也是為何國內廠商會如此的大力研發RPG型態的游戲。 二、時代背景:
對於游戲美術來說是一個很重要的方針,因為決定一個時代背景所意味的是資料的搜尋工作方便與否,與美術人員在制定造形時需依據的範例﹔以國內市場來說多半能接受中國古代時代背景,基本上時代背景有好幾種,例如說WestWood的紅色警戒架構在公元2000年左右的未來,而魔獸爭霸則定在虛幻的歐洲中古世紀中,三國志定位在漢朝末年,星海爭霸架構在外太空世界,軒轅劍則定在春秋戰國時代等。
時代背景絕對是企劃人員在第一階段規劃整個游戲時已先決定好了,如此美術人員才能放心的去搜集資料。 三、模式:
當決定好類型及時代背景之後,再來就開始要去構思游戲中所要呈現的模式,如假設你的背景訂在古代中國,而類型是定為即時戰略,這時你必去思考出游戲內容的進行方式,可能你的游戲需要生產的因素,這個因素是什麼? 可以是糧食、礦產及木材,也可以是火山能源、石油、太陽能或天然氣等,隨著你故事情節上的需要而去制定項目,在作戰方式上你所設計的模式可能會去考慮到地形因素、天候因素及資源因素,而且會大量運用到各種戰術及攻擊方法等,因為如此所以同一種類型的游戲雖多,但模式上卻各有特色各有偏重的游戲路線,也各自聚集了擁護者,這就是模式設定的一個重要性,切記千萬不可去抄襲他人所定的模式,因為這樣一來,當你所設計的游戲完成之後,眼尖的玩家們會把你的產品以過時抄襲為由而棄如敝履,這在這劇烈競爭的國內市場而言是無法存活太久的。 四、程式技術:
無論你對一個游戲想得多好,架構設計多龐大,如果程式人員本身的技術無法配合的話,那其實一切還是流於空談,所以在設計一個游戲之前必要先去徵詢程式人員的意見,在現在這個環境中不僅程式人員要會Windows98及Wi-ndows NT相關技術,一個完整的系統分析及系統規劃是不可缺少的,如此可以避免掉在程式中不可預期的錯誤出現,而且在一個游戲設計中最好有二個程式人員在運作,一個負責內部程式 (游戲核心引擎) ,一個負責外部程式(介面程式),這樣方可發揮完整的戰力。 五、表現手法:
在這個環節中,企劃人員、程式人員、美術人員要做完善的溝通及討論,一般我們知道大部份的電腦游戲是256 色的系統,在這些游戲中對於色盤的控制有相當嚴苛的要求,為了達到最好的視覺效果,美術人員通常會向程式人員要求多重色盤的資源,而程式人員則會考量到切換時的狀況及記憶體配置是否能完全充份,在系統上的問題確定之後,企劃人員會提出呈現效果的建議,例如說爆炸效果的表現方式,由內而外擴張到消失的火焰激烈型或包容大量煙霧的燃燒型,這要由企劃人員依故事內容來給予定義,同時以物理性邏輯給予美術人員一個建議,再由美術人員前去繪制。
還有一個例子,以"C&C之紅色警戒"與"AGO Empir世紀帝國"的海岸來說明,在"AGO Empir 世紀帝國"的海岸表現是靜止的,海水不會流動,最多只有魚在海中央跳躍,而"C&C"之紅色警戒"的海岸表現手法是會流動的,但海中沒有任何的特異之處,這兩種表現手法各有各的好處及考量,但以筆者而言仍較偏愛"C&C之紅色警戒"。
游戲內容的表現手法通常伴隨著同類型游戲間的相異處而有不同的評價及支持者,而不光是美術效果的表現手法,企劃人員構思的游戲玩法及程式人員的程式表現都有密切的關系。 六、市場定位:
不論你所設計的游戲構想如何的好,如果你沒有去清楚的定位出你的市場走向,那麼到時制作完成的游戲軟體可能會面臨到銷售不佳的窘狀,所以在設計游戲之前你得知道你所定位的族群在那裡,從下表中你可作一個市場定位的三考:
年齡層 教育程度適合的類型內容
7~12歲 國小動作、益智較多趣味性、教學性
13~18歲 國中、高中動作、益智、 較多思考性質、圖形精美化同 角色扮演、戰略時又較多反射
19歲以上 低知識水平益智、動作較暴力及冒險、趣味性質,操 作簡單
19~30歲 大專、大學以上角色扮演、戰略富含多重思維性,可以影射周 、冒險、模擬、 遭事物,解謎及創造性運動 七、研發時間:
這是企劃人員在初步規劃中的最後一個項目,針對上述的制作方針你必須對美術人員及程式人員安排一個完整的SCHEDULE,從這個SCHEDULE中去研判律發時間,從企劃的角度來說,為了不使良好的點子被其他游戲公司搶先推出,同時也要避免推出後模式已落伍,一個游戲的研發最好在一年內,最多不可超過18個月,以成本控制的角度來說比較符合獲利標準。
假設你規劃這個游戲需要一年的時間,那麼你就要去區分出美術制作時間 (第一線)及程式制作時(第二線)間的差異,並考量推出DEMO 版及游戲完成的時間,在適當時機打出游戲知名度,為游戲銷售上打下一記商機。 制作流程
一個游戲的制作如果不能充份控制整個作業程序,那即有delay 的危險,大家都知道游戲軟體delay對於銷售上的影響會有多大,所以如何盡量避免de-lay是每個游戲設計者應極力去避免的,而要去避免游戲開發作業上delay的情況最重要的是嚴密控管作業流程及計劃表。
那麼究竟游戲制作流程是一個什麼樣的情形呢? 首先企劃人員在執行制作的前一個月即要定出企劃大綱及搜集可用資源,並經程式人員及美術人員確認後開始執行,我們以一個即時戰略的游戲來說明,在制作分期程式人員即投入地圖編輯器的撰寫,而地圖編輯器的邏輯設定要由企劃人員先期規劃,然後程式人員才根據企劃人員的規劃而進行程式寫作。
在此同一時期美術人員即開始分工合作,一般一個游戲工作小組會有四位美術人員,他們分別負責造形、人物動作、介面、地圖四個部分來制作,但這只粗分法,國內游戲公司較常使用這樣的組合,在國外美術人員分為造形、人物動作、介面、地圖、片頭、過場、後制分鏡、場景等九大部份,每個部份皆可能都有二人以上在作業,並有一名監制在執行風格及水準的品質控管,這些人統一由後制人員來與程式人員做交圖及配合修圖等溝通上的交流,所以說後制作美術人員的成敗實關系到整個游戲品質的高低。
由於程式人員在設計地圖編輯器時需要利用到一些圖素來做測試,所以地圖圖素設計人員要先一步繪制出程式人員所需要的圖素,
在程式人員測試通過之後方可進入大量生產的階段,由於地圖編輯器的設計者多半直接負責游戲引擎的制作,所以在初期企劃人員便開始著手人工智慧AI的邏輯判斷作詳細的敘述,以期在程式人員撰寫地圖編輯器之後能立即作人工智慧AI的撰寫,而在此同時負責撰寫介面的程式人員亦與負責介面設計的美術人員作密切的配合,開始著手制作各個介面,因為介面不僅在游戲中是一個主司控制整個游戲的操作盤,同時也是一個游戲的外觀,一個擁有優良創意的介面是很受 玩家喜歡的。 在測試地圖編輯器時,程式人員亦需要利用移動物件(人)來測試地圖上的障礙物判斷及最短路徑搜尋法,所以設計人物動作的美術人員在此時要先去做出一組人物動作供程式人員作測試,待程式人員把地圖編輯器制作出來之後,人物動作設計的美術人員則只要不斷的做並不斷的把圖給程式人員即可。 游戲設計十誡律 Travis S. Casey 1. 編寫你所喜愛的游戲
不要人雲亦雲。只要你和你的朋友喜愛就可以了。 同樣道理,不要編寫某個游戲主題僅僅因為它當前流行而已。編寫你所喜歡的題材, 這樣才能激發你的熱情。 2. 經驗是最好的老師
學習游戲編程最好的方法就是閱讀大量的游戲程序。玩和分析這些游戲,然後設計 你自己的游戲或擴展游戲。我最主要的經驗都是角色扮演類游戲,我的許多游戲範 例也來自它們,但思路卻適用於所有類型的游戲。 我閱讀過大量的RPG類游戲,粗略算算大約有七十多個。其中大部份我都玩過,精 通四十多個。不但玩和精通這些游戲,我還分析它們。是什麼使得這些游戲好或者 不好﹖我如何修改它﹖哪些部份表現的出色﹖哪些部份不盡人意﹖為什麼﹖ 玩和分析過其它游戲後,我把這些知識用於我自己的游戲。比如在“超級英雄”類 游戲中,“鬥士”和“英雄”在使用了“指數特性的換算法”取得較好的效果。如 果我想設計“超級英雄”類游戲時,我就知道“指數換算法”很可取。這樣的分析 能給你許多被驗證過的思想用於你的工作中。 3. 測試、測試、再測試
測試你的游戲,盡可能多次的玩。最好當你不在場的情況下,讓別人來玩,過後再 告訴他們。(讓別人當你不在的時候玩游戲稱為:“盲測”) 還有,推敲你的規則。考慮假設情況,解決概率復雜性。比如,如果你正在設計一 個RPG,試著找出平均人們用弓箭從一米、五米、十米、五十米和百米範圍內射中 人形大小目標的百分機率。對於二戰游戲,檢測你的監視器和解決一個小步兵摧毀 一輛坦克的機率。反復計算在不同的條件下,如:不同的地形、夜間等等。這將有 助於你找到在數學中出錯的地方或建立了一個不好的假設。 4.學習背景知識
如果你想編一個中世紀的神奇游戲,就要去讀中世紀的文學和歷史。讀有關魔法的 書及現有的中世紀傳奇游戲。對其它類型的游戲也是如此,如果你想做一個越南戰 爭的游戲,就應去讀有關戰爭的正史及野史,特別是戰略、戰術的分析。 所有的背景知識可以用於幾種途徑:首先,能幫助你創造出逼真的角色。另外它能 減少你在術語及背景知識方面,出現重大錯誤的可能性。當然,資料應該本身就很 有趣。如果對於所要學的都不感興趣,那為什麼還要編寫這方面的游戲呢﹖ 5. 正規教育
選一門介紹概率和統計的課。試著讀一些游戲方面的數學理論。你可能覺得那沒什 麼用,但它能幫助透視算法的掌握。斟酌你的英語(或其它你發表游戲所用的語言) 當游戲描寫得好的時侯,就更容易學,至少不能有大量的語法錯誤。 如果你想制作電腦游戲而沒上過任何編程課時,不妨學幾門。你可能學不到什麼編 程序的具體東西,但一門好的課程可以教會你如何組織程序使之更容易維護和發現 錯誤。 建立一個“參考文獻庫”,它是一系列和你所制作游戲工程相關的游戲、書籍資料。 當你清晨三點突發靈感而圖書館卻已關門的時侯,它將是非常有用的。 6. 抽取些時間
一個游戲就像孩子,當它剛出生時,它的父母總認為它是完美的。從你的游戲中抽 出些時間去得到一些新的觀點,避免都耗在上面。一遍遍的重復這一過程。 7. 保留記錄
確定你有一份以上的游戲拷貝。如果你是在電腦上輸入的,就各保持一份硬盤和軟 盤拷貝,另外再打印出一份清楚的最近版本(如每月打印一份,如果你幹得快的話每 星期打印一份)。你不會覺得拷貝太多,因為你的好朋友們會來向你借或者想擁有拷 貝。而且這些拷貝能夠減少你因為硬盤癱瘓或丟失筆記本等原因造成的丟失機會。 同樣道理,保留舊版本的拷貝是有好處的。如果你在游戲測試時發現新的辦法還不 如舊的好,而你卻已將舊版本的扔掉了,這該怎麼辦﹖至少保留一份最後版本之前 的拷貝,同你當前版本的拷貝放在一起。 8. 其它注意事項
優秀的規劃和書寫是好的,但精美的視覺化說明對你的銷售大有益處。如果你要自 己動手,就學一些桌面出版,或找一些現成的插圖(比如:剪輯藝術或政府出版物) 或找別人幫你畫些插圖。 找個從事印刷業的人,和他探討一些盡可能廉價的方法。低價格可以有助於銷售, 低成本則有利於你的收益。 9. 記住這只是個游戲
不要因為制作游戲而忽略你的現實生活。如果有人不喜歡你的游戲,別介意。不用 擔心別人竊取你的創意。記住第一條誡律,從你的所做中得到樂趣就行了。 10.沒有第十條了 :-) 另外,這裡有一些來自湯姆(“棱鏡游戲”的主持者)的額外忠告,感謝湯姆!:
1.不斷的創新是非常好的。如果你游戲中的所有東西都令人似曾相識,就好像是 偷來的。如果所有東西都與眾不同又會讓人感到陌生。常見題材單一獨到的構思是 好的,但會使得你的游戲看來像個“變體”,而兩個熟悉題材精明的創意則會使游 戲有新鮮感同時容易上手。因此不要試圖徹底從新發明某樣東西,而應把當前所擁 有的主意清晰化、簡潔化的用於擴展關鍵觀念的創新和趣味方面上。
2. 修正和雕琢你的游戲創意。測試不僅僅為了清除游戲和規則介紹中的錯誤,而 且就像一個討論會,對照他們已經取得的東西,游戲設計師能夠發現什麼是真正所 要表達的。如果你將測試留到最後,這一發現將對你沒有什麼好處。如果你進行早 期的測試和經常從眼前試著發現這一游戲真正要表達的,你就能常常很大的改進這 一游戲。 “ Alpha”測試就像在問:“是否真有這個游戲﹖”“我得到它了嗎﹖”“ Beta ” 測試看來在問:“是否用了最好的方法達到這一效果﹖”,“這是游戲的精煉嗎﹖ 或者它是否能被簡化或刪除﹖”“是否所有主要的游戲系統協同工作,給予了我所 期待的游戲體驗﹖”“ Gamma ”測試又像在問“如何才能改善游戲的收支平衡 和介紹呢﹖”許多設計師停留在Alpha(生產一個吸引人但卻是次品的游戲)之後或 者從Alpha直接到Gamma,跳過了Beta(生產一個好的但還不夠完美的游戲)。 通常有必要靠你的親密朋友/游戲小組及早的進行足夠的批評性分析,幫助你發現如 何才能改進一個已經相當不錯的游戲。 我的一些其它建議: 在我制作游戲過程中,從沒有清晰明顯的測試“階段”。我傾向於每個階段都做一 點。我修改一些系統,拋棄或替換一部分,改善其它的收支平衡和介紹,差不多是 在同時做的。這些部分來自於我所從事的主要游戲類型的設計-宇宙類RPG,你必須 在一個時間內幹一個部分的事情。 關鍵在於去尋求達到你最好的作品。用不同的方法嘗試,直到找到適合你的方法, 然後用它鑽研下去。 游戲的劇情 游戲劇情的重要是不言而喻的,特別是RPG游戲,相信廣大玩家對"仙劍奇俠傳" 熟得不能再熟了,這個游戲以劇情取勝(他的音樂也相當不錯),各大媒體對他的 評價也都是以劇情為主,這個我就不多說了.
我也曾看過許多文章提到劇情的重要,這些文章說的相當好,相當有價值,但基 本上講述的是劇情的要點及注意事項.而我將從另一個方面去分析游戲的劇情.
游戲的劇情是游戲的靈魂(當然除少數不需要劇情的游戲,如體育類,賽車等), 游戲通過各種各樣的方法讓玩家融入到設定的劇情上以打動玩家,但如果游戲 的劇情不吸引人,那麼無論游戲的表現手法有多好也不能達到目的,但是怎樣 的劇情才吸引人呢.
事實上中國與外國玩家有著很大的文化差異,這一點可以從各地所出產的游戲 上看得出來,歐美的游戲大多重視人物與場景的直實性,看上去就像電影,而東 方的游戲普遍追求漫畫式的效果.但這兩種風格哪種適合我們呢?答案是兩種 都適合.不要忘記我們的玩家基本上是青年一代,對新事物的接受是相當快的, 對歐美的游戲我們的玩家接受得很快,從這可以看出國外的游戲制作是相當出 色的,就拿我自己舉個例子,前兩天我得到一款"生化危機2"的游戲,游戲開始 的動畫可以說是扣人心弦,並且很好的襯托出了主題.而第二種風格的代表作 品就是"仙劍"了.
游戲所要表現的內容必須能夠被玩家接受,而且還要有創新,這樣的劇情才說 得過去.現在我們有一個很好的觀察點,那就是電影,外國的制作精良的大片 擠進中國後給我們的衝擊多麼大,而中國傳統題材的作品也給我們留下難忘 的印象.
我們不得不承認,在技術上我們與國外的游戲制作公司相比還差了一截,這 使得許多很好的題材我們不敢用,因為以現有的技術還不能很好的將他表現 出來,如果勉強還可能會起反作用(這是有例子的).
在這裡我只是起一個開頭的作用,什麼樣的劇情適合大家也不是一下能說清 楚,希望廣大游戲愛好者能積極討論這個問題,這也是我們中國游戲業現階斷 的一個重要的有待解決的問題. 角色扮演游戲的升級系統研究 在一般的角色扮演游戲中,人物的成長是一件相當重要的事,無論是角色扮演游戲或是目前熱門的策略型角色
扮演游戲(簡稱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了。這麼算起來各位可能覺得不會很多,但是當這種資料越來越多
的時候,記憶體的消耗也就越來越多,使得程式的空間也越來越小了。 由於表列式的作法會使得升級的情況比較單調,因此大多數的游戲並不願意採用這種作法,再加上這一類的作
法對於記憶體的佔用空間也比較高,因此如果不是必要,大多數都不會用這種作法。 除了以上這些作法之外,還有一種就是指數型的升級方式。這種作法其實就是表列式的改良,因為它將升級的
表格簡化成一個三數,在升級的時候就依這個三數來計算能夠獲得的升級值。現在我就舉一個例子來示範。目
前有一名角色的屬性以及升級指數如下: 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. 小時了了 要達成這種效果,我們需要將升級的總等級數分成幾個階段。我們以一個可以升到一百級的游戲來說,將每十
級分成一個區塊,就可以訂出這三種成長情況各要給它多少的數值。 其實這種曲線式的升級方式,在處理上和指數式的作法差不多,只不過指數式的作法一個人物每一種屬性只會
有一個數值,這個數值是不會改變的。但是在曲線式的作法中,會依不同階段有不同的升級指數,才可以造出
不同的成長情況。我們就以一名「大器晚成」的角色來說,這一類的角色在開始成長的比較慢,但是當人物成
長到一個階段後,成長的速度就會加快,因此我們可能在前兩個階段只給他們一點的升級指數,後面幾個階段
再給他們較高的升級指數,使這名角色會在游戲後期升得比較快。 反過來說,若是要設計一名「小時了了」的角色,那麼我們在初期可以給他較高的升級指數,但是到了後期就
要給它較低的指數,如此一來就可以表現出這樣的情況。 事實上,在游樂器中的「光明與黑暗續戰篇」就曾經用過這一種作法,使得游戲中的每個角色都有各自不同的
特色。特別是有些屬於大器晚成的角色,曾經因為初期成長的速度太慢而被玩者拋棄,但是後來知道這名角色
的特性之後,再回過頭來訓練的這種情況,正是這種曲線式升級的特色。這種作法使得角色除了單純的數字屬
性之外,還增加了一些隱藏的特性,會讓游戲更有味道。 如果以筆者個人的喜好來說,我是比較欣賞曲線式的升級方式,因為這種方式比較可以隱藏角色的特色,也不
會因為數字的變化太過單調而讓玩者覺得過死板。比起亂數式的不定性和升級指數式的單純來說,這一種作法
可以說是兼具了兩種的特色,同時還有全新的表現,是一種不錯的升級方式。只惜目前國內的游戲很少使用這
種作法,大多還是採用亂數式的作法,對於國內玩游戲的玩者來說,實在是有些可惜,因為大家沒有辦法體會
到這種作法的優點。 游戲中的智能系統處理 游戲中的智能對手 AI在游戲中最普通的形式是創建計算機控制的對手。因為大多數游戲是單人游戲,所以要設計游戲者在游戲中必須戰勝對手。為了達到這個目的,你可以使用某種類似A*搜索的簡單AI算法,以幫助對手穿過迷宮向游戲者發起進行。你也可以使用簡單的算法預測游戲者的反應。
但是,記住沒有必要創建世界上最強大的對手。你的對手只要能給游戲者提供足夠的挑戰性就可以了。還有,要注意游戲的內容。例如:一個戰棋式RPG游戲中策略佔的是主要地位﹔而在純RPG中故事情節和角色開發就更重要一些。千萬不要因為計算機對手太強大而讓游戲者們陷入失敗的泥沼。 游戲中的非智能對手
通常,在游戲開發中AI技術是與計算機對手緊緊聯系在一起的。這是因為早期的大部分類似角棋的游戲是一對一的。但是,任何好的探險游戲或RPG 游戲開發者都知道,AI同樣可以用於非對手角色。例如:如果你正在建立一個RPG游戲並且你想讓你的世界活起來,這就是說,讓城市裡的人以智能的方式活動,那麼你可以使用某種算法確定在一天中的某個時候,角色應該在那裡。你可以使用類似於AI算法如A*來輔助你將一個對象從一處移動到另一處並繞過障礙物。 游戲中的智能系統 游戲中的AI在本質上是最具有模仿性的,但它們基本上是依賴一些AI要素。 你可以將所有具有決策功能的對象在一個游戲中融合為一個整體。例如:在一個戰爭游戲中,你的各個部分可以依據各自所處的具體環境來作出各自的AI決策。
使用這種方法,你得把精力集中於怎樣在各個獨立的決策個體之間建立聯系,以及這些聯系怎樣才能使游戲成為融會貫通的整體。是用一個高級決策影 響其它決策,還是各個決策個體之間平等地互相影響呢﹖舉個戰爭游戲來說, 你有十輛坦克,它們的思維模式基本相同。所以它們都決定去攻擊敵人陣營中 HP值最低的一輛坦克。但是這時其中一輛坦克說:“這個敵人歸我了!”那麼 剩下的九輛坦克就應該依據這條信息各自調整下一步的攻擊目標。當你建立智能個體時,要考慮在一個智能系統整體環境下,它應該如何行動。 電腦游戲中的人工智能制作 電腦游戲隨著硬件執行效率與顯示解析度等大幅提升,以往很多不可能或非常難以實現的電腦游戲如此都得以順利完成。雖然電腦游戲的呈現是那麼地多樣化,然而卻與我們今日所要探討的主題,人工智能幾乎都有著密不可分的關系。
在角色扮演游戲中,程序員與企劃人員需要精確地在電腦上將一個個所謂的“怪物”在戰門過程中栩栩如生地制作出來﹔所以半獸人受了重傷懂得逃跑,法師懂得施展攻性法術。
目前能讓人立刻想到與人工智能有密切關系的游戲有兩種:
一是所謂的戰棋/策略模擬游戲,二則是棋弈游戲。人工智能的比重與深淺度,在不同的游戲類型中各有不一。有的電腦游戲非標榜著高人工智能不可,不然沒有人買﹔有的則是幾乎渺茫到讓玩家無法感覺有任何人工智能的存在。 導向式思考 AI最容易制作的的方式,同時也是早期游戲AI發展的主要方向就是規則導向或稱之為假設導向。在一些比較簡單的電腦游戲中,程序員可以好不困難地將游戲中的規則與設定轉化成一條條的規則,然後將它們寫成電腦程序。讓我們以角色扮演游戲為例。決大多數的企畫在設定所謂電腦怪物時,所設定的屬性通常有以下幾種: 生命值 攻擊力 防御力 法力 屬性 最後一個“屬性”是我在設定時喜歡增加的項目之一。透過這項屬性的設定,我可以把怪物設定成“貪生怕死的”,也可以把戰士設定為“視死如歸”。以目前我們所掌握的資料,在戰門系統中的大綱如是誕生了: 規則一 if (生命值< 10) // 邊臨死亡了嗎
{ if (屬性== 貪生怕死)
結果 = 試圖逃跑
if (有任何恢復生命值的物品或法術可用)
結果 = 使用或施展相關物品或法術
} 規則二
if (可施攻擊性法術 && 有足夠法力)
{
結果 = 施展攻攻擊性法術
} 由以上一連串的“如果--就--”規則設定,建立了最基本的AI。說這樣的制方式只能建立基本AI其實並不當然正確。只要建立足夠及精確的規則,這樣的方式仍然有一定水準的表現。
規則導向的最大優點就是易學易用。在沒有深奧的理論概念的前提下,仍有廣大的使用群。所以很多老道的玩家常常沒兩下就摸清楚敵人的攻擊策略,移動方式等等。 推論式思考 相信曾經接觸過電腦語言課程,或是自習過相關書籍的朋友們,都曾曾經聽過一個著名的程序,那就是井字游戲。用井字游戲作為討論AI的入門教材,我個人覺得是最適當的例子。或許有人還不知道井字游戲怎麼玩。只要任何一方在三乘三的方格中先先成一線便勝利了。我們在前面談過的規則導向,在這裡也可以派得上用場。 if任何一線已有我方兩子&&另外一格仍空//我方即將成一線嗎
結果 = 該空格
if任何一線已有敵方兩子&&另外一格仍空//防止敵方作成一線
結果 = 該空格
if任何一線已有我方一子&&另外兩格仍空//作成兩子
結果 = 該空格 有一次我在某本電腦書上,同樣地也看到某些以井字游戲為介紹的範例。不同的是,我幾乎看不到任何規則導向的影子。但在仔細分析該程序碼後,我得到了極大的啟發,原來AI是可以不用這麼多規則來制作的。它用的方法正是在電腦AI課程中重要的概念:極大極小法。我在這裡只說明這法則的概念。繼續以井字游戲為例,電腦先在某處下子,接著會以假設的方式,替對方下子,當然,必須假設對方下的是最佳位置,否則一切則毫無意義。在假設對方下子的過程中,自然又需要假設我方的下一步回應,如此一來一往,直到下完整局游戲為止。 底下是節錄書中的程序片段:
bestMove(int p, int*v)
{ int i;
int lastTie;
int lastMove;
int subV;
/*First, check for a tie*/
if (isTie()) {
*v=0;
return(0);
};
/*If not a tie, try each potential move*/
for (*v=-1, lastTie=lastMove=-1,i=0;i<9;i )
{
/*If this isn't a possible, skip it*/
if (board[i]!=0) continue;
/* Make the move. */
lastMove=i;
board[i]=p;
/* Did it win? */
if (hasWon(p)) *v=1;
else{
/*If not, find out how good the other side can do*/
bestMove(-p,&subV);
/* If they can only lose, this is still a win.*/
if (subV==-1) *v=1;
/* Or, if it's a tie, remember it. */
else if (subV==0){
*v=0;
lastTie=i;
};
};
/* Take back the move. */
board[i]=0;
/*If we found a win, return immediately
(can't do any better than that)*/
if (*v==1) return(i);
/*If we didn't find any wins, return a tie move.*/
if (*v==0) return(lastTie);
/*If there weren't even any ties, return a loosing move.*/
else return(lastMove);
}; 國外的一些論壇曾舉行過256字節的游戲設計比賽。作品非常多,其中有一件作品正巧也是井字游戲。作者用區區兩百多行就寫了與上述程序演算方式完全相同的作品,可見功力確實了的。另外,我也很希望類似的活動能在國內推展起來。對了,在這樣的比賽條件限制下,除了匯編語言外,幾乎沒有其它的選擇了。 .386c
code segment byte public use16
assume cs:code, ds:code
org 100h
tictac proc far
start:
push cs
pop ds
mov ax,0B800h ; 清除屏幕
mov es,ax ;
xor di,di ;
mov cx,7D0h ;
mov ax,0F20h ;
rep stosw ;
xor cx,cx ;
mov dl,5
loc_1:
call printBoard
loc_2:
mov ah,8 ; 等待按鍵
int 21h
movzx bx,al