【轉(zhuǎn)載熟肉】Hammer教程V2系列-起源引擎地圖制作

EP1-EP4
Hammer編譯日志解釋器,可以準(zhǔn)確找出編譯日志所反饋的問(wèn)題,并給出解決方案:https://www.interlopers.net/errors/?page=errors¶ms=
EP1-EP4在本編集當(dāng)中并沒(méi)有,但可以看其他人做的熟肉。由于內(nèi)容非常基礎(chǔ),不多做贅述,只就一些重點(diǎn)內(nèi)容進(jìn)行說(shuō)明。
快捷鍵并不需要全部記憶,只需要記住幾個(gè)常用的快捷鍵即可。EP1-EP4所給出的快捷鍵都可以通過(guò)菜單或工具欄的提示直接找到,因此不再贅述。
- 在3D視圖按住Space+鼠標(biāo)左鍵,此時(shí)按住WSAD或移動(dòng)鼠標(biāo)可以像在游戲當(dāng)中那樣自由移動(dòng)。無(wú)法移動(dòng)的話,鼠標(biāo)點(diǎn)一下2D視圖再點(diǎn)回3D視圖即可解決。
- 在3D視圖的特定角度,或2D視圖當(dāng)中按方向鍵,可以讓物體移動(dòng)一格子。
- 接上文,Ctrl+快捷鍵可以對(duì)移動(dòng)進(jìn)行微調(diào),單位為1HU。
- [ ](方括號(hào)鍵)可以調(diào)節(jié)格子的密度,通常16最佳。密度可以從右下角的Grid看到。
- 按住Alt再拖動(dòng)物體可以對(duì)物體進(jìn)行微調(diào),此時(shí)無(wú)視格子。
- Ctrl+T可以快速讓固體轉(zhuǎn)換為func_details(當(dāng)然也可以轉(zhuǎn)換為其他實(shí)體),對(duì)快速優(yōu)化地圖來(lái)說(shuō)相當(dāng)重要。
- Ctrl+E可以讓2D視圖聚焦于在3D視圖中選中的物體,方便在2D視圖當(dāng)中進(jìn)行編輯。反之,Ctrl+Shift+E可以讓3D視圖聚焦選中的物體。
- 在2D視圖當(dāng)中點(diǎn)擊已選中的物體,可以在更改大小、變動(dòng)角度、傾斜當(dāng)中進(jìn)行調(diào)整。如果你用的是Hammer++的話,在3D視圖中直接對(duì)選中的物體按鼠標(biāo)右鍵也可以。
- H:隱藏對(duì)象;U:顯示所有隱藏的對(duì)象。對(duì)于一些地圖的精修十分有用。
- Shift+拖動(dòng):快速?gòu)?fù)制。
- Shift+L:以Z軸(上下)為基準(zhǔn)快速旋轉(zhuǎn)90度。需要在拖動(dòng)物體完畢的情況下使用。不過(guò)這對(duì)于180度的圓弧來(lái)說(shuō)似乎沒(méi)什么用。暫不清楚其工作機(jī)制。
- Shift+Ctrl+V:原地粘貼。可以批量復(fù)制、平移、旋轉(zhuǎn)之類。
這里說(shuō)一下Hammer++,對(duì)于Fistful of Frags玩家來(lái)說(shuō),該編輯器可以用。編輯完全沒(méi)問(wèn)題,而編譯的時(shí)候有的人會(huì)反映不行,這時(shí)候就直接用回Hammer吧,機(jī)制什么的我也沒(méi)搞明白。
或者說(shuō)你可以理解為Hammer++是一個(gè)追求高速和快捷的編輯器,而Hammer是一個(gè)更加追求穩(wěn)定性的編輯器。
Skybox是六面都涂,而其他的面能涂nodraw就涂nodraw,這樣能節(jié)省性能。此外,如果你地圖當(dāng)中的天空看不到應(yīng)有的天空,取而代之的是存在大量殘影,首先考慮是否存在Leak。
EP5
實(shí)體工具為 Shift+E(不過(guò)左邊的工具欄中也可以直接找到,我就沒(méi)記)。
實(shí)體三大類型:
- static
- dynamic (override)
- physics (override)
最好先打開(kāi)模型瀏覽器,看看info當(dāng)中該模型適合用于什么類型,再作出決定。
碰撞模型可以從軟件頂端靠右的「CM」按鈕查看,有的模型不存在碰撞模型。
static不會(huì)移動(dòng),也無(wú)法用來(lái)制作動(dòng)畫(huà)。也不會(huì)受到外部因素影響,相當(dāng)于該物體就是地圖固體或地形的一部分。
至于dynamic,如果將hold animation設(shè)定為開(kāi),那么模型的動(dòng)畫(huà)只會(huì)表現(xiàn)一次。況且在Fistful of Frags地圖制作當(dāng)中并不存在該參數(shù),因此不用過(guò)多考慮。這里作者翻譯出錯(cuò)了,如果按照中文含義來(lái)讀,那么就會(huì)理解為相反的意思。
physics就是玩家可以直接拿起來(lái)的道具。在模型瀏覽器當(dāng)中,可以看到該模型的本身的重量,而在編輯器當(dāng)中設(shè)定的重量就是其倍數(shù)。
帶上_override的作用就是將原先不支持該類型的模型強(qiáng)制使用為該類型。由于static沒(méi)有override,因此無(wú)法對(duì)不支持static的模型強(qiáng)制使用static類型。
(FOF特有內(nèi)容)踢出道具造成的傷害只與道具本身的重量有關(guān),而重量乘數(shù)會(huì)影響踢出去的速度,且當(dāng)乘數(shù)>=3時(shí),無(wú)法拿起。
(FOF特有內(nèi)容)對(duì)于炸藥桶,如果使用physics_override的話,將失去其爆炸的屬性;如果使用physics的話,就無(wú)法撿起來(lái)。此時(shí)應(yīng)該使用physics_multiplayer。
EP6

潛在可見(jiàn)集是指從一個(gè)給定的位置可能可見(jiàn)的視葉(visleaf,也就是在地圖當(dāng)中用來(lái)渲染的一個(gè)個(gè)小部分)的集合。它的能見(jiàn)度測(cè)量并不精確,但由于被預(yù)先編入地圖,它速度很快。它構(gòu)成了許多運(yùn)行時(shí)測(cè)試的基礎(chǔ),包括網(wǎng)絡(luò)過(guò)濾和渲染控制。
在編譯時(shí)可以查看vvis.exe選項(xiàng)下的numportal數(shù)量,該參數(shù)代表編譯時(shí)處理了多少個(gè)子空間。通常情況下,如果該參數(shù)超過(guò)3000,編譯時(shí)間就會(huì)超過(guò)1分鐘;該參數(shù)超過(guò)5000者,編譯時(shí)間就會(huì)超過(guò)1小時(shí)。
編譯時(shí)間超過(guò)2分鐘就不要再等了,建議直接關(guān)掉,開(kāi)始對(duì)地圖進(jìn)行優(yōu)化。
公開(kāi)發(fā)布地圖時(shí)應(yīng)保證BSP、VIS、RAD三個(gè)編譯選項(xiàng)都為Normal。若設(shè)置為Fast,則容易出現(xiàn)一些實(shí)體在特定角度會(huì)消失不見(jiàn)的問(wèn)題。
有的甚至還會(huì)使用-final參數(shù)來(lái)進(jìn)行更詳盡的優(yōu)化,不過(guò)對(duì)于Fistful of Frags這樣的社區(qū)類游戲來(lái)說(shuō),并不必要將地圖打磨到和藝術(shù)品一樣。此外,RAD右邊的HDR選項(xiàng)可開(kāi)可不開(kāi),看自己的想法。
EP7
制作圓柱的時(shí)候,無(wú)論是從什么2D視圖開(kāi)始生成,圓柱的頂部和底部始終是地圖的上方和下方。因此要想制作躺著的圓柱體,就需要先生成再旋轉(zhuǎn)。
制作圓弧的時(shí)候,圓弧面向的角度和你在2D視圖的方向有關(guān)。此外,width是圓弧厚度的一半,number of sides是一段弧的節(jié)數(shù),而且預(yù)覽的時(shí)候的效果圖在實(shí)際生成之后會(huì)拉伸到整個(gè)選區(qū)當(dāng)中。因此如果你想制作180度圓弧,為了保持美觀,可以讓選區(qū)的比例保持在2:1。
刺的制作方法等同圓柱。
- Ctrl+M可以變形。
- 在2D視圖點(diǎn)擊黃色頂點(diǎn),按Ctrl+F可以對(duì)其進(jìn)行細(xì)分。
- 在切割模式(Shift+X)當(dāng)中,如果畫(huà)好了線,還沒(méi)正式切割的情況下,感覺(jué)自己要重畫(huà),可以按住Shift再拖動(dòng)鼠標(biāo)以重新劃線。
- 選中一些頂點(diǎn)之后按住Alt+E可以直接分散。這里沒(méi)找到用菜單打開(kāi)的方法,因此可以視為只能使用快捷鍵來(lái)操作。
重疊的部分可以用裁剪工具切掉。
如果把一個(gè)物體的下端的頂點(diǎn)移動(dòng)到了上面,就會(huì)形成「凸對(duì)象」,而起源引擎不支持凸對(duì)象,只支持凹對(duì)象。凸對(duì)象的特征就是,從外面看上去的時(shí)候會(huì)發(fā)現(xiàn)有幾個(gè)面薄到根本沒(méi)有厚度,而進(jìn)入該固體之后,原本看不到的面又會(huì)顯示出來(lái)。


總之,當(dāng)通過(guò)頂點(diǎn)調(diào)整之后,如果同一個(gè)物體有面發(fā)生了交叉現(xiàn)象,那么該物體就是凸對(duì)象。
EP8
由于篇幅過(guò)長(zhǎng),需要較長(zhǎng)時(shí)間來(lái)學(xué)習(xí)和消化,且本人目前并不需要在這方面作深入了解,故到后期再回歸學(xué)習(xí)。
EP9
由于篇幅過(guò)長(zhǎng),需要較長(zhǎng)時(shí)間來(lái)學(xué)習(xí)和消化,且本人目前并不需要在這方面作深入了解,故到后期再回歸學(xué)習(xí)。
EP10
水好做,只要弄一個(gè)全是nodraw的固體,然后在頂端弄上水的紋理即可。 當(dāng)然也可以全部面都弄上水,甚至你六個(gè)面有五個(gè)面都弄上固體材質(zhì),只要有一面有水,那么這整個(gè)固體就是水方塊。
之前說(shuō)過(guò),prop_static能讓物體以地圖或地形的形式存在,而不受任何外力影響。設(shè)定為prop_static即可讓水面反射該物體。Fistful of Frags當(dāng)中并不存在Render in Fast Reflections這個(gè)參數(shù)。

高清水(expensive water)的限制:
- 如果水是高清的,在一個(gè)PVS(潛在可視集)中只能有一個(gè)水位高度。
- 「高清的(expensive)」和「樸素的(cheap)」水不能在同一個(gè)PVS中同時(shí)使用。
- 高清水的水面不應(yīng)該在Z軸上傾斜(應(yīng)該始終垂直于Z軸);它應(yīng)該總是與地圖上的地平線平行。
- 高清水是通過(guò)在畫(huà)筆的最上面的表面添加水材質(zhì),同時(shí)其他面設(shè)定為nodraw材質(zhì)。
- water_lod_control實(shí)體控制著高清水過(guò)渡到樸素水的距離,其余的面用nodraw材質(zhì)覆蓋。
- 水面必須有一個(gè)env_cubemap實(shí)體,才能在DX9以下的硬件上正確渲染。
- 地圖子區(qū)域(aeraportals,或者說(shuō)visleaf?)永遠(yuǎn)不能穿過(guò)水面。
- 水不會(huì)密封地圖,所以請(qǐng)勿將其作為地圖本體與外部黑宇宙隔開(kāi)的墻壁。
- 當(dāng)看到水時(shí),只有頂部的材質(zhì)能正確渲染,側(cè)面和底部不會(huì)被渲染。
EP11
- func_door
- func_door_rotating
- prop_door_rotating
func_door是直拉門(mén)。lip是移動(dòng)減少值,也就是減少移動(dòng)多少個(gè)HU,用來(lái)避免材質(zhì)重疊。還有一個(gè)設(shè)定速度的選項(xiàng),單位就是HU。
func_door_rotating是轉(zhuǎn)動(dòng)門(mén)。這里會(huì)有一個(gè)藍(lán)色球體,也就是旋轉(zhuǎn)中心。默認(rèn)是以Z軸為基準(zhǔn)進(jìn)行旋轉(zhuǎn)的。開(kāi)關(guān)門(mén)聲音的屬性不再贅述。
標(biāo)志當(dāng)中有個(gè)「use open」,也就是需要使用E來(lái)開(kāi)門(mén)。有個(gè)「touch open」,也就是觸摸后打開(kāi)。兩個(gè)都關(guān)閉之后,就需要考慮使用按鈕或其他輸入輸出設(shè)備來(lái)控制開(kāi)關(guān)了。
prop_door_rotating是實(shí)體門(mén)。有個(gè)選項(xiàng)是start breakable。
門(mén)有一個(gè)恢復(fù)時(shí)間,如果設(shè)定為-1,那么門(mén)將不會(huì)自動(dòng)復(fù)原。
在面編輯表當(dāng)中,點(diǎn)擊fit就可以將材質(zhì)拉伸到整個(gè)界面。
EP12
func_button的作用就是將一個(gè)固體設(shè)定為按鈕的形式。delay before reset是按鈕冷卻時(shí)間。delay before reset如果設(shè)定為-1,那么只能觸發(fā)一次。按鈕通常使用onpressed的動(dòng)作來(lái)觸發(fā)「按下按鈕」這個(gè)操作。
triggle材質(zhì)可以讓一個(gè)區(qū)域變成觸發(fā)區(qū)域。然后再將該固體轉(zhuǎn)換為trigger_multiple以變成可以多次觸發(fā)的區(qū)域。delay before reset如果設(shè)定為-1,那么只能觸發(fā)一次。通常使用onstarttouch的動(dòng)作來(lái)觸發(fā)「進(jìn)入」,onendouch的動(dòng)作來(lái)觸發(fā)「離開(kāi)」,onendtouchall的動(dòng)作來(lái)觸發(fā)「所有東西都離開(kāi)了」。
triggle材質(zhì)可以讓一個(gè)區(qū)域變成觸發(fā)區(qū)域。然后再將該固體轉(zhuǎn)換為trigger_once以變成可以觸發(fā)一次的區(qū)域。
標(biāo)簽當(dāng)中可以設(shè)定「don't move」,也就是按下按鈕之后,按鈕不動(dòng)?;蛘遳se activate(E鍵激活)、touch activate(觸摸激活)、damage activate(槍械攻擊激活)。
outputs的含義是「該實(shí)體要將信息傳遞給誰(shuí)」的列表,inputs的含義是「其他實(shí)體將信息傳遞給該實(shí)體」的列表