Technical Game Development I

Technical Game Development I

IMGD 3000

C-term 2022

This course teaches technical Computer Science aspects of game development, with the focus of the course on low-level programming of computer games. Topics include 2D and 3D game engines, simulation-type games, analog and digital controllers and other forms of tertiary input. Students will implement games or parts of games, including exploration of graphics, sound, and music as it affects game implementation.

Recommended background: CS 2303


The final games made in the class.

info | grading | health | slides | projects | timeline | samples

Course Information


Professor: Mark Claypool
email: claypool at
office hours: Tu 11am-12pm Th 9-10am Fr 4-5pm
- place: Zoom (see canvas for link)

Teaching Assistant: Mikel Matticoli
email: mamatticoli at
office hours: Mo 2-4pm Th 2-4pm
- place: Discord

Student Assistant: Noah Darveau
email: nmdarveau at
office hours: Mo 4-6pm Fr 11am-1pm
- place: Discord, and Friday also in the Zoo lab (FLA21)

Time and Place

Days: Tu, Fr
Time: 2:00-3:50pm
Place: IS 105
Zoom: (see canvas)

Important! In case of significant weather events (e.g., snow), class will be entirely remote over Zoom. When this happens, it will be announced by email, 24 hours in advance of class.


Mark Claypool. Dragonfly - Program a Game Engine from Scratch, Version 7, Interactive Media and Game Development, Worcester Polytechnic Institute, 2014.

(The book is freely available online in separate chapters or can be ordered online as a complete book (print or e-book) at a modest price.)

There are other books on game engines that may be of interest to the aspiring developer. A few are:

Game Engine Architecture, 3rd edition, by Jason Gregory, 2020, CRC Press, ISBN: 978-1138035454.

(An academic-flavored text with a good level of detail on many game engine components. Specifics from working engines are provided throughout.)

Game Design and Implementation, by Alan Thorn, 2010, Jones & Bartlett Publishers, ISBN: 0-7637-8451-6.

(This book has been used in previous incarnations of this course. It has some useful reference material on game engines.)

Game Programming in C++: Start to Finish, by Erik Yuzwa, 2006, Charles River Media, ISBN: 1-5845-0432-3.

(A good book, in principal, for developing a game engine from scratch. However, much of the implementation and code is glossed over and difficult to follow, even if the full listing is provided on CD.)

You should own a really good book (or two) on C++ programming:

C++ How to Program, 10th edition, Harvey Dietel and Paul Dietel, 2016, Pearson, ISBN 978-0134448237.

(Perhaps the “goto” book for answering questions about how C++ works. Dense and full of code and examples, but clear explanations given for most anything you want to look up regarding C++.)

Head First Design Patterns, by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra, Elisabeth Robson, O’Reilley Media, 2004, ISBN 0-5960-0712-4.

(Much of game engine development, and game development for that matter, involves identification and use of software patterns. This book shows you how to analyze, design, and write serious object-oriented software.)


List of topics covered in this course (not necessarily in order of appearance):

info | grading | health | slides | projects | timeline | samples

Grading Policy

Individual recorded grades can be obtained via the Canvas Website under “Grades”:

IMGD3000 Canvas Grades

Use WPI username and password for access.


Final grades will be computed as follows:

Weight Assignment
10% Project 1 - Catch a Dragonfly
50% Project 2 - Dragonfly (Egg, Naiad, Dragonfly)
25% Project 3 - Dragonfly Spawn (Plan, Alpha, Final, Promo)
10% Quizzes - All, minus lowest 4 grades
3% Participation
2% Playtesting

Projects - The bulk of the course grade involves programming projects. This can be done on either Windows, Mac OS or Linux but must be in C++. C++ will not be taught (although various C++ techniques will be re-introduced), and it is assumed students have had significant exposure to C++ before starting this course. The grading policy for each project is provided at the time the project is assigned. In general, for each project there is a basic objective for the majority of the assignment points. There may be an extended objective for demonstrating additional work and understanding. Projects, including all data and source code, as appropriate, are to be turned in online as specified in the writeups.

The first two projects (and any sub-projects) are to be done individually, without partners. The third project, developing a game using your own engine in groups 2.

Quizzes - There will be a quiz at the start of almost every class. These are designed to test important class concepts from the previous class(es), especially concepts that may not have been adequately demonstrated in the programming projects. Quizzes are closed book and closed notes, unless otherwise indicated. All quizzes have an equal weight, except for the four lowest scores which are dropped.

Participation - Showing up to class is worth much of a class participation grade, but so is being engaged in the class material through asking and answering questions.

Playtesting - 2% of your final grade is based on participation in playtesting. You volunteer for playtesting sessions arranged by developers (typically IMGD majors) outside of class. For each session you participate in, provide your name to the developers and they give you a certification document (e.g., an email, photo or document). Upload the certification to the Canvas assignment. Note, playtesting sessions are not graded - you get credit just for participating. All playtesting must be done by the end of the term.

Final grades reflect the extent to which understanding of the material has been demonstrated and the assigned projects completed. The base level grade is a “B” which indicates that the basic objectives on projects and exams have been met. A grade of an “A” indicates significant achievement beyond the basic objectives. A grade of a “C” indicates not all basic objectives were met, but work was satisfactory for credit. No incomplete grades are assigned unless there are exceptional, extenuating circumstances. Similarly, no project deadline extensions or makeup exams are given unless there are exceptional, extenuating circumstances.

Late Policy

Quizzes are done, and due, in class. There are no makeup days for quizzes, but the four lowest quiz scores (including any missed quizzes) are dropped.

All project assignments are due online, unless otherwise noted. Projects due on Friday are due at 6:00pm, unless otherwise noted. Projects due on non-Friday’s are due at 11:59pm. Late projects are accepted up to three days late, with the weekend (Saturday plus Sunday) counting as one day. Any late project is penalized 10% of the total assignment value per day.

Class Conduct

All work is to be done individually, unless otherwise specified. Students are encouraged to discuss program designs, bugs and issues with each other, but are expected to do the actual programming by themselves. As a general guideline, code being emailed or copied and pasted has crossed the line.

Any breach of professional ethics as evidenced, for example, by copying exams or code for the projects, downloading code from the Internet, cooperating more than just by discussions in study groups, misusing computer resources, or using outside help of any kind, is considered adequate reason for an NR in the course and a report to the Dean of Students. Refer to the official WPI statements on Academic Integrity for details. Remember this warning - any breach of ethics earns an NR and is reported. When in doubt about possible “grey” areas, ask!

Bullying or harrassing classmates or IMGD 3000 staff in person or online will not be tolerated. Nor will homophobic, racist, sexist, or otherwise offensive topics. If you have questions about the above policy, or wish to report/discuss what you have seen/read online, please contact the professor.

info | grading | health | slides | projects | timeline | samples

Personal Health

Students may experience stressors that can impact both their academic experience and their personal well-being. These may include academic pressure and challenges associated with relationships, mental health, alcohol or other drugs, identities, finances, and more. If you are experiencing concerns, seeking help is a courageous thing to do for yourself and those who care about you. If the source of your stressors is academic, especially if that source is related to IMGD 3000, please contact me so that we can find solutions together. I care and I’d like to help. Please, just ask.

If you have a friend or classmate that you think might need help, please reach out to them and talk, perhaps encourage them to seek help. Even just simply reaching out can be a boon to someone in need.

Help - it’s OK to need it.  It’s important to ask for it.  Here’s some other ways to find it: Be Well Together

info | grading | health |slides | projects | timeline | samples


Slides from class lectures and other in-class materials are available shortly before or after they are presented.

All slides are available on the Canvas Website, under “Files”:

IMGD3000 Canvas Files

info | grading | health |slides | projects | timeline | samples


Projects and due dates are placed here as they are defined.

info | grading | health |slides | projects | timeline | samples

This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.

In-class Groupwork

Video lectures on background CS material that might be helpful. Use them to learn/refresh you knowledge:

info | grading | health | slides | projects | timeline | samples

[Return to the WPI Homepage] [Return to Mark Claypool's Homepage]

Mark Claypool (claypool at