Introduction and creating the GameInfo Class
This tutorial will cover most of the things that was seen in the basic Isometric tutorial. What is new is that a lot of people have asked me how to include those modifications in respect to the basic unreal tournament code included in UDK. We will cover how to modify the camera in a isometric view. The basics of inventory will be explained as well as how to make a gun work. This again will all be in the context of the UT code folder that is standard with each UDK install. I will refer the UT code base as UT code through this tutorial for sake of simplicity.
Here is a list of the classes we will implement, please note that these files have been supplied by Yorg Kuijs, so most of the credit goes to him, as I only supplemented the tutorials and explanation. Of worthy note, I added steps to add a 2d textured cursor instead of the 3d cursor you might have seen before.
Classes that are going to be in this project :
- CustomUTGameInfo
- CustomCamera
- CustomHUD
- CustomLinkGun
- CustomPawn
- CustomPlayerController
you are free to use any nomenclature you wish for these classes, but they will go as those names for the simplicity of the tutorial.
This tutorial will take for granted that you have read how to set up a solution and will assume you have made the proper modifications to the unreal *.ini files so that your new project will compile and work. It also assume you are using visual studio and nFringe.
The game info class (CustomUTGameInfo.uc)
The first thing any UDK project need is a new project descriptor that comes in the form of the game info class. Since Epic was kind enough to make one, we will use it as a base for our modification of the UT base code.
Create a file and name it CustomUTGameInfo.uc, inside change the default extend object to extend UTGame. Should you feel the itch to know more about the class, its the foundation of the UT game UDK boots on when you start it bare.
You will have to specify the default properties of this class at the bottom. Here is a list of what needs to be added :
defaultproperties
{
bScoreDeaths=true
// Deathmatch games don't care about teams for voice chat
bIgnoreTeamForVoiceChat=true
bGivePhysicsGun=false
bDelayedStart=false
// Replace [YourProjectName] by your project's folder name
PlayerControllerClass=class'[YourProjectName].CustomPlayerController'
DefaultPawnClass=class'[YourProjectName].CustomPawn'
HUDType=class'[YourProjectName].CustomHUD'
DefaultInventory(0)=class'[YourProjectName].CustomLinkGun'
}
Now I commented some things here I found irrelevant, you should ask the author about why he actually chose to add these because I removed what I found was not needed. In the source code download you will notice I commented some functions that are not needed for the basics of this tutorial to work. Feel free to uncomment them and see what happens, for example GetHandicapNeed is for the AI.
This should be it for the default controller, a task that was not very hard to do as you can see, most of this tutorial should be easy if you did the iso from the gound up. If you compile at this point, there will be errors because the compiler will not find the classes : CustomPlayerController, CustomPawn and CustomHUD and CustomLinkGun. We will create those classes later, lets take a look at what we did here for the inventory to work.
Go to the top of the file and right click on the UTGame text, if your nFringe is correctly installed and it has parsed the files, you will be able to right click and see in the context menu “Go To Definition”. Now this is really handy if you want to navigate to UT game code. What I want to to look at is the variable declaration on line
DefaultInventory is used to store the weapons and my guess is about anything an actor of your game would want. This variable is an array of element of class Inventory. Now you can do the go to definition trick on it or you can read the class comment : “Inventory is the parent class of all actors that can be carried by other actors. Inventory items are placed in the holding actor’s inventory chain, a linked list of inventory actors. Each inventory class knows what pickup can spawn it (its PickupClass). When tossed out (using the DropFrom() function), inventory items spawn a DroppedPickup actor to hold them.”
Now this should be enough to understand that anything that it represent an item, may it be a toaster up to a rocket launcher.
Should you try to add inventory manually, there is a function declared in the UTGame.uc called AddDefaultInventory and it takes the target pawn as receiver of the new item. You should look for more methods and functions pertaining to the inventory, its pretty easy to localize in Visual studio with a CTRL+F (DefaultInventory). In conclusion you can see that in the UTGame.uc class default properties, the UTWeap_LinkGun is given by default. We overrid this in our CustomGameInfo class to add our own linkGun version.
Creating the Game Player Controller part 1

I added the “unneeded” stuff, because my GameInfo started as a copy off of UTDeathmatch, if you removed the unneeded stuff and extended UTDeahtmatch it’d have the same result. I intend to not have Deathmatch, but for testing purposes I made sure to keep that stuff until I can remove it.
I highly recommended getting rid of it before trying to extend Team Deathmatch or VCTF.
Also you mispelled my last name
It’s Kuijs, not Kuijis.
Sorry about the name
its been corrected, and thanks for the information and the code.