MMoodduullee HHaannddbbooookk - QUBP.Hanna/CSC3049/resources/CSC3049 Module Handbook...MMoodduullee...

14
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

Transcript of MMoodduullee HHaannddbbooookk - QUBP.Hanna/CSC3049/resources/CSC3049 Module Handbook...MMoodduullee...

MMoodduullee HHaannddbbooookk DDrr.. PPhhiilliipp HHaannnnaa

CCoonntteennttss

PPaaggee 11:: CCoovveerr

PPaaggee 22:: IInnttrroodduuccttiioonn // LLeeaarrnniinngg oouuttccoommeess

PPaaggee 33:: OOvveerrvviieeww ooff AAsssseessssmmeenntt

PPaaggee 44:: MMoodduullee wweeeekkllyy ccoonntteenntt bbrreeaakkddoowwnn

PPaaggee 55:: LLeeaarrnniinngg oonn tthhiiss mmoodduullee

PPaaggee 66:: PPrroojjeecctt iinnttrroodduuccttiioonn

PPaaggee 77:: PPrroojjeecctt mmeennuu

PPaaggee 88:: SSeelleeccttiinngg aa pprroojjeecctt

PPaaggee 99:: DDeevveellooppmmeenntt eennvviirroonnmmeenntt

PPaaggee 1100:: PPrroojjeecctt aassssuurraanncceess

PPaaggee 1111:: PPrroojjeecctt ppllaann

PPaaggee 1122:: RReeccoommmmeennddeedd rreeaaddiinngg II

PPaaggee 1133:: RReeccoommmmeennddeedd rreeaaddiinngg IIII

PPaaggee 1144:: UUsseeffuull IInnffoorrmmaattiioonn

IInnttrroodduuccttiioonn aanndd MMoodduullee OOvveerrvviieeww

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

developing something.

TTyyppeess ooff ddeevveellooppmmeenntt eennvviirroonnmmeenntt

You can select one of three possible development environments:

1. XNA

2. C++ using OpenGL

3. C++ using DirectX

XNA you will already have explored during Stage 2. You will

also explore OpenGL development within your Computer

Graphics module. DirectX, for many, offers an unexplored API.

You are free to select the development environment within which you wish to build your

project. Given the current strong emphasis on C++ coding within the games industry there

would be clear merit in opting for a C++ development - although depending on the type of

career you wish to explore this may not be an issue.

Please be aware that if you decide to select a development environment with which you are

not familiar, then, I will take this into account when assessing your project. For example,

given two functionally identical software components, one developed in C++ and DirectX

(assuming the student had no previous exposure to DirectX) and the other developed using

XNA, the XNA project would not receive the same mark as the C++/DirectX project as the

overall challenge between the two projects was different.

I do want to stress here that my aim is not to either reward or punish development using a

particular environment, but to provide a fair and consistent baseline where overall project

complexity is taken into consideration within the assessment. In this regard, it is your choice if

you want to allocate some of your project complexity to learning a new language, API, etc.

Aside: Whilst I will ensure that the assessment is fair and consistent across all projects, I

would recommend using C++ with either OpenGL or DirectX in terms of providing with you

with a well balanced set of programming skills. In terms of selecting OpenGL over DirectX, this

will depend on personal preference and future plans. Learning DirectX will provide you with

experience of a widely used API, but sticking with OpenGL may mean you can explore your

chosen project area in greater depth.

AAssssuurraanncceess

Within CSC2007 I encouraged students to make

use of existing code, stressing that there was no

need to reinvent the wheel and that reusing

existing solutions is an integral aspect of most

forms of software development (most certainly

including game development).

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.

So why am I adopting two very different approaches across both CSC2007 and CSC3049? The

possibility of effects due to senility aside, there is a solid educational basis underpinning this

decision: the types of ‘wheel’ that need to be reinvented within this module are both

complex and difficult to develop. By developing such components from the ground up you

will:

Gain a much better insight into how the components operate as you will have to think

deeply and carefully about your solution and get ‘close to the code’.

Experience a difficult, but hopefully rewarding, development task that will result in you

becoming a more capable programmer.

In other words, the hassle and pain of developing components from the ground up will

ultimately result in a beneficial learning experience – and this really is the whole purpose of

this module, and indeed your entire degree.

No matter which component(s) you decide to develop, you will be able to find existing source

code that you may consult and explore 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.

I know that the majority of students will follow the module requirements; however, it is

important I point out the dire consequences lest anyone be subject to temptation once the

going gets tough and a readymade solution is available with a quiet, but persistent, voice

saying ‘go on, no one will never know’... well, you might manage to sneak it past me, then

again you might not. Any detected plagiarism on this module will be automatically classified

as a major academic offense and as the module is 1.5 weighted, this means it would have a

major impact on your entire degree. It is simply not worth the risk.

PPrroojjeecctt ppllaann

During your CSC3045 Agile & Component Based Development module you will learn about

agile development techniques. An agile approach meshes well with this type of project (and

indeed most types of software development) and I will tentative assume that everyone will

adopt an agile approach towards tackling the project (thereby accounting for the types of

hand-in required following each sprint in the second semester).

SSeemmeesstteerr 11

SSeemmeesstteerr 22

Precise details of the project assessment can be found within the CSC3049 Project Document

Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Week 12

Aims and aspirations document: This

document permits you to set-out your

initial aims and goals for the module,

i.e. what you find interesting, what

type of development appeals, etc. This

will be of use in helping me understand

what you want to get out of the

module.

Project proposal document: This document will set out

what you hope to accomplish within the project in terms of

the type and features of the game engine component(s)

you wish to develop. In accordance with an agile approach

you will also put together a collection of user stories

describing the system you plan to develop. As a reminder,

the project proposal is not a binding document –it simply

defines what you hope to accomplish.

Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Week 12

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 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

recommended to anyone wishing to explore game AI.

LLeeccttuurree//PPrroojjeecctt TTiimmeess::

Semester One Lectures:

Thursday Lecture 10:00 – 11:00 BCB/0G/025

Friday Lecture 14:00 – 16:00 BCB/0G/025

Semester Two Project Meetings:

Sprint Project Meetings TBC

KKeeyy UURRLLss::

Queen’s Online http://www.qol.qub.ac.uk

XNA App Hub http://create.msdn.com

DirectX http://www.microsoft.com/directx

DirectX MSDN http://msdn.microsoft.com/directx

OpenGL http://www.opengl.org/

Blender (Model editor) http://www.blender.org/

GIMP (Image editor) http://www.gimp.org/

Audacity (Sound editor) http://audacity.sourceforge.net/

CCoonnttaacctt IInnffoorrmmaattiioonn::

Lecturer

Philip Hanna

028 9097 4634/1779

Room OG 003, 14 Malone Road

[email protected]

MSN/Messenger: Search for [email protected]