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