Course CGP305
An introduction to Computer Game Programming using C# and XNA
An introduction to Computer Game Programming using C# and XNA
Intended Audience
This course is aimed at those who have a reasonably good understanding of C# programming, and who wish to apply this knowledge to computer game programming for Windows and XBox platforms using the Microsoft XNA framework. XNA is a general term which includes all Microsoft game-related technologies which includes XNA Game Studio as well as the XNA Framework, a Microsoft .Net based game development framework and tools for developing games on Windows and Xbox 360.
The course will cover both the design and implementation of computer games. The exposition will be via a series of case studies and examples, with class exercises that extend the examples. Topics covered will include
- Principles of 2–D graphics, audio, and input
- Strategies for the design and creation of 2D games
- Networking and Computer Games
- XNA 3 Support for Audio
- Patterns and Idioms for Multiplayer 2D Games
- Basic 3D Game Programming
- Rendering pipelines, shaders, lighting, transformations
- Generating and making use of terrains
- Basic Animation techniques
- Basic Third Person Shooter Games
Practical Work
About 50% of the course time will be allocated to practical exercises. The exercises will be built around a small number of case studies, and so will cover the entire process from design, to implementation, to application development.
Course Contents
Overview of XNA and .NET
- .NET and XNA Game Studio
- Creating and working with .NET Game Studio Projects
- Overview of the Common Language Runtime (CLR)
- Intellisense and other "behind the scenes" features of XNA Game Studio
Rapid Revision of C# and Object Oriented Programming
- Survey of the .NET Framework and Class Library
- Value types and Reference types
- Structures and Classes
- Class Diagrams in Visual Studio
- Inheritance
- Polymorphism
- Interfaces
- Generics
- Lambda Expressions
- Extension Methods
- Error and Exception Handling
Overview of the XNA Framework - classes and services
- Audio
- Content
- Game Services
- Graphics
- Input
- Media
Exploring the Framework Class Library (FCL)
- Forms and Controls
- Regular Expressions
- File input - output
- Collection classes
- ADO.NET - data access functionality
2D Games Programming
- 2D Sprites and Fonts
- 2D Textures
- 2D Geometry and Geometric Transformations
- Scaling Sprites
- Using Collection Classes
- User interaction - input and feedback
- Saving Game State
3D Games Programming
- Overview of 3D Geometry
- Rotations, Matrices and Transformations
- Lighting
- Camera View Points
- Reflections
- Terrains
- Collision Detection
Event Driven Programming
- Finite State Machines
- Hierarchical State Machines
- Statecharts
Game Architecture Issues
- Game Architecture
- Game Logic
- Game Views
- Game Initialisation
- Game Main Loop
- Game Multithreading
- Input Devices and Input Handling
- Game User Interface Design
- Game Events and Event Handling
- Scenes and Scene Construction
- First Person Games
- Multiplayer Games
Game Analysis and Design
- Use Case Analysis
- Story Boarding
- Overview of Rule Based Programming approaches to computer games
- Overview of AI (Artificial Intelligence) approaches to computer games
