摘要:使用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在自動生成。