1. Course Name: Parallel Architecture for Games
2. Writers: Mike Pearce, et al.
3. Targeted availability: Q4 2008
4. Brief Course Description
This module examines a game architecture developed by Intel, designed to take advantage of all CPU cores available within a system. This courseware explores how to support and overcome the challenges of parallelism in the context of a modern game architecture. It also provides a parallel framework on which to build threaded scalable games.
The lecture overview describes this parallel framework and the optional labs provide further exploration of the framework in an intensive, hands-on approach.
Proposed Course Duration: 1-hour, mandatory lecture and demo; two optional homework labs requiring 2 hours total to successfully complete.
Note: Lab #1 can be optionally either a student homework lab, or an additional instructor class demo. If used, Lab #2 should be completed by the students.
In summary, this material can be delivered:
without labs, as a one-hour lecture with demo; or,
with labs, as a three-hour lecture, demo, and hands-on module
The one-hour mandatory lecture and demo shows the design and implementation of a multi-core game framework in action. The student can use this framework (in Lab #2) to add additional systems/objects to the existing framework, which fully utilizes all available processor cores.
After successful completion of the course, the participants will be able to describe a highly scalable game framework that can be fully utilized today and to outline ways to customize this framework for their own use.
5. Needs Analysis
For almost 10 years, the vast majority of game developers taught in Universities and in industry have been trained to develop programs sequentially. But with the recent release of Multicore processors the software industry and academia are facing a large paradigm shift. To continue to teach only sequential programming and design going forward is really to teach the "History of Computer Science". All developers going forward need to have a lexicon of parallelism design & implementation concepts within their grasp and they need practical hands on experience in interacting with parallel platforms.
The Parallel Architecture for Games typifies modern game software by utilizing a compelling framework, but it's also an engine example that intrinsically supports the substantial power and advantages of modern Multicore computers. As you may be aware, Multicore computers are more ubiquitous than ever, even as users continue to have higher and higher performance expectations regarding the software they now routinely use.
Many programmers of varying levels of experience and expertise can benefit from a cogent analysis of the common pitfalls of industry-standard game engines, presented with ways to work around them successfully.
6. Subject Matter Experts (SMEs)
a. [Intel Confidential list]
7. Learner Analysis
The ideal student for this module is an adult learner at a university, who in addition to exhibiting the learning characteristics of adult learners, has also the following traits:
1. For lecture and demo, there are no current programming language requirements
2. To successfully complete the homework labs, students should have between 1 and 2 years (or equivalent) of programming experience in a compiled language such as C/C++.
3. Further students must be familiar with XML*, Visual Studio* (activities such as building projects and successfully building .dlls),
4. Beginner to intermediate programming levels, e.g. manipulating code and adding debug statements.
5. To successfully complete the optional homework labs, student could be freshman, sophomore or junior level programmer (advanced 1st, 2nd, or 3rd year college)
6. A programmer who routinely develops short algorithmic modules, that are integrated into a larger application, with no difficulty whatsoever
7. These modules routinely compile with few or no problems, and the student is well able to solve the problems for a successful compile.
8. A programmer who is able to work with a large project and code base, this is very common within the software industry
9. There is currently no Linux or UNIX coverage of these materials.
10. Working with MS Windows* code: is comfortable with using the process viewer; familiar with MS Visual Studio Developer Environment; is comfortable changing environmental variables
11. May have already tried to improve poor frame rate with regard to graphics output, and is able to improve that rate when necessary based on current knowledge
12. May already be actively seeking ways to use current available resources more effectively to solve even more challenging problems.
8. Context Analysis
a. Media Selection
i. No Tapes, CDs, or DVDs are available or provided
ii. Electronic files are provided for lab assignments and demos
1. Can be printed out for classroom use if desired
2. Lecture presentation is .PPT format
a. includes instructor notes
3. Lab Guide is in MS Word format
a. includes both planned homework hands-on labs
i. Labs can function as classroom demos
b. Document is labeled "Student Workbook"
4. Instructor Guide
a. 5-10 pages
b. homework labs with solutions
c. tips on teaching material
5. Suggested class code included in zip files
a. 500MB - including source and 3rd party libraries (Havoc, DirectX, Ogre 3D, etc)
b. Learning Activities
i. Lectures include optional demos for the instructor
ii. Hands-on labs for students
1. Labs are designed as student homework but can be also completed during class time if preferred - Students can subsequently bring the completed (built) assignment to be verified by the instructor. Further discussion on key learnings from the labs by students can be added as a follow-up lecture (outside the scope of this material).
c. Participant Materials and Instructor/Leader Guides
i. There is a short Lab Guide with this module for both labs
ii. There is a Lecture presentation with this module
1. Minimal instructor notes are included in PPT Notes sections
iii. An archive of class binaries, if no customized or student binaries are available
d. Packaging and production of training materials
i. Materials are posted to the "Multi-Core Courseware Content from Intel" site, for worldwide use and alteration: http://isccontent.intel.com/articles/eng/3728.htm#inline3
ii. Aside from typical programming courses, these materials would be well suited as modules for the following curricula:
Courses already teaching introduction to game development and implementation.
i. Training Schedule
a. The full size package downloadable module is 1 hour of lecture and 1.5 hours of hands-on labs
b. For Instructor lead faculty training this may be reduced to just 1 hour lecture and demo
Demo requires a recent many core system, running supported Windows XP* or Windows Vista* in addition to a high-level consumer grade discrete video card.
ii. Class size is not restricted in any way by the course materials themselves:
1. For labs Students require access to a recent many core system, running supported Windows XP* or Windows Vista* in addition to a high-level consumer grade discrete video card.
2. Hands-on labs require 500MB of lab files, including source.
9. Task Analysis
The relevant Job/Task Analysis for this material is defined by the Software Engineering Body of Knowledge (SWEBOK) and can be viewed in detail here:
The primary Bodies of Knowledge (BKs) used includes, but are not limited to:
Software Design BK
o Key issues in Software Design (Concurrency)
o Data persistence, etc.
Software Construction BK
o Software Construction Fundamentals
o Managing Construction
o Practical Considerations (Coding, Construction Testing, etc.)
Relevant IEEE standards for relevant job activities include but are not limited to:
Standards in Construction, Coding, Construction Quality IEEE12207-95
(IEEE829-98) IEEE Std 829-1998, IEEE Standard for Software Test Documentation, IEEE, 1998.
(IEEE1008-87) IEEE Std 1008-1987 (R2003), IEEE Standard for Software Unit Testing, IEEE, 1987.
(IEEE1028-97) IEEE Std 1028-1997 (R2002), IEEE Standard for Software Reviews, IEEE, 1997.
(IEEE1517-99) IEEE Std 1517-1999, IEEE Standard for Information Technology-Software Life Cycle Processes- Reuse Processes, IEEE, 1999.
(IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996.
10. Concept Analysis
-- Designing a game using a Framework for effective threading on Multicore processors
-- Define the role of the engine Scheduler
-- Understanding the integration and communication mechanisms between the engine graphic system, physics system, and AI system
-- Change control management between the framework systems
11. Specifying Learning Objectives
Given course materials, hardware and software, students will learn how to divide important AI, physics, and graphics programming tasks between available processing cores/threads.
To maximize utilization across all available cores, students will learn how to distribute those tasks to give a balanced utilization across all cores
12. Constructing Criterion Items
Q: How is change handled in the engine Framework?
A: By means of the Global Change Control Manager which is responsible for receiving and distributing change notices.
Q: What is the responsibility of worker threads in this engine?
A: They process sub tasks
Q: What is a defining characteristic of worker thread change queues?
A: They are unique
13. Expert Appraisal: Live meeting capture of a SME demo walkthrough of material will be available by Nov 15th, 2008.
Materials will be reviewed by Orion Granatir, Senior Software Engineer for technical accuracy. Materials will be reviewed by at least one external Academic reviewer.
14. Developmental Testing: alpha and betas of this material posted to ISC content page by the Nov 1, 2008
IPA - Is target for October 25th, 2008
PRA Approval by PDT required pending general availability, Nov 15th.
All materials will be posted to the "Multi-Core Courseware Content from Intel" site by Dec 3, 2008 (Target POR), for worldwide use and alteration: