COMPUTER GAME DEVELOPMENT
There is no formal prerequisite. The course assumes some basic knowledge of mathematics, algorithms and programming, but otherwise all of the knowledge required are given within the course. A 3D Computer Graphics course greatly helps, and can be an excellent complement of this course, but is not a formal prerequisite either.
The exam consists of a two-hour written test aimed at establishing basic theoretical knowledge of the student. This test consists of a set of closed or short open questions, and can include mathematical exercises. Performing this test satisfactorily is a prerequisite for submitting a project (see below).
Students must also deliver a project agreed with the lecturer (a small video-game prototype) where some or all of the elements thought in the course chosen by the student are put into practice. The project is assessed judged in session with each student. The design of the game (e.g. gameplay) is entirely up to the students, and it is not an element of the assessment.
Group projects are allowed, but in this case there must be a clear division of implementation tasks, and the project needs to be more complete.
This course provides some of the basic knowledge relevant to the development of a modern video game.
To this end, the course illustrates the technologies (algorithms, data structures, techniques) ubiquitously adopted by modern video games, with a strong emphasis on 3D games.
The targeted learning outcomes can be summarized as follows:
-- Knowledge and understanding
* essentials of: basic knowledge of the state of the game industry, its practices, its current status (including: hi-level tasks, composition of a game dev team, distribution).
* knowledge of the math employed as a backbone of 2D and especially 3D games: point and vector algebra, rigid and similar spatial transformation.
-- Applying knowledge and understanding
* knowledge of the data structures employed by a video game to internally represents its assets, including for 3D models, materials, 3D animations, NPC behavior, spatial transformation, composite dynamic scenes.
* awareness of the technical solutions (algorithms, tools, libraries, languages) employed in the industry to address the numerous technical sub-task that must be faced during the development of a Video Game: game physical simulation, game networking, game AI, game sound rendering (essentials only), game 3D rendering, game GUI (essentials only)
-- Learning skills
* ability to quickly acquire familiarity with any given video game development toolkit or game engine, e.g. recognizing the components, understanding the technical language adopted, the way challenges are addressed;
* ultimately, ability to contribute to the development of a video game, either from scratch, or by adoption of specialized game engines, libraries, SDKs, or IDEs
-- Judgements skills
* Many of the above items include a comparative illustration of different, commonly employed alternatives, so that the student is given the tools to identify the best route for a given specific case.
(All timings are given as [X h + Y h], X being lectures and Y being practices).
Lez 1: Introduction: Game Dev (2h+0h)
Historical notes. Intro to game technologies: assets, game engines, game tools. Game Dev teams: composition, roles. Modding, Procedurality, Baking in games.
Lez 2: preliminary: Mathematics for Games (3.5h+6h)
Vectors and point algebra. Spatial transformations: representation, application, interpolation, inversion, cumulation. Representation of 3D Rotations. Quaternions.
Lez 3: data structures: The Scene Graph Structure (1h+4h)
Lez 4: data structures: 3D Models in games (2h+4h)
Indexed meshes. Per vertex attributes. Resolution, data format, attributes used in video games. Authoring 3D models.
Lez 5: data structures: Materials and Textures (1.5h+2h)
Type of textures: Normal maps, diffuse maps, displacement maps. Uses, authoring.
Lez 6: Game Physics (3.5h+8h)
Dynamics simulation: Euler methods, Leapfrog, Verlet. Position based dynamics. Modelling physical constraints. Collision detection and response. Data structures: geometric proxies: simple and hierarchical structures.
Lez 7: Particle Systems (0h+2h)
Concepts, authoring, uses.
Lez 8: Scripted/baked animations in games (3.5h+4h)
Data structures / overview for: kinematic animations, blend shapes, skeletal animations, geometry caches. Characteristics. Usages. Interpolation. Authoring techniques.
Lez 9: Game Networking (2h+0h):
Comparisons of algorithms and strategies for distributed physics.
Lez 10: Artificial Intelligence for games (2h+2h)
Overview, methodologies, algorithm for common subtasks. Modelling the AI mind. Modelling the senses. FSM. Hierarchical FSM. Behavioral trees. Low level AI behaviors: routing (A* algorithm), aiming.
Lez 11: Audio in games (1h+1h)
Data structures, commonly used abstractions. Authoring.
Lez 12: Rendering Techinques for games (2h+3h)
Challenges and solutions. Libraries. Camera positioning – view transform. Lighting: commonly used techniques. Physically based lighting and rendering (essentials).
Suggested (but not required) textbooks:
Mathematics for 3D Game Programming and Computer Graphics
Eric Lengyel
(any edition or editor)
Game Engine Architecture
Jason Gregory
(any edition or editor)
Lectures in the classroom.
Some of contents covered by course are exemplified in practice also through the adoption of a small set of specific game-dev tools, toward the above outlined general objectives. To this end, Unity has employed in the majority of past editions of this course, but different engines or IDEs (such as Unreal Engine) can be used in conjunction with it, or in its place, in future editions.
Professors
Borrowers
-
Degree course in: INFORMATICA