Technical Game Development I


Technical Game Development I

IMGD 3000

C-term 2023

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

Objectives

Daily agenda

Groupwork

The final games made in the class.


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


Course Information

People

Professor: Mark Claypool
email: claypool at cs.wpi.edu
office hours: Mo 10-11am We 1-2pm Fr 11am-12pm
place: Mo & We Zoom, Fr FL B24

Teaching Assistant: Xiaokun Xu
email: xxu11 at wpi.edu
office hours: Tu 10-11am We 2-3pm Fr 4:30-5:30pm
place: FL 316

Student Assistant: Nick Frangie
email: nffrangie at wpi.edu
office hours: Mo 2-4pm Th 4-6pm
place: FL A21


Time and Place

Days: Tu, Fr
Time: 2:00-3:50pm
Place: IS 105

Important! In case of significant weather events (e.g., snow), class will be synchronous but entirely remote over Zoom. When this happens, it will be announced by email, 24 hours in advance of class and the link will be posted on the Canvas page.


Discord

Class discussions as well as remote TA office hours will be held via the IMGD 3000 Discord server.


Book

Mark Claypool. Dragonfly - Program a Game Engine from Scratch, Version 8, 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 for the code.)

You might find a really good book (or two) on C++ programming helpful:

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

(Perhaps the “go to” 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, 2nd edition, Eric Freeman and Elisabeth Robson O’Reilly Media, 2021, ISBN 978-1492078005

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


Topics

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

Canvas Grades

Use WPI username and password for access.

Breakdown

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 done individually, without partners. The third project, developing a game using your own engine, is done in pairs (groups of 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. Try to attend as many classes as possible. I have tried to make classes useful for you and even missing one may hurt your learning. However, stuff does happen - life doesn’t stop for class. If you miss a class or two, you don’t need to let me know but do plan on catching up with online material and notes from a fellow classmate. If you miss a lot of classes, come talk to me and we’ll see what we can do to help you catch up.

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. Note, you must participate in two 30-minute sessions for full credit. All playtesting needs to be done before 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. While it is in everyone’s interest to have grades assigned in a timeline manner (i.e., by the C-term grading deadline), if there are exceptional, extenuating circumstances that I don’t know about that affect your overall grade, please come talk to me - there are options for an incomplete we could try.


Late Policy

Quizzes are done, and due, in class. Since quizzes are about the most recent class material and are keyed to our progression through class, they are rather ineffective if done later so there are no makeups. But I know that you may miss some quizzes (life happens) or may take the quiz but have missed the previous class or may just have a really bad day. So at the end of the term, the four lowest quiz scores are dropped – this includes missed quizzes.

All project assignments are turned in online (unless otherwise noted). Projects due on Friday are due at 6:00pm. Projects due on non-Friday’s are due at 11:59pm.

For projects that miss the deadline, there are two types of lateness.

“Slightly late” is a project turned in after the deadline, but the lateness doesn’t really matter to anyone. Basically, there is no penalty for a project that is slightly late. Any project turned in up to 6 hours after the deadline is marked as late by Canvas, but we’ll categorize that as only “slightly late” and there will be no penalty.

“Significantly late” is a project turned in after the deadline, and where the lateness matters. How does it matter? It might have encouraged you to sleep less (i.e., pull an all-nighter), miss class to work on the project rather than participate in new material, or it might have impacted your partner’s progress (for the team project). Worse, a significantly late project probably affects keeping up with the class material and the next project since they build upon each other. So, anything turned in after the “slightly late” deadline is categorized as “significantly late” and is docked 10% of the total assignment value per day (past the original deadline). But here, the weekend (Friday, Saturday plus Sunday) counts as one day and Tuesday and Wednesday counts as one day since the “next” class skips a few days (2 and 1, respectively).

In general, if you really need an extension on a project, for whatever reason, come talk to me - we’ll see if we can figure out something that doesn’t impact your subsequent projects in the class. I do have to consider fairness to other students - but fair doesn’t mean everyone does everything at exactly the same time.


Class Conduct

All work is to be done individually, unless otherwise specified. Working on actual coding yourself - design, implementation and debugging - is how you will really learn it. It can be too easy to have key concepts and skills escape you when always working in teams. That said, there is value in talking with others about the class material, either code or concepts. So, students are encouraged to discuss program designs, bugs and issues with each other. This includes even looking at each other’s code. Showing someone your code and asking/helping debug each other’s code by pair programming can be helpful. So, what is too much collaboration? As a general guideline, code that has been emailed or copied and pasted from one student too another should be avoided. The same with downloading code or copying code from the Internet. Doing so likely means you have not done the coding yourself, depriving you of the learning you need.

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, may result in an NR and needs to be reported to the Dean of Students. Please refer to the official WPI statements on Academic Integrity for details. When in doubt about possible “grey” areas, please 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 ask!


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

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

Canvas Files


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


Projects

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


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


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


Mark Claypool (claypool at cs.wpi.edu)