CAP 211 - Interactive Design and Game Development

Mastering Unreal Technology, Chapter 1

Objectives:

This lesson discusses basic components of the Unreal 3 Game Engine. Objectives important to this lesson:

  1. What is Unreal?
  2. Unreal engine and components
  3. Game components
Concepts:

The chapter begins with by introducing the topic of the book: the Unreal 3 Game Engine. So, what is an engine, when you are talking about a game? A game engine is a software system that manages all the parts of the game (the assets) and uses them to best effect to produce the game experience.

We are given a couple of examples of games that use this game system, then the text discusses the history of games called Unreal. With the advent of the Unreal 3 Engine, the Unreal Editor reached a maturity that allowed it to be used for many different kinds of games.

Most of this section must be considered as fan-site praise for Unreal, which has gone through multiple iterations and improvements since its beginning. We will pass by the purple prose, love poems, and exaggerations about the game itself, and move on to more technical information. (I mean, come on... comparing the PlayStation 3 to a supercomputer?)

The Unreal Engine is composed of several software components, as shown in the diagram on page 20. The components are introduced starting on page 14.

  • Graphics Engine - the part that sends signals to the computer's graphics card. The text introduces that idea that if an object occludes (blocks the view of) another object, the graphics engine will choose not to render the blocked portion of the occluded object.
  • Sound Engine - processes the sounds played as part of the game, including music, sound effects, and dialog
  • Physics Engine - the text notes that the Unreal 3 engine uses NVIDIA's PhysX physics engine to calculate how objects react when they collide, and what sounds the collisions should produce. The physics engine also manages how materials move, from soft cloth and hair to steel and concrete.
  • Input Manager - the input manager sits between the game and the user interface; it hands off user input to the three engines above as needed
  • Network Infrastructure - the Unreal 3 engine supports multiplayer games, in a mode where one of the players' computers is used as a game server, and in a mode in which there is a dedicated server for the game (preferred mode)
  • UnrealScript Interpreter - the text tells us that this component provides an interface for programmers to change the way the game engine behaves; this text will not cover this subject, but it is covered in other books on the subject.

Pages 18 and 19 describe the game loop, the sequence of events that is repeated as long as the game is running. The Unreal 3 engine is described as being event-driven, as many game engines are. This means that the game loop program is constantly checking for input from the player and the game (events) that will affect what the game engine components must do next. The game engine holds a list of events that are sorted by their importance to the game. If two or more events occur at the same time, the most important event is processed first. Otherwise, input is processed on a First In, First Out basis. As each event is processed, the game engine components that must react to the event are notified.

Page 21 begins a section of the chapter that introduces new terms, as they apply to building a game or a game level in the Unreal 3 engine.

  • asset - anything the game design team must create or provide to build a game
  • package - collections of assets that will be used together in the game
  • map - levels or scenes in a game are also called maps; maps can use assets from existing packages, but they have their own packages as well. The text points out a feature of the game engine called culling. If you add an asset to the game by putting it in a map/level package, the game engine will erase that asset unless it is actually used in that map/level. For this reason, assets that are used in multiple levels should be stored in packages that are separate from the level's package.
  • texture - a graphic file asset that gives color and feel to an object in the game (This asset must be created with other software, like Photoshop.)
  • material - an asset that describes how an object interacts with light in a scene; it also holds the instructions for what texture(s) to use for the object; a material can contain several textures
  • sound - sound files can be managed with the SoundCue Editor and with Kismet to script sound events. The SoundCue Editor uses .wav files as source material for its sounds.

The text goes on to describe two kinds of mesh assets used in games: Static Meshes and Skeletal Meshes. A static mesh is used for objects in a scene, while a skeletal mesh is used for a character. A big difference is that a skeletal mesh must be rigged (fitted with an animatable skeleton) before it is imported into the game because it is meant to be animated. The animation of a skeletal mesh is accomplished by animating the associated skeleton.

Static meshes are used for non-character objects, and they are meant to be used in the game as instances. The first time an instanced object is used in the game, it takes up the most graphic memory, storing the entire image. Each subsequent instance just refers to the initially stored image, and only requires that the graphics engine specify where in the scene to put the new copy, and how to deploy it (e.g. rotated or partially occluded). The text warns that you can make a new static mesh for each object in a scene, but it is a bad idea because you can run out of memory that way.

Meshes will be constructed in 3DS Max in our classroom, and texture files will be made with Photoshop. Once the asset files exist, we can bring them into a game level with the Unreal Editor, described on page 26.