M M o o d d u u l l e e H H a a n n d d b b o o o o k k Dr. Philip Hanna Contents Page 1: Cover Page 2: Introduction / Learning outcomes Page 3: Overview of Assessment Page 4: Module weekly content breakdown Page 5: Learning on this module Page 6: Project introduction Page 7: Project menu Page 8: Selecting a project Page 9: Development environment Page 10: Project assurances Page 11: Project plan Page 12: Recommended reading I Page 13: Recommended reading II Page 14: Useful Information
14
Embed
MMoodduullee HHaannddbbooookk - QUBP.Hanna/CSC3049/resources/CSC3049 Module Handbook...MMoodduullee HHaannddbbooookk ... deferred rendering, 9 graphical LOD , ... XNA you will already
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Welcome to CSC3049 Aspects of Game Engine Development. In a nutshell, this module
explores a number of different software components commonly found within 3D game
engines. The module will also provide you with an opportunity to develop one or more game
engine components. This will not only improve your programming skills, but importantly also
provide you with a means of enriching your software portfolio and demonstrating your
development skills.
I do hope you will enjoy the module and find it both interesting and informative. Certainly I
have found that the types of programming required to develop a game engine encompasses
one of the most technically interesting and exciting forms of application development.
This document is structured as follows:
• Overview of the learning outcomes and assessment associated with this module.
• Module contents and weekly lecture schedule
• Project details, timeline and assessment pro-forma
• Recommended reading and useful links/information
LLeeaarrnniinngg OOuuttccoommeess
The core learning outcomes for this module are as follows:
1. Demonstrate 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. Ability to apply and synthesis knowledge and understanding in order to create one or
more game engine components.
Can I sum up the above into a more meaningful
chunk of digestible information? In essence,
following the module, you should have a good
understanding of the different components which
go together to make a game engine and you should
have demonstrated this understanding by
developing some of your own game engine
components.
AAsssseessssmmeenntt
This module does not have a final unseen written examination. Instead, assessment is
100% project based
During the first semester you will learn about different game engine components,
building up your knowledge and understanding of how a game engine operates. At the
end of the first semester you will decide which game engine component(s) most interest
you and put forward a project proposal involving the selected components. During the
second semester you will undertake your project, developing a game engine harness that
permits you to realise your chosen game engine component(s). At the end of the second
semester you will submit your project, which will be assessed and will provide your mark
for this module. As the module is 1.5 weighted this will be an important piece of work.
Why did I opt for a project? Mostly because I do not like unseen written examinations
(which tend to, in part, measure ‘examination technique’ and simply do not provide a
test which is in anyway reflective of what ‘real’ programmers do in the ‘real’ world).
Projects also tend to result in better learning, providing you with an opportunity to
further build up your programming skills. Finally, and very importantly, the project will
provide you with an opportunity to enrich your programming portfolio, offering a very
real demonstration of your programming prowess.
More precise details on the project’s assessment can be found within the CSC3049
Project Document
Important: The module has been scheduled to make sure you have a minimum of one
semester in which to tackle the project. However, 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 it is that you wish to develop.
MMoodduullee CCoonntteenntt
The topics to be explored are as set out in the following weekly plan:
Warning: Depending on time and focus constraints the order might be a bit different, or
certain items skipped. 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 (the amount of
‘notes’ you will have at the end of the module may be
large in comparison to other Level 3 module).
However, there is a danger in exploring too much
material. In particular, as the amount of material
increases then it becomes more difficult for you to
find the time to be able to adequately explore the
material. From an educational point of view it is
utterly pointless of me to throw large quantities of
information if you will be unable to find the time
needed to explore and learn.
So why have I included a lot of material? And how can
you use the material to help you learn?
I included a lot of material as I felt it was important to explore module material to an
extent where you could potentially build your own implementation. However, that said,
the topics explored within the module hold considerably more depth and complexity
beyond that which we will cover.
In terms of how you can use the material to help you learn, I do not expect you to explore
every single topic covered within the module to the same level of depth. Topics which are
of particular interest or of direct use to your planned project should be thoroughly
explored. Topics which are not of particular interest should be explored to the extent
where you are happy you understand the basic principles behind the topic.
PPrroojjeecctt
Without any doubt whatsoever, the project is the most important aspect of this module,
providing an opportunity for you to build up and demonstrate your programming skills and
accounting for 100% of the assessment on this module. As the module has a weighting of 1.5
this also entails that the project will have a significant contribution towards your overall
degree classification. Finally, given the importance of developing a portfolio of work, the
project will also provide a means of demonstrating your programming competency to
potential placement providers and employers.
As mentioned, the project will involve the creation of one or more game engine components.
In keeping with the learning philosophy adopted within CSC2007, I want to provide you with
the freedom to select your own project. More precisely, I would love for you to select a
project that you feel is going to be fun, interesting and useful to your future plans. This will
help provide you with the motivational bedrock on which to survive the many frustrating
debugging sessions which doubtless await you!
Whilst I do wish to give you as much freedom as possible, the project will obviously need to
be constrained within the broad confines of game engine architecture. In particular, all
projects will need to build some form of game object model, with game objects held within
some form of scene graph and graphically rendered on screen.
The following page provides a menu
of recommended, albeit suggestively,
project components. This is then
followed by information on how you
might wish to combine menu options
to arrive at your chosen project.
SSeelleeccttiinngg aa pprroojjeecctt
The above menu of options can be combined in
different ways. For example, as a main course you
might decide to write a 3D physics component
combined with a basic scene graph and renderer side
order. Alternatively, you might decide that your main
course will be to develop a renderer component
supporting a number of graphical effects, combined
with a very basic scene graph.
The above menu of options is not exhaustive. In particular, you can also propose your own
project exploring other aspects of a game engine. Do be aware that I will need to approve
any such project to ensure that it will provide you with an opportunity to demonstrate the
learning outcomes assessed within this module.
As with CSC2007, your initial project plan is not intended to be highly binding; rather it is
intended to provide you with a general development direction towards which you can move.
If during your project you wish to change emphasis or
include/remove features then this will not be a problem. The
assessment will be simply and wholly based on the software
you have develop at the end of the project and not on what
you planned to developed at the start of the project. In other
words, you will only be awarded marks for what you have
managed to develop and you will never be punished for not
• Retrospective: providing a reflective account of work over the last
two weeks and reviewing your approach towards the project. You
might also decide to add/remove/change your user stories at this
point if you feel the project should take on a different direction.
• Sprint planning: providing details of the user stories you intend to
implement 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 component(s) alongside
a suitable test harness enabling
component functionality to be
demonstrated.
Week 12 – Project Demonstration
Demonstration of the developed game
engine components.
RReeccoommmmeennddeedd RReeaaddiinngg
The module contains a lot of reading. Whilst you should explore all topics contained within
the module, you will likely wish to concentrate on certain areas of interest (obviously those
you intend to explore within your project!).
A total of four text books are recommended. I really do recommend that you consider
purchasing the books as they all provide an excellent reference source and explore topics
which are of real relevance to game development. In other words, all of the text books will
serve you well in the future.
Throughout the module you will also be provided with relevant research papers, book
extracts, etc. which you can accumulate to provide a complete set of lecture notes.
The recommended textbooks are:
Game Physics Engine Development
Hardcover: 552 pages
Publisher: Morgan Kaufmann (26 Sep 2010), 2nd Ed.
ISBN-10: 0123819768
ISBN-13: 978-0123819765
This book provides an excellent step-by-step development of a
game physics engine. It is very well structured and offers an
educational read. This module draws upon this textbook in
order to explore rigid body dynamics. If you intend to include
physics as part of your project, then you should definitely
purchase this book.
Game Engine Architecture Hardcover: 864 pages Publisher: A K Peters (May 2009) ISBN-10: 1568814135 ISBN-13: 978-1568814131 This book offers a high-level, comprehensive exploration of
game engine architecture. This module refers to the book in
terms of exploring high level architecture, game object models,
animation, etc.
RReeccoommmmeennddeedd RReeaaddiinngg
Real-Time Collision Detection
Hardcover: 593 pages
Publisher: Morgan Kaufmann; Har/Cdr edition (20 Jan
2005)
ISBN-10: 1558607323
ISBN-13: 978-1558607323
This book offers a broad and in-depth exploration of different
real-time collision detection techniques. Whilst it is the most
mathematically complex of the recommended textbooks, it
provides a really excellent text for exploring object bounds,
intersection detection methods, spatial decomposition, etc.
This module draws upon the book when exploring collision
detection, etc. If your project focussed on scene graphs,
intersection detection, etc. then you should definitely purchase
this book.
Artificial Intelligence for Games Hardcover: 896 pages Publisher: Morgan Kaufmann; Har/DVD edition (18 Sep 2009) , 2nd Ed. ISBN-10: 0123747317 ISBN-13: 978-0123747310 This book provides an extensive exploration of different AI
techniques used within games. Whilst we do not explicitly
explore AI within this module (instead relying upon the
introductory coverage provided in CSC2007) this textbook is