《魔獸爭霸Ⅲ》地圖製作入門教程?

WarCraftⅢ World Editor(簡稱WE),是暴雪鉅作《魔獸爭霸Ⅲ》所附帶的功能強大的地圖編輯器。世界上很多地圖製作高手已利用WE創作出了類似《反恐精英》、《暗黑破壞神》、《雷電》、《大富翁》等經典遊戲的魔獸版,可以說用WE只有想不到,沒有做不到。WE功能如此強大,其實不難掌握,因為暴雪已將它做得再“傻瓜”不過了。當你決定使用它創造地圖時,擺在你面前的不過是一大堆“積木”,你只要發揮自己的創造力,就能將其擺放出一個自己想象中的世界來。是不是已經等不及了?讓我們趕快啟動WE來製作屬於你的一部舞臺劇!
WE由四個主編輯器還有個功能強大的物件管理器(Object Manager)組成。四大編輯器分為地形編輯器(Terrain Editor)、單位編輯器(Unit Editor)、觸發編輯器(Trigger Editor)、音效編輯器(Sound Editor),其中要屬地形編輯器和觸發編輯器功能最為強大。本文將以四大編輯器為主線介紹WE,並以官方RPG地圖WarChasers的製作方法為例,由淺入深地講解構建一幅魔獸地圖的思路。(注:本文使用的軟體為英文版WarCraft World Editor 1.05版)

NEEDの工具

魔獸爭霸3帶地圖編輯器的,電腦一臺。

魔獸の教程

搭建舞臺場景——地形編輯器
WE基本元素之一。光用地形編輯器就能製作出簡單的對戰地圖。由於它被設計得“傻瓜化”,就算是新手操作起來也非常容易,彷彿Windows畫板一樣。
通過魔獸爭霸快捷程式組執行World Editor之後看到介面,這便是最基礎的地形編輯器。
①上方為選單欄,與其它的Windows軟體類似,在這裡可進行WE的所有指令操作。
②WE的主編輯視窗,通過它看到所編輯地圖的全貌。
③輔助視窗,對你編輯地圖有一定幫助,不過會影響到速度。
④工具面板,相當於一個巨大的素材庫,能很方便地新增物件到地圖。
⑤狀態列,記錄了包括滑鼠位置、滑鼠所選物件的名稱等附加資訊。
看過地形編輯器的構造之後,我們來學習如何繪製地圖的基本場景。第1步,新建一張地圖(File→New),這時你會看到網格——暴雪為了方便玩家合理安排地圖構造而設計的類似一些影象編輯軟體的引導線(可通過View→Grid→None來消除它)。首先,我們使用工具面板的地形面板(Terrain Palette)來建立一些山和水之類的自然地貌。A部分用來調整地形紋理以及繪製分界線。B部分調整懸崖、海水以及地表型別,不過在這裡請注意兩點:第1,只能在高度差為1,而且寬度至少為三個中型網格,長度在五個中型網格以上的地形間建立坡道(Ramp);第2,不要在小範圍內同時使用兩種懸崖型別(Cliff Type),這樣可能會造成地表貼圖錯誤。在完成了地形紋理設計和懸崖調整以後,使用C部分的地形高度選項來使地形變得更自然點兒。在調整高度時,建議使用D部分的筆刷選項,將筆刷調整到最大,這樣可省下不少力氣。
對自己創造的地形滿意嗎?光禿禿的可不好看,想加些樹木、小鳥還有瀑布之類的修飾就需要用到擺設面板(Doodad Palette)了,點選工具面板上方的選擇框或點選Layer→Doodad來切換到擺設面板。當你建立類似箭靶的物品時,會發現大小與方向都是隨機的,這時你既可將四部分的隨機大小和隨機方向取消,然後重新新增擺設,也可通過雙擊調整擺設,然後輸入數值來改變大小、方向和種類。如果你只想大致地調整一下方向,則使用Ctrl+滑鼠左鍵點選/拖拽。
嘿嘿,接下來就是為你的地圖新增有生力量了,用相同的方法切換到單位面板(Unit Palette),相信到這裡魔獸玩家應該不會陌生,你可隨意新增任何兵種和建築到地圖上,不過要注意,當準備建立中立生物或構建敵人基地時,別忘了更改上方的玩家哦(預設是Player1 Red)。同樣能通過雙擊已建立的單位來更改所有者,也可使用滑鼠框選或用Shift+滑鼠左鍵來選擇多個單位進行批量修改。除了所有者以外,單位的屬性面板和擺設的屬性面板還有很多不同的地方,其中的技能欄可啟用所編輯單位的技能,而掉落物品欄多半用於設定中立生物死亡時掉落的物品。當然,遊戲地圖都需要有起始點,在單位面板中Buildings的最後一欄找到起始點(Start Location),然後將它建立在地圖上的任意地方。別忘了作為對戰地圖,至少要有兩個起始點。接下來需要做的就是為你的對戰地圖加上一些小修飾了:點選選單Scenario→Map Description,在Description欄裡你可修改地圖名稱、遊戲人數和地圖說明,作者欄裡簽上你的大名。最後測試一下地圖(Ctrl+F9)就可存檔了。一張簡單的對戰地圖不就出來了?

排練演員——單位編輯器
大家肯定不會滿足於只創造簡單的對戰地圖,就像有了電腦不光只學打字一樣。想學會如何駕御WE新增一些有個性的元素,這時我們就要用到下面的單位編輯器了。
單位編輯器功能很強大,因為官方經常用來調整平衡性,所以使用它就好像編輯QQ個人資料一樣簡單。本節將介紹如何使用它,並且主要對各個可修改選項加以解釋,讓大家可盡情發揮想象力創造新的單位——善惡美醜高矮胖瘦,完全由你選擇。
用F5開啟它以後,我們可看到A部分是與地形編輯器同樣的選單欄和快捷按鈕欄,單位編輯器的選單命令非常少且比較簡單。B部分是單位樹,在這裡你可全覽所有單位。C部分則是顯示在B部分選擇單位的詳細資料,你要做的就是在此對各項資料進行修改。通過點選選單File→New Custom Unit新建自定義單位,彈出新建單位視窗,其中名字可在建立後再編輯,最主要的是選擇參照單位,也就是要你選擇想在哪個單位的基礎上進行編輯。選擇了之後會在單位樹的最下方看到新建的單位被放在了Custom Units目錄下,點選剛才新建的自定義單位,通過右方的編輯視窗對資料進行修改。
因為編輯器裡面可編輯元素多得恐怖,而且有一些玩家在遊戲中都沒有見過,所以我只對常見的專案進行解釋。
註釋 傷害值的計算:例如9級石頭人的基本傷害值為60,傷害值隨機數為1,隨機傷害值為8,我們就可算出石頭人對地攻擊的最大傷害為60+1×8=68,最小傷害為60-1×8=52,即傷害值範圍為52~68。金錢獎勵的計算方法同理。
以上是普通單位的編輯介紹,在編輯英雄單位時,有以下特有的修改選項。
在設定完了這些讓人眼花繚亂的單位資料及屬性後,不要忘了通過點選選單File→Export Unit Settings來將所改動的單位資料儲存到檔案中,然後再在你自己設計的地圖上使用Import Unit Settings來調入修改了的資料。

展開劇情——觸發編輯器
觸發編輯器是WE的靈魂,魔獸RPG無限的內涵就是因為它的存在。在此節,我們通過分析經典RPG地圖WarChasers(大家可在魔獸爭霸遊戲目錄的Maps\Scenario下找到它)中的幾個設計要點,來對觸發編輯器有基本的認識。
開啟地圖WarChasers可看到它的全貌,不要光顧著欣賞地形,這些在上面講述的地形編輯器中你同樣能做到。在講解範例之前,先來了解一些觸發器的基本常識。首先是域(Region)的概念,它是地形編輯器與觸發編輯器之間最重要的一道橋樑,絕大多數的觸發器(Trigger)都與它有關係。通過工具面板→域面板(Region Palette)來顯示地圖上的域,大家會看到地圖上有許多不同顏色的矩形框,這便是域了,其中每個矩形框都是一個域。域面板簡單地分為兩部分:一部分僅為一個快捷鍵按鈕,當啟用時(綠色)為增加域,當取消啟用時(灰色)為編輯域的大小或移動/刪除域;另外一部分是域列表,在這裡通過雙擊域名,視窗會跳轉到該域所在區,並且還可在域名上單擊滑鼠右鍵→編輯域屬性(Edit Region Properties)來修改該域的詳細資料,除了修改名字和微調域大小以外,還能改變域的顏色(Select Color)、天氣效果(Weather Effect)和聲效(Ambient Sound)。

瞭解過域以後,可進入觸發編輯器的學習了。按快捷鍵F4開啟觸發編輯器,有一個類似單位編輯器的視窗擺在了面前。讓我們來看看它的結構:最上方的是選單欄。往下左邊是觸發器樹,類似於單位編輯器裡的單位樹。目錄下出現的檔案便是觸發器,左鍵單擊觸發器會開啟編輯視窗。位於編輯視窗上方的文字框為備註框。備註框下方的便是觸發器編輯主視窗了,這裡需要講解的是觸發器分為事件(Events)、條件(Conditions)、行為(Actions)三部分,即當發生什麼事件,並且滿足什麼條件時執行什麼行為。是不是感覺有點像計算機語言一樣枯燥,那麼現在讓我們試著讀懂WarChasers中幾個觸發器製作的效果例項吧。

例項一:如何實現遊戲開始時的選擇英雄,這是絕大多數RPG地圖所必備的。
例項效果:進入遊戲後,將樹精靈移動到英雄附近時,則選擇該英雄。
例項講解:進入觸發器樹中Hero Selection目錄下的Robo X觸發器,我們可看到主視窗中的事件、條件、行為三大部分。
事件部分:此處的意思是當一個單位進入Robo X域,則引發該觸發器。(通過雙擊可以編輯為你所需要的語句)
條件部分:在這個例項中條件部分為無,即當事件發生時無條件執行該觸發器。
行為部分:(下文中提到的玩家1為玩家自己,玩家12為電腦)
1.在Start2域中心為進入單位的擁有者新建一個名為Megotron X的單位(在這句中,你可以更改生成的單位數量、型別以及在哪個域新建該單位和該單位被建立時的角度)。
2.給剛才建立的英雄一個復活十字勳章(由於這是給英雄新增物品,所以不能設定數量,不過你依然可以更改物品的型別。Last Created Unit代指的便是剛才新建的Megotron X)。
3.如果進入的單位屬於玩家1則將剛才新建的Megotron X賦予單位型別變數Player1,否則什麼都不做。(這裡利用了Set行為語句來設定變數,為什麼要設定變數呢?就像為什麼我們每個人都有名字一樣。If Then Else是經常用到的行為語句,它常會通過條件來判斷該執行哪個行為)
4、5、6.三句橫線標註的語句功能同第3句一樣,大家很容易讀懂。
7.移出進入Robo X域的單位(這裡的Entering Unit同樣指的是進入域的樹精靈)。
8.啟動觸發器Snap Camera to Player(檢查條件)。(執行Camera Control目錄下的Snap Camera to Player觸發器,你也可通過使用類似以Trigger開頭的語句的觸發型別語句來建造觸發器鏈,相當於連鎖反應)。
例項總結:現在我們知道RPG地圖開始時用一個精靈選擇自己喜歡的英雄來作戰,這個最基礎的觸發器例項是怎麼樣通過事件、條件、行為這3個部分來組合的,還了解了基本的語句構成。

例項二:類似Tower Defense的兵海,在這個例子中你將認識到觸發編輯器的差異性,即類似的語句卻會產生不同效果。
例項效果:在WarChasers地圖中會有一個開著坦克前進,然後很多骷髏兵向你湧來的效果,著名的Tower Defense地圖中也有類似的觸發器影子。
例項講解:目錄Monster下面的TankRun1~9觸發器,鑑於這九個觸發器有相似性,所以我就拿觸發器TankRun1來作分析了。
事件部分:意思是當一個單位(坦克)進入TankSpeak域時,則引發該觸發器。
條件部分:進入該域的單位必須屬於Playersgroup(這裡出現了條件,不滿足條件時行為部分就不會被執行。其中Playersgroup是一個玩家組型別的變數,在其它觸發器中,已設定了Playersgroup包括了遊戲中的四個玩家,所以這裡也可理解為任何一個屬於玩家的單位進入TankSpeak域時,才能滿足執行行為的條件)。
行為部分:
1.關閉此觸發器(這個語句便是控制該觸發器,使它只執行一次,這裡我們需要注意到的是行為部分的語序性,即語句是按照從上到下依次執行的)。
2.為玩家12在MakeSlimers域中任意一點新建兩個通過單位編輯器建立的名為Giant Skeleton Warrior的骷髏戰士(請注意到這個語句執行的效果是先確定任意一點,再在該點建立兩Giant Skeleton Warrior)。
3.為玩家12在TankSkels1域中任意一點新建一個單位名為RoadKill Skeleton的骷髏,並執行30次(其實效果便是在TankSkels1域內建立30個RoadKill Skeleton。玩家可能會覺得這個等同於上面的語句,但是請注意,因為域內的隨機點在每次執行語句時都會變化,所以這30個RoadKill Skeleton不會像上個語句裡的兩個Giant Skeleton Warrior一樣聚集在一起,這樣才會有骷髏海的效果,請大家注意我用橫線標註的單位型別語句是相同的)。
例項總結:通過這個例子我們不僅學會製作Tower Defense效果,而且還看到For語句可簡化很多繁瑣的效果,大家應該多多練習使用。是不是覺得簡單了?那我們就來個難一點的!

例項三:瞬間移動。通過此例項我們可發現觸發編輯器不僅有差異性,也有多樣性,即用多種方法達到同一個目的,正是因為如此,觸發編輯器才可讓大家盡情發揮想象。
例項效果:當坦克到了終點以後,將玩家的英雄傳送到Waygate2 A域。
例項講解:目錄Tanks下面的Player 1 Leaves Tank觸發器。
事件部分:當一個單位(坦克)進入Tank Leave 02域時,則引發該觸發器。
條件部分:進入的單位為變數Player1(這裡請大家不要被迷惑了,這個Player1只是一個單位型別變數,而非玩家1,這個變數指代的便是坦克)。
行為部分:
1.關閉此觸發器。
2.取消變數TempPlayer1的隱藏狀態(當你的英雄進入坦克時,在其它觸發器中已將你的英雄隱藏,並賦予單位型別變數TempPlayer1,●表示單位相關語句)。
3.將TempPlayer1移動到Waygate2 A域(這個移動沒有等待時間,可算是瞬間移動)。
4.在Tank Leave 02域創造“傳送”特效(這是一個用來創造特效的語句,大家可能會問,英雄都被傳送到了Waygate2 A域了,怎麼還能在Tank Leave 02域看到特效?其實在玩家進入坦克時,視角已被固定在了坦克身上,在沒有新的語句來改變視角之前,視角依然只是坦克,▲表示特效相關語句)。
5.將剛才建立的特效賦值給特效型別變數列TankSFX[1](這裡出現了變數列(Array)的概念,所謂變數列,就是將同類型變數集中在一起,便於操作,就像把書都放在一個包裡便於攜帶一樣)。
6.等待0.10秒(等待語句在觸發編輯器裡作用也比較顯著)。
7.隱藏變數Player1。由於坦克在以後的遊戲中不會再使用到,所以我們完全可使用Remove命令將它刪除,你可新建移除單位的行為語句(Unit-Remove),然後將Triggering Unit值更改為變數(Variable)Player1,這樣便做到和隱藏變數Player1等同的效果了。
8.將TempPlayer1值賦予Player1(執行後,Player1便是指代的玩家的英雄了)。
9.執行Snap Camera to Player(忽略條件)(當選擇忽略條件時,就算執行的觸發器有條件也不會被考慮,這便是轉換視角的語句)。
10.等待2.00秒。
11.摧毀特效TankSFX[1]。(將剛才建立的特效摧毀)
例項總結:這個例子有些複雜,大家可反覆看註釋並結合遊戲來分析。我們從這個例子瞭解到在觸發編輯器中達到一個目的不是隻有一種方法。另外,編輯觸發器中經常用到變數,但請大家注意使用變數時要有邏輯性,邏輯錯誤會導致整個地圖出現問題。

主題曲及配音——音效編輯器
四大編輯器中最後一個組員——音效編輯器,不過它並不像其它編輯器那樣強大,使用它為的是渲染地圖內涵的氣氛。
按F5鍵啟動聲效編輯器,結構與單位編輯器類似,上方的選單欄中,可輸出/輸入聲音或者樂曲,在左方的聲效樹狀列表中,能找到出現在魔獸爭霸遊戲中的所有聲音和樂曲。雙擊可播放該檔案,若想在觸發編輯器中能呼叫該音效,則需要通過點選選單File→Use Internal Sound將該檔案匯入到右方的聲音變數列表,以使它成為一個變數。當然,這樣還不能算完工,還需要在觸發編輯器中呼叫它才行,在觸發器的行為部分加入播放聲音/樂曲(Sound-Play Sound或Sound-Play Music)的行為語句,便可播放剛才所加入的聲音/樂曲了。雖然聲音型別的行為語句很多,不過對於初學者來說,掌握這兩個和中止聲音/樂曲(Sound-Stop Sound或Sound-Stop Music)就差不多了。
OK,至此我們已瞭解WE的基本核心內容了,即通過四大編輯器來進行自主設計,為了能使大家有個較清晰的脈絡,我們為大家整理一下製作地圖的基本思路:
1.運用地形編輯器繪製出地圖的全貌,這是一張地圖能否吸引人的首要條件。
2.運用單位編輯器在地圖中建立遊戲可能出現的任何單位,包括人物、建築等。
3.在策劃的前提下,合理使用觸發編輯器來讓整個地圖“動”起來。大體步驟為:初始化資料→建立遊戲系統(即設定人物變數等,可以增加一些類似販賣物品系統等新元素)→遊戲任務。初學者可根據上文介紹的例項進行模仿,平時多多分析高手的地圖設計,有了經驗後向更復雜階段挑戰。
4.地圖的後期製作,包括用音效編輯器新增背景音樂、遊戲音效等,然後再進行一些其它方面的潤色。
5.除錯階段,如果你想做出一張受大家喜愛的地圖,那麼設計完地圖後不要急於推出,首先讓自己不斷地去除錯,去試玩,玩到自己都不想看到這張地圖時,就大功告成啦!

注意事項

地形編輯器技巧
1.點選選單File→Perferences可對WE進行優化,如果你總是忘了存檔,那麼在General欄中設定AutoSave的時間來開啟自動存檔,至於其它選項大家可根據喜好來調節。
2.通常在設計完地形以後會通過點選選單View→Pathing或按快捷鍵P開啟路徑選項,用來檢查道路是否可通過,其中紫色代表不能通過。
3.當為單位面板時你不能點選到擺設,需要切換到擺設面板;同樣,當在地形面板時,只能對地形進行操作。
單位編輯器技巧
用單位編輯器來讓一個單位變成無敵(Invulnerable)。很簡單,修改該單位的能力選項,再點選新增能力(Add Ability),然後你可從單位(Unit)能力面板中找到Invulnerable(Neutral),選擇它便可以了。
觸發編輯器技巧
在檢查錯誤時,通常在可能引起錯誤的行為語句前加入Game-Text Message(Auto-Timed),這是一個在遊戲中顯示文字的語句,你可將它們設定為顯示不同的資訊,這樣當你發現哪個資訊沒有顯示時就可大致確定引起錯誤的語句了。
遊戲中使用的地圖,一般有幾個資訊的要求:
1:它需要有關於某個點是否可以行走的資訊
2:它需要有關於某個點是否會蓋住人物的資訊
這兩點都無法在BMP格式中保留。
一般來說,這需要使用三張圖來保留,我們可以分別稱它們為行走層,地表層,透明層。
在行走層我們畫出地形來,對於不可行走的部分,我們使用純黑色來表示,可行走部分則必需有R+G+B不為0.這是最下面的層。
建好這個層之後再製作地表層。地表層中我們只製作處於地面的東西,這個層將完整的蓋住整個地圖。因為有下面的行走層,我們可以比較方面的知道哪裡不可以行走,應該做一個什麼型別的建築上去。。。
當所有元素都作完後,我們要將這個層中的一些東西單獨抓出來,比如一棵樹的樹冠,比如屋子,這些東西將構成透明層。透明層的處理相對麻煩很多,很多時候,透明層需要分行儲存,這是因為,透明層中的東西,只有當可移動物體位於它的後面時才需要透明效果,即,人物後有物體時人物不透明,而物體後有人物時物體透明。這就需要了解物體與人物的關係了。
因為一般來說,畫遊戲影象時,是先畫背景層,然後從上而下逐行畫物體與人物。
這樣,當沒有畫人物時,因為透明層上的物體是從背景上抓出來的,相同的地方已經有同樣的物體(背景層上有),畫的物體與背景是一樣的,所以,無論怎麼透明,也沒有區別。
當人物已經畫上到某個地方後,這裡再畫的物體就與已經畫完的影象不一樣,這時透層層上的物體畫上去就會蓋住人物-----如果畫透明層的時候有一定的透明度,就可以體現出物體後人物半隱半現的效果。
綜上所述,可能蓋住人物也可能被人物蓋住的物件應當在完成背景後再從背景上逐行抓取出來另存。
最後,再將一直會蓋住人物與其它物件的影象元素單獨儲存。
於是就有了四個層:
行走層、背景層、透明層、頂層。

相關問題答案