CS-107 : Game Engine Elements
Instructors
- J. Berdat, B. Chtelain, Q. Juppet, J. Sam
- Version 1.0.0
Overview
- The tutorial provides an introduction to a basic game engine for creating 2D grid-based games.
- The examples include adaptations of games like Pokémon Emerald and Super Pacman.
- The toolkit helps in understanding object-oriented programming by working with existing code.
1. Introduction
- The document outlines the use of a simple toolkit for implementing a mini-project in the course.
- The toolkit helps in creating 2D games and understanding game engine architecture.
2. Overview of the Toolkit's Architecture
- The toolkit is divided into several packages:
io
, math
, window
, engine
, areagame
, and signal
.
- Packages:
io
: Handles file-based I/O, e.g., images.
math
: Offers mathematical models like vectors and transformations.
window
: Models graphical interfaces with elements like windows and canvases.
engine
: Contains abstract game engine elements.
areagame
: Builds on engine
for grid-based games.
signal
: Includes signal-related components.
3. Setting Up
- Instructions for setting up the tutorial in IntelliJ or Eclipse.
- Important to set IDE to UTF-8 to avoid rendering issues.
game-engine
and tutos
are the main folders; exercises are done in subpackages.
4. Tutorial I: Basics of a Grid Game
4.1 Playable
- Abstract concept of a playable element in the engine.
- Key methods:
update
, begin
, end
.
4.2 Simulation Loop
- Launching a game involves creating a game instance, file system, and graphical context.
- The game and window update at a rate determined by the refresh rate.
4.3 Grid Games
- Advantages: Simplified management of interactions and collisions.
- Key classes:
AreaGame
, Area
, AreaBehavior
.
4.4 Play Areas: Class Area
- Models a playable game area on a grid.
- Methods:
begin
, update
, draw
, registerActor
, unregisterActor
, end
.
4.5 Games with Areas: Class AreaGame
- Models games with multiple areas.
- Important methods:
addArea
, setCurrentArea
.
4.6 Generic Actors
- Toolkit allows programming games with diverse actors.
- Actor concept modeled by
engine.actor.Actor
.
4.7 Exercise 1: First Game with Areas
- Code a basic game using the toolkit elements.
- Create a
SimpleGhost
actor and define basic methods.
5. Tutorial II: Interfaces and Grid-Specific Actors
5.1 Interfaces
- Explains the importance of interfaces in encapsulation and abstraction.
5.2 Grid and Cells
AreaBehavior
models a grid with an array of Cell
objects.
- Visual behavior defined by a behavior map image.
5.3 Actor for Wallpaper
- Backgrounds are coded as actors, similar to
SimpleGhost
.
5.4 Exercise 2: First Grid Game
- Create a variant with specific grids and cells.
- Implement
Tuto2Behavior
with Tuto2CellType
enumeration.
6. Tutorial III: Interactions and Nested Classes
6.1 Refactoring with Nested Classes
- Improves design by enhancing encapsulation of
Cell
class.
6.2 Tutorial Solution
- Provides a complete solution for the tutorial exercises.
6.3 Interactions Between Actors
- Manages interactions using
Interactor
and Interactable
interfaces.
- Handles interactions at the grid level.
6.4 Generic Interactions
- Uses a visitor design pattern for interaction management.
6.5 Class AreaGraph
- Associates a connected graph with a game grid for actor movement.
6.6 Classes RPGSprite and Animation
- Offers advanced graphical representations of game objects.
6.7 Signals
- Models signals as entities with intensity, influencing game decisions.
7. Appendices
7.1 Positionable Objects
- Describes the positioning of graphical objects in the game.
7.2 Useful Data Structures
- Overview of data structures like associative tables and sets.
7.3 Graphic Resources and Level Editor
- Provides resources and a level editor for creating game assets.
This tutorial serves as an extensive guide to developing 2D grid-based games using a provided toolkit, fostering understanding of game engine architecture and programming concepts.