最近dota2自制地圖比較受玩家關注,可能也有很多玩家對此非常感興趣,相比war3引擎,在dota2這個平臺可以實現更多想要的東西,下面是RPG地圖制作教程詳解,有興趣不妨試著自己制作幾個地圖試試。
RPG地圖制作教程
第一章 邁出第一步
與其感慨路難行,不如馬上出發。
但是也有話說,磨刀不誤砍柴工,就讓我們先做一下準備工作吧。
為了完成第一卷的內容,我們要做的準備工作其實是很簡單的:
1、找到你的ADDONS文件夾:他一般在steamapps/common/dota2 beta/dota這個文件夾中,之后,在里面找到自己的frostivus文件夾吧,本卷教程都將會以這個文件夾里面的東西為例。
2、 找一個趁手的,能編輯txt文檔的東西,當然,系統自帶的記事本就夠了,如果覺得不趁手不夠高大上的話,那就去下載一個notepad++,或者更洋氣點 弄一個eclipse也行。當然了,有句話說得好,真正高端的程序猿向來都是只用記事本編程的,記事本才是最高大上的IDE,哈哈。
3、為了節省一些工作,請退回到dota2beta/dota這個文件夾,之后打開cfg文件夾,并右鍵創建一個新建文本文檔.txt,之后把它改名為frostivus.cfg,并在里面輸入這些內容:
dota_local_custom_enable"1"
dota_local_custom_game"holdout"
dota_local_custom_map"dota"
dota_force_gamemode"15"
update_addon_paths
dota_wait_for_players_to_load"0"
dota_wait_for_players_to_load_timeout"10"
map"frostivus"
之后,打開自己的dota2,在控制臺輸入:exec frostivus.cfg,如果你的dota2黑屏卡死了!少年啊!有點耐心好不好!多等一會…如果你看到了選人界面。
那么恭喜你,你已經完成了所有的準備工作。
第二章 令人欣喜的創造
正所謂,每次邁出第一步總是最難的,那,就讓我們把這第一步弄得簡單一些吧。
1、編輯你的addon信息:
Addoninfo(addon信息),可以在frostivus這個文件夾的根目錄中找到(為了方便以后描述,我將會把dota2beta/dota/addons /frostivus這個文件夾,成為Frostivus根目錄,而把dota2beta/dota這個文件夾,稱為dota根目錄。)
打開之后,我們可以發現里面定義了一些東西:
816:dota2的app id
addontitle:插件的標題
Addonversion: 插件的版本
addontagline:插件簡介
addonauthor:插件的作者
addonSteamGroupName:插件的玩家組
addonauthorSteamID:插件作者的steam id
addonContent_Campaign:插件是否提供多個地圖
addonURL0:插件的網站
addonDescription:插件介紹
這些東西有什么用?這些東西在目前的dota2中,一!點!用!都!沒!有!
這個東西是做什么用的呢? 請大家注意這一句話:
short descriptionthat appears in the Add-on list screen…這個是在插件列表里面顯示的一個簡介。
也就是說,這個東西,將會和同樣在frostivus文件夾中的addonimage
一起,成為今后游戲大廳中,向玩家展示的地圖列表里面顯示出來的內容。
SO,我們的第一次編輯,就從這里開始吧:
OK,如此這般,編輯完成,別忘記按CTRL+ASS保存您的工作喲。
只是改這個是不是太簡單了?
那就讓我們多做一些吧!
大家是否還記得frostivus的時候,有一次更新,大牛啊,女王啊,什么的,就突然來加入了保護骷髏王的任務中來了?
接下來,我們就來看看要做到這個到底有多容易! 也揭穿下V社到底有多偷懶。
請大家打開frostivus根目錄/scripts/npc/herolist.txt這個文件夾。
接下來,就讓我們給冥魂之夜加個新英雄吧!
在最后一行后面回車,加入這么一行內容:"npc_dota_hero_invoker" "1",按CTRL+S保存一下~
之后,讓我們檢驗下效果,和之前一樣,在控制臺輸入exec frostivus.cfg。
你就會看到,我們已經給冥魂之夜加入了一個新英雄:卡爾。
好的! 邁出第一步到此結束。
在看完這一部分之后,我希望大家可以打開frostivus根目錄,把每個文件夾都打開看看,把每個文件都打開瞄一眼~為今后的教程打好基礎!
第三章 進一步的創意
只是把卡爾弄出來了,是不是太簡單了點? 咕~~(╯﹏╰)b,確實是比較簡單,那就來點難的吧,接下來,我們要給這個卡爾弄幾個自定義技能。
為了迎合frostivus塔防的主題,我們決定,要把卡爾的技能做出如下改變:
1、卡爾現在不太需要用球什么的來切技能了。他現在擁有六個技能:陽炎沖擊,熔爐精靈,靈動迅捷,寒冰之墻,聲波爆轟,群體急速冷卻,六個技能。
2、在frostivus中,陽炎沖擊的范圍增加到500
3、在frostivus中,卡爾一次能召喚六個火人。
3、在frostivus中,靈動迅捷能使目標附帶吸血效果。
OK,接下來,就讓我們開始制作卡爾的這六個自定義技能吧!
我們先來看看卡爾的原版天火:
接下來,我們要制作自己的天火,(如果真的有去看frostivus文件夾的應該就能知道哪個是自定義的文件了吧?)
如果沒有的話,那么,就請打開frostivus根目錄/scripts/npc/npc_abilities_custom.txt這個文件。
打開之后,可以看到,里面定義了一大堆的自定義技能:
我們把我們的技能試著加在最前面,依葫蘆畫瓢:
我們的效果是讓天火技能的范圍變成500:
額,讓我先把代碼都打出來給大家:
當然,這里我并不只是改了范圍為500而已,改動還有不少。
接下來我來一個一個解釋改動內容:
BaseClass: 是一個自定義技能可以說是最重要內容,如果缺少了他,在載入地圖的時候,便會報警:attempt to create unkown...之后你的dota2就會閃退。這時候可能會有一些之前玩WE,或者其他同學會問,如果我想弄一個整個DOTA都沒出現過的技能怎么 辦?對于這個問題,V社也早 有解決方案,他給出了一個名叫ability_datadriven的技能做模板給大家用當然,這是后話,關于這個神奇的BassClass,如果接觸 過一些面向對象編程的同學,可能會知道,這就是告訴引擎,我們的invoker_sun_strike_holdout,其實就是基于invoker_sun_strike這個技能的,如果有一些東西我們沒有特別定義,那么,他就會繼承invoker_sun_strike的所有屬性, 例如,技能快捷鍵,技能圖標什么的。
AbilityBehavior:這個定義了技能的屬性,這個屬性包含了很多東西,他和AbilityType,AbilityunitTargetType這些東西,都在這個圖里面說明了:
AbilityBehavior, 可以重復定義,這里就是定義了天火是一個對點(點地板)釋放的技能,是個AOE,同時無視施法后搖。小強從12Ban變成冷板凳,就只不過是穿刺刪掉了AbilityBehavior里面DOTA_ABILITY_BEHAVIOR_UNIT_TARGET這個屬性了而已。
之后CastRange施法距離,我這里改成了2000.AbilityCooldown改成了8,這些都很好理解。
AbilitySpecial里面則是定義了這個技能的一些參數,這些參數,都是那些會顯示在英雄技能提示(就是你鼠標移上去之后會出現的那個技能面板)下方的參數。
這里改動的內容:
area_of_effect:AOE范圍,改成了500
delay:延遲,改成0,馬上生效(這里需要注意的是數據類型,要求浮點數你打了一個整形上去可能沒事,但是如果要是要求整形你打個了小數上去會發生什么呢?歡迎有興趣的同學研究研究)
damage:傷害,300 400 500 600(注意,本來的天火是一個七級的技能,這里這么定義,就是把這個天火變成了一個最多四級的技能了)
vision_distance:視野距離。vision_duration視野持續時間。
OK,編輯好了這個技能,怎么看呢?
那就讓我們馬上編輯下卡爾這個英雄吧:
打開frostivus根目錄/scripts/npc/npc_heros_custom:
定義一下卡爾:
一樣是依葫蘆畫瓢~依然是繼承各種invoker的屬性,1技能變成我們自定義的天火!
保存一下,進游戲看一眼吧!
你會看到,你的卡爾,其他都沒變,1技能變成了天火~ 而且還是施法范圍那么大的天火!
OK,其他技能的實現,給我一點時間~ 我把他們都弄出來
OK…老毛病了… 寫代碼老是看不清花括號,耽擱了點時間:
讓我們來看看這個叫做召喚六個小怪物的技能吧~(注意下這個自定義的技能圖標喲~)
借著這個自定義技能的機會,說說在DOTA2里面怎么自定義一個技能的圖標:
1、用畫圖等等工具打開任何一張現有圖標文件——你可以在frostivus/resource/flash3/images/spellicons里面找到他們。
2、畫出你想要的圖標。
3、再次以PNG的格式保存到frostivus/resource/flash3/images/spellicons這個文件夾中。
之后,只要像我這樣:
"invoker_forge_spirit_holdout"
{
"AbilityBehavior""DOTA_ABILITY_BEHAVIOR_NO_TARGET|DOTA_ABILITY_BEHAVIOR_IGNORE_CHANNEL"
"BaseClass""ability_datadriven" //如上文所說,這里使用的就是ability_datadriven作為BaseClass,這個很好用
"AbilityTextureName""test1" //只要這么一定義,技能圖標就是你的名叫test1的png文件咯,是不是很簡單方便?
"AbilityCooldown""1.0"
"AbilityManaCost""0"
"OnSpellStart" //在技能開始的時候
{
"SpawnUnit" //召喚單位
{
"UnitName""npc_dota_invoker_forged_spirit" //單位名稱
"UnitCount""6" //單位數量
"SpawnRadius""128" //單位召喚范圍
}
}//這一小段便是召喚6個小火人的代碼咯~其實只要有點英文基礎,應該就能看懂他們吧~就算沒英文基礎,看了我的翻譯,應該也能看懂到底是什么吧?
}
第四章: 讓一切有聲有色~
不知道昨天大家有沒有真的把卡爾這個英雄的六個技能都完成了呢?
就像是這樣:
圖標的創意神馬的,我才不想黑什么影魔呢。(論秀飾品的10000種方法!)
之后,讓大家試用一下自己的召喚火人的技能,是不是總覺得少了點什么?你就按一下技能,然后英雄就躺地上了,之后兩個火人出來了,一點都不高端大氣上檔次,對吧?
因此,我們之后要想著,怎么給這個技能,加一些
施法動作、
特效、還有
音效呢?