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