魂狼下载:专业免费游戏下载中心

制作地图时如何避免LAG

编辑:admin 时间:2012-02-16 14:19:42 来源:魂狼

*死亡的單位如果屍體用不到,讓它爆炸或Remove

*不要關掉戰爭迷霧(fogofwar)

*減少飾物(尤其是有特效的如蝙蝠、蒼蝿......)

*避免讓太多的單位、特效、飾物等,在同一個螢幕上

*減少投射性武器的數目,它們較容易造成lag

*不要用太大的Model(像有些地圖就喜歡用“巨人“)

二、TriggerLag(触发延迟)

發生在太多Trigger同時觸發,或者設計不良的Trigger上

解決方法:

*減少用EveryXsecondsofgametime這類的事件(尤其時間間隔短的更應避免),因為每X秒就檢查一次是很耗資源的。

*把暫時用不到的Triggerturnoff,讓它不會被觸發到(即使尚未通過Condition,還是比Turn做了較多的動作)

*把Trigger合併。較不好的設計就是像Player1choosehero,Player2choosehero.......(每個玩家弄一個Trigger)。較好的設計像:

E:
Player1selectsaunit
Player2selectsaunit
Player3selectsaunit
Player4selectsaunit
C:
................
A:
CreateaXXXforTriggeringPlayer...............
............
......

簡而言之,能合併盡量合併。

*學習使用陣列和迴圈管理Trigger,盡量減少Trigger整體的數量。

三、MemoryLag(存储延迟)

這是最低需求,也是當你想做一個大型戰役、有豐富特效的地圖時,唯一能避免的。每個Maper都應該至少做到這個,除非你的地圖非常小。

當你玩完一場CustomGame,出現記分板畫面,你按下OK。如果電腦等很久才回到主畫面,表示MemoryLag的問題很嚴重,反之你可以不管它。

它的發生原因多而複雜,如果不懂就先看解決方案吧:

*當一個地圖的單位總數增加,無論Remove、使它爆炸,都沒辦法改變單位在記憶體內佔用的空間。

*當建立一個單位時,會造成遊戲短暫的暫停。一次建立越多,就越嚴重。

*太多的單位同時死亡

*用Trigger一次Pick太多的單位

*使用Trigger對單位下達指令

*HP/攻擊力過高的單位

解決方法:

*Destory所有用不到的trigger(超重要)、location(Point)、rect(region)、effect(SpecialEffect)、group(UnitGroup)......。因為它們會持續地佔用記憶體空間。

destory的方法,大部分要用JASS:
Trtgger:callDestroyTrigger(xxx)
Location(Point):callRemoveLocation(xxx)
rect(Region):callRemoveRect(xxx)
effect(SpecialEffect):calldestroyeffect(xxx)
group(UnitGroup):callDestroyGroup(xxx)

以下介紹幾種簡單可行的方法:

(1)對於執行一次就用不到的Trigger(最常見的如:MapInitilization),不要只加Turnoff,更不要不理它。請在Action最上面加上一條:
Customscript:callDestroyTrigger(GetTriggeringTrigger())

(2)創造特效後要移除,即使它只出來一下就會消失。但是在記憶體中的空間還是存在。除了JASS以外,用SpecialEffect-Destroy(Lastcreatedspecialeffect)就可以了。
創造出特效後立刻移除它,特效還是會播放至少一次,所以對於只播一次的特效,刪掉它。

(3)Point是最麻煩,最氾濫的問題,舉凡CreateSpecialEffectatPoint、CreateUnitAtPoint、IssueOrdertargetaPoint、MoveUnittoPoint、.......等等,都會創造出佔用記憶的location(Point)。要解決這種問題有點麻煩,大致作法如下:
SetTemp_Point=(Point(5000.00,2000.00))
Unit-Move(Triggeringunit)instantlytoTemp_Point
Customscript:callRemoveLocation(udg_Temp_Point)
其餘依此類推

四、Connectionlag(连接延迟)

發生在每個人的連線品質不同

(大致上都是系統的調整,在選項裡面)

解決-

*調低粒子效果(particaleffects)

 特別是TD地圖,或任何地圖擁有一堆投射性武器與特效。

 這個能夠降低記憶體使用...

*關掉3d定位音響與環境效果

 沒測試過。但是這是Blizzard所建議的。

*關掉或調低部隊陰影(shadows)和其他影像設定,

 如果你不想要顯示的話...

*GetDSL/Cable

*試著避免那種只顯示給一個人的對話訊息與電影。

 我們並沒有在chatmessages的trigger發現BUG,

 但是發現當玩家輸入訊息時會產生無法同步的現象

*遊戲開始時會Delay,這是因為正在同步玩家資料.

 通常10秒後就會正常.因此設定你的Trigger在遊戲時間0秒後

 來取代遊戲初始化將會對遊戲有幫助

热门游戏