Function overriding
In addition to variables, functions declared in parent classes are also inherited by their children. This lets us change behavior that goes beyond simple variable changes. For example, two pickups under Inventory | UTInventory | UTTimedPowerup in the class tree, UTBerserk
and UTUDamage
, have the same function called GivenTo
which is inherited from Inventory
. Even though the function name is the same, they give the inventory items their unique behavior. UTBerserk
's GivenTo
function calls a function that increases the player's weapon firing rate, while UTUDamage
's GivenTo
function increases the player's DamageScaling
variable. These functions also set different sound effects and overlays for the two different items.
To experiment with function overriding we're going to expand our AwesomeGame
classes to include a custom GameInfo
and PlayerController
class. The GameInfo
controls the rules of the game and is what makes Deathmatch
different from "Capture the Flag" for example. A custom GameInfo
is one of the most important classes when creating our own game, and most of the time it is the first class created in a new project.
The PlayerController
is the brain behind the player's character running around on screen. It processes our input, controls the player's viewpoint, and passes and receives messages to and from other players among many other things. It is another important class in a custom game, and taking the time to read through it will help you understand how a lot of things are done in a UDK game.
So with that, let's make a custom game!