Archive for the ‘UDK’ Category

  • FaceBook
  • Twitter
  • Digg
  • StumbleUpon
  • Reddit
  • RSS

Our UDK project updating procedure

This is a basic look at the procedure we use to update our projects to newer UDK builds. I use the update for Rooks Keep I performed today as an example.

First of all, UDKs are installed in a folder named to obviously incidate the project, but also the name must show the UDK version.
The format looks like this: SuperFunGame-20XX-XX.
I install the January 2012 UDK for Rooks Keep to a folder named: RooksKeep-2012-01.
This folder sits next to previous project installs like: RooksKeep-2011-09 and so on.
I NEVER try to overwrite the old install!!!
Rooks Keep UDK installs. Pretty glorious aren't they?

Once the fresh install is done, I set up desktop shortcuts for: the x86 game exe, the x64 game exe and the editor. I set the “-log” switch on the game shortcuts so the log output window shows up while the game runs.
I then test out the shortcuts and make sure it all runs.

Now on to making it use our own project.
All conent for our projects is always contained in a folder structure seperate from the other UDK and example game content. In this case, the folder where all Rooks Keep’s content goes is ..\UDKGame\Content\RooksKeep.
To put content in the new install is very simple, I just copy the whole RooksKeep content folder. Done.
The localzation files are in a different folder and I have to copy the individual files. There are only three of them in RooksKeep for now. We never edit the stock UDK localization files.
Source code is also quite straight forward. We have three class packages and I just copy those folders across into the …\Development\Src\ folder. I make sure to NEVER edit any of the UDK’s packages and classes, so that whole headache is completely avoided here.
If you noticed that I didn’t copy the compiled .u script files, that was completely deliberate. The old binaries will just crash the new install, so I will have those compiled from source code instead.

Ok, that was all the easy stuff. Next I have to do the config files.
There are a few custom .ini files that are specific to RooksKeep. I just copy those into the new install and there is nothing to overwrite.
The main config files are called DefaultEngine.ini, DefaultGame.ini and DefaultInput.ini. With every new UDK update, something has usually been changed in these and I don’t want to erase those updates so I can’t simply overwrite the .ini files with the ones from teh older RooksKeep install. With these three, I load up both the old and the new of each one and compare them carefully and copy across all the stuff relevant to RooksKeep. I use the ‘Compare’ feature in Notepad++ which makes this whole task bloody quick and simple.
Comparing old and new DefaultEngine.ini files in Notepad++

Another thing I do is edit the searchpaths in NP++ to search the sourcecode in the new folder. It sucks to edit code and then realize you were editng the old files…
I also edit a config file of NP++ itself to update the run command I have set up to compile the code. After that is done, I compile the code.
This time I was lucky and there were no compiler errors. Nothing in the UDK’s code had been changed that caused in compatabilties in the code. This could also have something to do with avoiding as many dependancies as possible and basing off the least derived classes I possibly can.
Usually, however, there are a few errors and the only way to deal with them is to manually address each one individually as one would normally handle compile errors.
Finally, testing time. I just run the game. The game always takes a long time to start up when running a newly updated project because it has to build all the shaders for all the materials in the project’s content.
Missing shaders reported in log output

When it had finished, it started with Rooks Keep’s front end map and menu and I tested out a map and it all seemed fine. That was a very simple update!