摘要:使用VS建立UnrealScript工程,用此工程來修改和編譯script文件(即是生成一個game mod)。不需使用unreal frontend軟件就可以編譯.u文件。
開發環境:XP 64bit;VS 2008;UDK beta2;
其他需求:1. 安裝了nFringe。可參考 這里。
2. 如果要用自制的UDK地圖。可參考 這里。
實現:
首先用VS新建一個UnrealScript工程,名字可隨意(這里叫MyFirstGame,如有更改,在稍后配置時自行做相應修改),但是路徑必須是如下圖(否則有可能出現編譯后文件丟失的問題,具體后述)。同時去掉"Create directory for solution"的勾。
然后開始配置MyFirstGame的屬性,具體如下:
General的配置:
Target Game: 選UE3 Mod。
UCC Path: C:\UDK\UDK-2009-11-2\Binaries\UDK.exe
Reference Source Path: C:\UDK\UDK-2009-11-2\Development\Src
Build Events不用配置,默認就行。
Build的配置:
勾上全部的勾,路徑設置:C:\UDK\UDK-2009-11-2\UTGame\Script(如果不放這里,游戲啟動后就無法讀取我們修改的mod,這個是默認路徑,暫時還不知道如何改)。
Debug的配置(懶得寫了,見圖吧):
說明幾點:
Load map at startup選項,輸入的是地圖名字,而地圖位置默認是自動讀取C:\UDK\UDK-2009-11-2\UTGame\Content\Maps下的文件。這個TestMap是之前一片bolg建立crowd system時創建的地圖,也可以使用任何在前述文件夾下游戲自帶的地圖。
禁用聲音和禁用開頭動畫選項可以不勾(我是嫌聲音太吵)。
Start with specified game type選項,這里就是指定游戲要載入我們修改的這個mod(這個mod稍后建立)。
完成以上的屬性配置后,保存工程,關閉再重新載入。這樣做的目的是讓工程載入我們設定的Reference。這時Reference Source前面應該就有+號,可以展開。此時,在MyFirstGame的根目錄下新建一個文件夾,命名為Classes(必須是這個名),在此文件夾里面新建一個UnrealScript文件,命名為GameInfo.uc。大概就是下面這個樣子(你的Reference Source下應該沒有CluOne,因為這是另一個mod):
現在我們添加UTEngine.ini到Classes文件夾下(如上圖所示)。右鍵選Add-> Existing Item,位置在C:\UDK\UDK-2009-11-2\UTGame\Config\UTEngine.ini。注意要以link的方式添加。打開UTEngine.ini,找到ModEditPackages(用查找),把它前面的;去掉,把=后面改成MyFirstGame。就是這個樣子:
這樣做就是表示我們要使用的game mod是MyFirstGame。當編譯時,就會把MyFirstGame下Classes文件夾下的uc文件一起編譯。
好了,最后一步就是修改GameInfo.uc文件。把原來的程序全部刪掉,改成以下:
class
GameInfo
extends
UTDeathmatch;
//這里就是一個開始Deathmatch的函數,即當我們啟動游戲以后就會自動開始一個Deathmatch。
function
StartMatch()
{
super(UTGame).StartMatch();
TestFunction();
}
//使用`log()函數把一句話輸入到控制臺
function
TestFunction()
{
`log("This is my first mod game!");
}
現在,我們已經完成了全部的編碼和配置工作。選Build->Build MyFirstGame。
稍等片刻,便顯示編譯成功。此時會生成一個MyFirstGame.u文件:
我在這里遇到一個很奇怪的問題,就是無論如何配置Build的輸出路徑,在運行Build后顯示的輸出路徑都是以上(即是工程保存的路徑),而實際上你在那個文件夾下是找不到MyFirstGame.u這個文件的。真實輸出的路徑則為:
C:\UDK\UDK-2009-11-2\UTGame\Script(即便我在build選項里面設置別的路徑也如此)。
注:這個問題,或者說類似的情況,在UDK論壇上也有很多人遇到,但是具體的原因和解決方法暫時還沒有發現。如果你也不幸出現了這種情況,則去C:\UDK\UDK-2009-11-2\UTGame\Script查看是否有MyFirstGame.u生成,如果有,就表示編譯成功。目前不少人都能成功得到MyFirstGame.u的辦法是在建立工程時位置一定要是我建立工程用的路徑。如果無法解決,可能只能使用unreal frontend來編譯了。
好了, 現在可以測試我們的mod了。點擊start debugging按鈕(F5)游戲就會啟動,在控制窗口中,就會出現我們輸入的log:
而游戲窗口如下,可以看到我們設置的crowd在自動生成。
