As the game engine improves to a higher level of abstraction, it is important to upgrade its drawing capability from receiving and working with a simple View-Projection transformation to a Camera object. This change prepares the engine to support the more sophisticated shaders to be covered in later chapters. This change involves all the Shader and Renderable objects.
Though many files are involved, the actual changes are mundane; they consist of a simple replacement of the matrix with a camera. For this reason, only changes to the base objects, Renderable and SimpleShader, are shown here. You can refer to the source code files of TextureShader, SpriteShader, TextureRenderable, SpriteRenderable, SpriteAnimateRenderable, and FontRenderable for details.
Test the GameObject and GameObjectSet
The goals are to ensure proper functioning of the new GameObject class, to demonstrate customization of behaviors by individual object types, and to observe a cleaner MyGame implementation clearly reflecting the in-game logic. To accomplish these goals, three object types are defined: DyePack, Hero, and Minion. Before you begin to examine the detail implementation of these objects, following good source.
A closer examination of the previous project reveals that though there are quite a few minions moving on the screen, their motions are simple and boring. Even though there are variations in speed and direction, the motions are without purpose or awareness of other game objects in the scene. To support more sophisticated or interesting movements, a GameObject needs to be aware of the locations of other objects and determine motion based on that information.
Chasing behavior is one such example. The goal of a chasing object is usually to catch the game object that it is targeting. This requires programmatic manipulation of the chaser’s front direction and speed so it can hone in on its target. However, it is generally important to avoid implementing a chaser that has perfect aim and always hits its target—because if the projectile always hits its target and characters are unable to avoid being hit, the challenge will essentially be removed from the game. Nonetheless, this does not mean you should not imp