Mostly Harmless

Legacy:Compiling With UCC

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

UCC is the UnrealScript compiler. This page explains how to compile with the ucc make command. As an alternative, you may want to consider using tools like UMake or MonkeyBuild, which makes the whole thing much simpler. If you are a cygwin geek, you might like use GnuMake.

Compiling[edit]

So, you've spent some time lovingly crafting your mod using well laid out, commented, and maintainable Unreal Script. You have done the decent thing and placed your .uc class files in /UnrealTournament/YourModPackage/Classes. The big moment approaches - will it compile first time?

Well, there's only one way to find out, and that's to do it. At the very least you need to edit your Game Ini File and add your package name to the list of editable packages. Search the ini file for a list of lines starting with EditPackages. Add your package to the bottom of the list like so:

 EditPackages=YourModPackage

Save the changes. You will now be able to compile your mod using the following command:

 ucc make

By default this command examines all of the EditPackages lines searching for packages which have no corresponding .u (a compiled package file) files and attempts to compile them. If you have previously built YourModPackage and you have updated the code the build command will not recompile your package unless your first delete it. It's well worth creating a small batch file to do this for you, e.g.

 cd C:\UnrealTournament\System
 del YourModPackage.u
 ucc make

One of the things that's really easy to forget is the INT file associated with your new package. This file defines the public classes in the package. Look in any of the INT files for examples of this. Remember to include the [Public] directive at the top of the file though or your mod won't be visible in the UT front end. It's worth keeping a copy of your INT file in the /UnrealTournament/YourModPackage directory so you don't lose it and always have an up to date version.

Tips[edit]

To reduce compile time, create the following:

  • An ini file, named for example MyProject.ini. Copy UnrealTournament.ini or UT2003.ini and only include those EditPackages entries that your classes depend on.
  • Make a batch file that reads:
    ucc make ini=MyProject.ini

Note that to see output you'll still have to run it from the command prompt. (UMake does all that automatically for you and stores an .ini file called make.ini in your project directory.)

Batch File[edit]

When I still used UCC Make I made a batch file that looked like this:

 COPY MyMod.U *.U_Backup
 DEL MyMod.U
 UCC MAKE
 PAUSE

This backs up your U file, deletes it, recompiles it, and then PAUSE, "press any key to continue". This combined with the INI said above here could make a very nice way to compile.

Mod System Batch File for ut2k4[edit]

Last Updated: 15 January 2006

Easy to adjust to any mod just input the unreal tournament 2004 directory, the mod name and the package and your off.

If you want to add extra packages just copy the lines containing %package1% or package1 and replace them with %package2% or package2.

:init
@echo Off
set utk4dir="Your Unreal 2k4 Dir"
set utk4sysdir=%utk4dir%system\
 
set modname="Your Mod Name"
set moddir=%utk4dir%%modname%
set modbakdir=%moddir%SysBak\
set modlogdir=%moddir%System\logs\
 
set package1="Your Package Here"
goto bak
 
:bak
md %modbakdir%
md %modlogdir%
copy %moddir%*.ucl %modbakdir%*.ucl
copy %moddir%*.int %modbakdir%*.int
copy %moddir%*.u %modbakdir%*.u
echo //-----------------------Old Files Backed Up!------------------------
goto del
 
:del
del /q %utk4sysdir%%Package1%.* > nul
del /q %moddir%%Package1%.* > nul
echo //-----------------------Echo Old Files Deleted!----------------------
goto make
 
:make
%utk4dir%UCC.exe make -mod=%modname%
copy %utk4dir%ucc.log %modlogdir%%modname%_ucc.log
echo //---------------------------*.u Complete!----------------------------
goto make&int
 
:make&int 
%utk4Dir%UCC.exe dumpint -mod=%modname% %moddir%%package1%.u
copy %utk4sysdir%ucc.log %modlogdir%%modname%_int.log
copy %utk4sysdir%%package1%.int %moddir%%package1%.int
del %utk4sysdir%%package1%.int
del %utk4sysdir%ucc.log
echo //--------------------------*.int Complete!---------------------------
goto make&ucl
 
:make&ucl
%utk4Dir%UCC.exe exportcache -v -mod=%modname% %moddir%%Package1%.u 
copy %utk4sysdir%ucc.log %modlogdir%%modname%_ucl.log
del %utk4sysdir%ucc.log
echo //--------------------------*.ucl Complete!---------------------------
goto end
 
:end
echo //--------------------------Make Complete!---------------------------

Another ucc batch file[edit]

Displays time and result of last compilation, updates window title, restarts with single key press.

@echo off
:start
title COMPILING :: MyProject
CLS
 
Copy UCC_MyProject.log UCC_MyProject_OLD.log
 
del MyProject.u
 
ucc make -INI=MyProject.ini -LOG=UCC_MyProject.log
if errorlevel 1 goto end
 
title OK :: MyProject
findstr /c:"Log file closed" UCC_MyProject.log
 
echo.
pause
goto start
 
:end
title ERROR :: MyProject 
findstr /c:"Log file closed" UCC_MyProject.log
 
echo.
pause
goto start

Related Topics[edit]

Discussion[edit]

Xaklse: Very useful, thanks! But I had many problems with your first batch example. In case anyone has problems with it, here goes my batch file. Mine includes a custom key binding and exports cache to a single file.

:init
@echo Off
set utk4dir=C:\UT2004\
set utk4sysdir=%utk4dir%System\
 
set modname=AshuraDarkReign
set moddir=%utk4dir%%modname%\
set modsysdir=%moddir%System\
set modbakdir=%moddir%SYSBAK\
 
set package1=AshuraDarkReign
set package2=ADRGame
set package3=ADRMonsters
goto bak
 
:bak
md %modbakdir%
copy %modsysdir%*.ucl %modbakdir%*.ucl
copy %modsysdir%*.int %modbakdir%*.int
copy %modsysdir%*.u %modbakdir%*.u
echo //------------------------Old Files Backed Up!------------------------
goto del
 
:del
del /q %modsysdir%%package1%.* > nul
del /q %modsysdir%%package2%.* > nul
del /q %modsysdir%%package3%.* > nul
echo //-------------------------Old Files Deleted!-------------------------
goto make
 
:make
%utk4sysdir%UCC.exe make -mod=%modname%
copy %utk4sysdir%ucc.log %modbakdir%%modname%_ucc.log
echo //---------------------------*.u Complete!----------------------------
goto make&int
 
:make&int
%utk4sysdir%UCC.exe dumpint -mod=%modname% %modsysdir%%package1%.u
%utk4sysdir%UCC.exe dumpint -mod=%modname% %modsysdir%%package2%.u
%utk4sysdir%UCC.exe dumpint -mod=%modname% %modsysdir%%package3%.u
copy %utk4sysdir%ucc.log %modbakdir%%modname%_int.log
copy %utk4sysdir%%package1%.int %modsysdir%%package1%.int
copy %utk4sysdir%%package2%.int %modsysdir%%package2%.int
copy %utk4sysdir%%package3%.int %modsysdir%%package3%.int
del %utk4sysdir%%package1%.int
del %utk4sysdir%%package2%.int
del %utk4sysdir%%package3%.int
del %utk4sysdir%ucc.log
echo [Public]>>%modsysdir%%package1%.int
echo Object=(Class=Class,MetaClass=XInterface.GUIUserKeyBinding,Name=AshuraDarkReign.ADRKeyBindings)>>%modsysdir%%package1%.int
echo //--------------------------*.int Complete!---------------------------
goto make&ucl
 
:make&ucl
%utk4sysdir%UCC.exe exportcache -a -mod=%modname% %package1%.u %package1%.ucl
%utk4sysdir%UCC.exe exportcache -a -mod=%modname% %package2%.u %package1%.ucl
%utk4sysdir%UCC.exe exportcache -a -mod=%modname% %package3%.u %package1%.ucl
echo //--------------------------*.ucl Complete!---------------------------
goto end
 
:end
copy %utk4sysdir%ucc.log %modbakdir%%modname%_ucl.log
del %utk4sysdir%ucc.log
echo //-----------------------COMPILATION COMPLETED!-----------------------
pause

Category:Legacy Tutorial