國内資深魔獸玩家麥德三世近日又公布了部分《魔獸争霸3》MOD的新細節,主要講解了數據對象ID的命名規則,據悉,這款基于《星際争霸2》制作的MOD将于本周或下周發布。
本文作者為麥德三世,感興趣的玩家可以到地精研究院與作者詳細探讨。
《魔獸争霸3》MOD新細節:
為了能最大限度照顧從war3編輯器轉來的同學的習慣,War3 Mod盡了最大可能為每個來自War3的對象使用了War3引擎中的四字符格式内部ID。
例如,若是按照SC2的命名習慣,步兵的内部ID通常會是其英文名Footman。但是在我這個War3 Mod中,對象内部ID用的卻是war3的步兵四字符ID:hfoo,而“步兵”作為其顯示名同時賦予這個單位。
這樣做有哪些具體的好處呢?
例如,地圖作者們在調試模式下運行搭載了War3 Mod的地圖時,可以随時使用SC2本身的調試作弊碼來創建自己想要的單位,而不需要回到編輯器裡去編寫腳本或者放置單位。而目前的命名方式能極大地利用這一引擎優勢。
如在聊天框中輸入:“MakeUnit 步兵”
即可在鼠标位置創建一個步兵。沒錯,這個調試碼是支持中文的,因此你就算不知道一個兵種的英文名或内部ID,也可以随時随地創建它們用來測試你的地圖。MakeUnit 凱爾就可以創建一個凱爾薩斯。
對于戰役英雄,直接在MakeUnit後面輸入它們的名字即可創建他們,對于非戰役英雄,由于它們有許多随機名字,因此我在這裡設置的規則是需要在Makeunit後面跟英雄職業,比如MakeUnit 吉安娜會創建吉安娜,而MakeUnit 大法師則會創建一個大法師對戰英雄。
更方便的是,你甚至不需要輸入單位的全名即可使這個調試碼生效,例如MakeUnit 阿爾,或者MakeUnit 阿就能創建阿爾薩斯。系統會自動查找所有以“阿爾”或“阿”開頭單位,并列出所有符合條件的單位列表,然後創建列表中的第一個單位。
好了,你現在可能會想問,如果遇到名字一樣的單位怎麼辦呢?
我們從上圖中可以發現,這個War3 Mod和魔獸3編輯器一樣,數據庫裡有三個阿爾薩斯!分别是拿錘子版、拿劍版(霜之哀傷)和死亡騎士版,那麼究竟要如何指定哪個阿爾薩斯呢?
更多相關資訊請關注:魔獸争霸3:冰封王座專區
其實,MakeUnit作弊碼除了可以用單位中文/英文名外,還可以直接用單位内部ID來創建單位。大家可以注意到,圖中下方屏幕提示的三個阿爾薩斯後面都跟了個括号,每個括号裡都是四個字母,Harf,Hart,Uear.這對沒接觸過War3編輯器人來說,這幾個字符的含義可能會讓一般人摸不着頭腦,但是隻要是對War3編輯器曾有過較深入的了解的話,就能立刻看出這四個字符分别是三個版本的阿爾薩斯的内部ID。Harf是霜之哀傷版(Human Arthas w/ Frostmourne),Hart是普通的拿錘子版(Human Arthas),Uear是死亡騎士版(Undead Evil Arthas)。
因此如果你想要創建死亡騎士版本的阿爾薩斯,那麼就隻需要輸入MakeUnit Uear就可以了,由于單位内部ID永遠是唯一的,因此隻要你輸全了,就不可能出現創建了另一個單位的問題。
“MakeUnit hfoo”
該指令同樣會創建步兵,因為hfoo就是步兵的内部ID。
用慣了War3編輯器的同學們肯定對大部分War3常用單位的ID都記熟了,但是就算你是SC2才進門的地圖作者,也完全不用擔心記憶單位ID的問題。且不說War3裡面重名的單位其實并不多,就算真的遇到了,你也可以不管三七二十一,先用單位的中文名來創建了再說。就像上面的那幾張圖顯示的那樣,系統會在屏幕上列出所有同名單位的ID(在單位名字後面的括号中),因此就算記不住ID,也可以直接照着屏幕上的抄,都創建一遍總有一個對的吧。
注:MakeUnit作弊碼不僅僅可用于創建單位,物品,飛彈,可破壞物都等等對象都可以用它來創建。我在制作這些對象時同樣使用了War3的對象ID,因此你可以用MakeUnit 他們的中文/英文名或是他們在War3中的内部ID來方便地創建他們。
同時,在編輯器中,你也可以像和在war3編輯器裡一樣,通過按下Ctrl D來顯示每個對象的内部ID(再按一次即可恢複)。(上圖為搭載了war3 mod的sc2編輯器,下圖為war3編輯器)
與War3統一内部ID的作用遠遠不止于方便測試這種細節(雖然這些個竅門确實會非常有用)。最重要的是,這一命名規則還直接關系到War3 Mod的一個後續強化項目:Jass-Galaxy
Jass-Galaxy系統仍然在開發中,但它是作為War3 Mod的一個強化功能存在的,因此War3 Mod并不需要等它完成,而是一年前就是随時可以發布開測的狀态。
我以後會專門寫一篇帖子說明Jass-Galaxy系統的細節,但要要簡單地說明的話,Jass-Galaxy就是在SC2的腳本環境下直接模拟War3的腳本環境和API,并通過這一點來實現War3地圖腳本到SC2腳本的直接轉換!——簡單來說就是把以前的War3地圖轉換基于War3 Mod的SC2地圖,并能在SC2下正常運作。
更多相關資訊請關注:魔獸争霸3:冰封王座專區
出于現實考慮,由于Jass腳本中存在各種“Bug寫法”,最終想要實現100%轉換多半是做不到的,但是目前的測試表明,對每張地圖Jass-Galaxy至少可以實現90%的轉換。
于此同時,作為War3複刻的一部分,Jass-Galaxy還将提供與War3的Jass腳本一緻的API(簡單來說就是把War3的腳本API用同名函數全部實現一遍。)
例如,在war3中,下面這句Jass腳本在會在地圖的正中心創建一個步兵:CreateNUnitsAtLoc( 1, 'hfoo', Player(0), GetrectCenter(GetPlayableMapRect), bj_UNIT_FACING )
而在Jass-Galaxy中,你将可以通過完全一樣的語句在War3 Mod(SC2)裡實現完全相同的效果。
由此,War3 Mod與War3原版統一對象内部ID就變得更為重要了。因為War3的Jass腳本中充斥了各種各樣以對象類型為參數的操作。創建單位,禁止技能,摧毀可破壞物等等。若不使兩邊的對象ID一緻的話,當然就會出現無法正常解析的問題了。
好了,關于這個對象ID命名的事情暫時先寫到這裡。之後我會找時間說明War3 Mod之間的各種不同對象是如何關聯起來的。
更多相關資訊請關注:魔獸争霸3:冰封王座專區
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!