奇幻遊戲社群

標題: Athena的編輯器教學-Walkmesh 和Bake [打印本頁]

作者: xliu    時間: 2010-5-4 20:20:51     標題: Athena的編輯器教學-Walkmesh 和Bake

本篇原作者為Athena ,星世界2地圖達人


小女子又來獻醜了, 為什麼要貼這些大家都已經知之甚稔的東西
來煩大家呢? 因為今天下午我得待在辦公室, 回一堆email.....
所以寫這個來打發時間, 如果擾人清夢, 請海涵一下(^ ^|||).


Walkmesh 和 Bake

簡單來說, Walkmesh就是畫能夠行走的區域.
如果開啟Toolset的toolbar1上的walkmesh鈕, 就會看到地圖上
出現縱恆交錯的白線綠線黃線紅線黑線等等.

而bake, 就是電腦根據玩家對walkmesh的設定進行行走區域的
運算和決定.



不影響walkmesh的線:

[紅線], 如果打開Grid這個鈕, 就會顯示該區域的tile格子, 每由
一個紅色框框圍起來的區域就是一個tile, 每個tile可以有自己
獨立的6個texture選擇, 不過請注意, 一個地圖每增加一個
texture, 就會開起該texture的template然後運算, 這樣說好了
雙核CPU+nv7600左右運算鄰近tile合起來超過9種以上的texture
就會開始跟你抱怨了(physically), 如果是multiplayer, 那還要
加上網路傳送封包的速度和讀取封包的動作, 大概6種texture就會
開始lag, 多lag還要視玩家設定的解析度.

[黑線], 只是一種尺標, 讓玩家製作地圖時不會因為只看紅線而
頭昏眼花.

影響walkmesh的線:

[亮紅線], 如果打開Occlusion Grid這個鈕, 他會顯示這個邊界
警示線, 圍出來的區域是最大可以行走的區域. 如果當初設定
區域是16x16(單位是tile), 那最大可行走區域就是中央開始
往外算8x8, 這樣子玩家設計地圖時那周圍不能行走的區域就是
所謂的"遠方", 讓玩家看不到邊界, 這個設計對於遊玩的玩家來說
是一種享受, 但是對地圖製作者來說卻是嚴格的考驗!

[綠線], 綠線都是圍成一個一個的三角形, 凡是被綠線畫過的區域
都是可以行走的區域, 然而物件上的可行走區域要bake之後才會
出現, 正常的綠線區域是一個0.5x1(cm)的等腰三角形, 可以由
terrain工具的walk/non walk bush來畫, 沒有被畫到的區域bake
後就是不能行走. 但是, 如果可行走區域內有被物件或是其他東西
打擾, bake時電腦就會根據綠線邊緣和打擾物體的距離做運算而將
三角形分割切成形狀不一的三角形, 每增加一個三角形, cpu就要用
兩倍的資源做運算.

[黃線], 黃線是由電腦所決定的可行走區域邊緣, bake前它是跟
亮紅線在同樣位置, bake後是根據玩家所畫的可行走區域的邊緣.
(注意!)用trigger畫出來的區域也是用黃線表示, 不過那又有可
行走的對話trigger和不可行走的劇情trigger等分為不同類, 那
不是這個課題, 可以先忽略.

[藍線], 這是玩家用"walkmesh cutter"畫出來的不可行走區域,
等一下會講解.

[白線], 白線是bake後玩家或是電腦"強制"畫出不可行走的區域,
如果物件和物件的連結電腦不接受(collision), 電腦就會在bake
後畫出白線來表示. 物件如果沒有轉換成環境物件, 電腦會自己
幫你運算他的周邊並以白線表示. 玩家用walkmesh cutter畫出來
的區域bake後也是以白線表示.


[重要注意事項]:
1.) 物件環境化後會當成跟地形一樣在讀取模組的時候就會被
    讀取且運算完畢(沒有被環境化的物件都是玩家在遊玩的時候
    被及時運算出來的, 在multiplayer時很容易造成lag),
    但是相對的這個物件不能被bake, 它變成是一個可以被穿透
    的東西, 不過我門可以利用walkmesh cutter來自己圍不可
    走過去, 和利用walkmesh helper來自己製作可走的高度和區
    域.

2.) 物件和物件之間的連結, 有些看起來好像可以連結的很好
    但是bake完卻不讓你連結. 這個問題可以用
    "walkmesh Helper"來解決, 這個東西等一下會講解.
    tip:地形和物件之間的連結如果高低差有抓好, 他一定讓
        你連, 所以有時候可以利用隆起的地來連結兩物件.

3.) 如果你"增大"物件的大小(scale), 那該物件表面行走的區域
    也會變動, 而導致會有往外走道空中的情況發生, 這時候可以
    利用walkmesh cutter來將物件周圍包住.
    除此之外也可以乾脆就將該物件環境化然後自己用
    walkmesh helper來決定行走的區域.

4.) 如果某個區域在被你畫成non walk之後你又去變動那個區域的
    地形, 電腦會重新幫你畫walkmesh, 所以要記得再去改成
    non walk.



<Walkmesh Cutter:>

這個東西是位在藍圖區->trigger->empty->walkmesh cutter
點選之後, 你的滑鼠變成一個白色的十字準心, 用準心來點出區域
的邊角, 電腦就會在兩個點之間畫出藍色直線, 點三個邊角以上就會
畫出形狀不一的區域來, 被圍成的區域中視為強制不可行走的區域.





這主要是為了, 室內區域的walkmesh不能使用terrain工具來畫, 所以
如果環境化了室內區域的物件, 就只能用walkmesh cutter來製作不可
行走的區域. 不過室外區域也有地方會用的到, 比如之前說過的物件
邊緣, 或是環境化了的物件用non walk工具不能適當的圍出.

你會發現, bake之後被cutter圍成的區域是用白線表示, 那這是不是
代表walkmesh cutter是不是也是一個物件? 答案是"YES", 那不是
很stupid, 你環境化了一個物件, 結果還是要運算一個物件?
請想像, 好幾塊巨石的藍圖拼湊在鄰近, 玩家及時運算時是運算很多
個物件, 但是如果全部環境化而用一張walkmesh cutter來遮住的話,
那只要運算一個物件. 況且就算是單一物件用walkmesh cutter來替代
也是划得來, 因為不用去讀物件的texture, 它只是薄薄的一張紙.

不過也要注意到, 因為它是物件的關係, 它在整體walkmesh運算下是
當作"打擾的物體", 也就是會干擾正常的綠色三角形, 如果你發現
單一物體電腦自己運算他的區域會在週邊產生比用walkmesh cutter
來的少綠色三角形的話, 我會考慮不環境化, 不過兩個以上的物件
相鄰絕對是用cutter來的划算.

walkmesh cutter的限制, 就是它沒有辦法表示高低差. 有些房子的
物件可行走的區域不只限於平面, 譬如有階梯等等, 那就不要找自
己麻煩, 就不要環境化他了吧.


<Walkmesh Helper:>

當你有更多的連接物件的經驗後你會發現, 再尋找哪個物件是可以被
其他物件連結的(有時候某個物件的某個邊緣可以被連結, 但是其他地方
都不行, 這就要靠經驗了(T_T), 因為連Obsidian的人都不一定知道)
怎麼辦? 有時候真的會試到發瘋!!!
That's where Walkmesh Helper comes into play!
它是來幫你度過這個難關的.

Walkmesh Helper在藍圖區->placeable->MISC PROPS->walkmesh helper Flat

這個東西得用圖解才行, 根據這個圖我們試圖用三個物件來製作一個橋.

在原來的情況下這樣絕對不能被連結的.

首先, 將toolbar2的collision下拉欄拉下來, 將"C2 Data"打開.
然後請由物件座標確認兩邊的橋要完全一樣高度.

擺入一個walkmesh helper(官方只有提供兩種walkmesh helper, wood
走過個mesh helper時是走過木頭的聲音, stone同理)

利用物件內容的scale來改變walkmesh helper的大小, 讓他符合整個
橋的長度. 並提高它的高度至橋面.

但是這會讓中間木板周圍的空氣也都可以行走(= =  ), 所以我們再擺入
一個helper, 讓他符合中間木板的大小和方位. 然後周圍的空氣部分用
walkmesh cutter來遮掉.





請注意, 全部配置完後, 物件都要調成環境化喔, 不然做這件事的意義
就沒有了(= =  ).

但是這東西不是萬能的, 某些地形某些場合下可能bake完後會發現不是
很滿意, 這就要靠大家去發現去經驗了.





歡迎光臨 奇幻遊戲社群 (http://fgc.tw/tuxbb/) Powered by Discuz! X2