1.1. M ODULE O VERVIEW Introduction to CSC3049 and module overview
Welcome to CSC3049 Aspects of Game Engine Development
In a nutshell, this module explores a number of different software component commonly found within 3d game engines. The module will also provide you with an opportunity to develop one or more game engine components. The module aims to: Improve your understanding of game engines Improve your programming prowess Enrich your software portfolio
Video not available in on-line slides
1. Knowledge and understanding of: Aspects needed to construct a game engine, including: architecture, update and render pipelines, scene graph formation, collision detection and contact resolution, and component integration. Core components commonly found within games, including: real-time physics, terrain modelling, animation, and graphical effects. 2. Apply and synthesis knowledge and understanding in order to create one or more game engine components.
This module is 100% project based During the first semester you will learn about different game engine components. You will finalise your project selection at the end of the first semester and implement it during the second semester. More precise details on the project’s assessment can be found within the CSC3049 Project Document Important: You don’t have to wait until the start of the second semester before commencing your project. You can start the project as soon as you’ve got a solid idea for what you wish to develop.
Warning: Weeks 9-11 might skip certain listed items. Additionally, the module delivery might extend into Week 12. Introduction and Game Engine Overview Week 1 Collision Detection: including mathematical background, bounding volumes, closest point and primitive/ray intersection, bounding volume hierarchies, spatial partitioning. Weeks 2 – 4: Rigid Body Dynamics: including laws of motion, simulation and modelling aspects, handling rotation and orientation, contact generation including resting contacts and friction, stability and optimisation. Weeks 5 – 7: Synthesis break Week 8 Rendering and Animation: e.g. render pipelines, deferred rendering, graphical LOD, controllers and animation. Week 9 Graphics Effects: e.g. shadows, water, terrain, decals, bill boarding, instancing, relief mapping. Week 10 Other Game Engine Components: e.g. audio, networking, hand-held devices. Week 11
This module will cover a lot of ground. However, there is a danger in exploring too much material (educationally it is pointless of me to throw an unmanageable quantity of information). Topics which are of particular interest or of use to your planned project should be thoroughly explored. Other topics should be explored to the extent where you are happy you understand the basic principles behind the topic.
The project is the most important aspect of this module (and will have a significant contribution towards your overall degree classification). The project also provides a means of enriching your software portfolio. You will have the freedom to select your own project (within the broad confines of game engine architecture). I would love for you to select a project that you feel is going to be fun, interesting and useful to your future plans.
Collision detection: rich set of collision detection algorithms, combined with suitable forms of game object bound construction. Scene graphs: extensive implementation of a complex scene graph (e.g. BSP trees) or a selection of several workable scene graphs. Physics: 2D or 3D rigid body dynamic simulator. Renderer: flexible and high-performance rendering component rendering a range of graphical primitives using various graphical effects. Level of detail: one or more LOD terrain generation techniques or implementation of an automatic mesh LOD constructor. Animation: flexible and capable animation content capable of providing basic forms of skeletal animation. Graphics effects: rich library of pre- and post-render graphical effects possibly including lighting, shadowing, decals, bill-boarding, relief mapping, etc. AI: flexible artificial intelligence component capable of efficiently managing a range of AI tasks. Intersection detection: basic game object bounds and intersection tests Scene graph: basic implementation of a simple scene graph Renderer: basic renderer with limited rendering capability All projects will need some form of game object model, scene graph and renderer.
The menu of options can be combined in different ways, nor is it exhaustive (you may propose your own game engine project, subject to approval). Important: Your initial project plan is not intended to be highly binding; rather it is intended to provide a general development direction. The assessment will be based on the development at the end of the project and not on what was planned (you will only be awarded for what you have developed and never punished for not developing something.
You can select one of three possible development environments: 1.XNA 2.C++ using OpenGL 3.C++ using DirectX If aiming for a career in the games industry, select C++. Important: If you select an development environment with which you are not familiar, then, I will take this into account when assessing your project (I will ensure there is a fair and consistent baseline where overall project complexity is taken into consideration)
Important: This module adopts the opposite view to CSC2007. I do not want you to make use of existing code, and I do want you to reinvent the wheel. Warning: Plagiarism on this module would have a significant effect on your entire degree. Why? To gain a better insight into how each components operate, and to become a more capable programmer. Existing solutions for each component are available and may be consulted and explored in order to help you better understand a coded solution and to inspire your own coded solution. The use of existing source code cannot extend beyond this.
The project will assume an agile development approach. Week 1Week 2Week 3Week 4Week 5Week 6Week 7Week 8Week 9Week 10Week 11 Week 12 Aims and aspiration document: Your initial aims and goals, i.e. what you find interesting, what development appeals, etc. Project proposal document: Setting out what you hope to accomplish in terms of the type and features of game engine component to develop. You will also put together a collection of user stories describing the system you plan to develop. Reminder: the project proposal is not binding.
Sprint 1 Report Sprint 2 Report Sprint 3 Report Sprint 4 Report Sprint 5 Report Submission and Demo Each sprint progress report will consist of : Retrospective: providing a reflective account of work over the last two weeks. You can also revise your user stories if the project takes on a different direction. Sprint planning: providing details the user stories you intend to implemented within the next sprint. Sprint review meeting: Demonstration of the code developed during the completed sprint. Start Week 12 – Project submission Final project submission, comprising game engine components alongside a suitable test harness enabling component functionality to be demonstrated. Week 12 – Project Demonstration Demonstration of the developed game engine components. Week 1Week 2Week 3Week 4Week 5Week 6Week 7Week 8Week 9Week 10Week 11 Week 12
A total of four text books are recommended. They all provide an excellent reference source and are highly recommended (they will serve you well in the future). Extra reading material will be provided throughout the module. Game Physics Engine DevelopmentGame Engine Architecture
Real-Time Collision DetectionArtificial Intelligence for Games
Semester One Lectures: Thursday Lecture10:00 – 11:00 BCB / Java Suite Friday Lecture 14:00 – 16:00 BCB / java Suite Semester Two Project Meetings: Fortnightly Project MeetingsTBC Key URLs: Queen’s Onlinehttp:// XNA Creators Clubhttp://creators.xna.com/ DirectXhttp:// DirectX MSDNhttp://msdn.microsoft.com/directx OpenGLhttp:// Blender (Model editor) GIMP (Image editor) Audacity (Sound editor)
Directed reading on game engine architecture Directed reading
Read the CSC3049 Module Handbook for more information on the topics explored today. Directed reading
To do: Read the recommended directed reading Do purchase the recommended reading Today we explored: What CSC3049 is all about. Module contents Project details