CPSC 4160/6160: 2-D GAME ENGINE CONSTRUCTION

Fall 2022
When: TTh 3:30-4:45
Where: Lehotsky Hall 138
Instructor: Jerry Tessendorf
Contact: jtessen@clemson.edu
Office:McAdams 302
Office Hours: TTh 10 AM - 12 PM, in person in McAdams 302, and via Zoom
... and whenever I am in my office. Drop by. Or make an appointment.
Website:https://people.cs.clemson.edu/~jtessen/cpsc4160+6160
CommunicationsIn person, email, canvas, zoom (link posted on canvas)
Textbook:Lots of online reference material
VideosNo recording of lectures are planned.
TA:Liang Gao
TA Contact:liangg@g.clemson.edu
TA Office Hours:Mondays 1-3pm in-person and via zoom.

OBJECTIVES

At the completion of the course, students will:

RESOURCES

The required reading for this course will be assigned as needed during lectures. The texts are available free online at the links listed below:

OUTLINE

Below is a list of potential topics. This course will be flexible, based on student feedback and performance. More topics may be included, or fewer, as needed.

Potential Topics
Game Play
Python
Pygame, SDL
3D vs 2D
actions
entities
design patterns
physics
effects
characters
story
assets
engines
UI
rendering
crowds
commercial & open source game engines
game (engine) jams
game state


SCHEDULE

This schedule is subject to change depending on the needs of the students in the class, as well as any corrections that need be applied.

Tuesday Thursday
Week 1 Aug 22-26 Introduction
Week 2 Aug 29-Sep 2 Python real fast pygame + example
Week 3 Sep 5-9 pygame + example types of 2D games
engine design
Week 4 Sep 12-16 actions, entities
Project 1 announcement
engines, assets
Week 5 Sep 19-23 engine-based pong: the play engine engine-based pong: the actor engine
Week 6 Sep 26-30 project 1 demos
project 2 announcement
engine discussion
Week 7 Oct 3-7 engine discussion engine discussion
Week 8 Oct 10-14 engine discussion engine discussion
Week 9 Oct 17-21 engine discussion engine discussion
Week 10 Oct 24-28 project 2 demos
project 3 announcement
engine discussion
Week 11 Oct 31-Nov 4 engine discussion engine discussion
Week 12 Nov 7-11 FALL BREAK engine discussion
Week 13 Nov 14-18 engine discussion engine discussion
Week 14 Nov 21-25 project 3 demos
game engine jam team selections
THANKSGIVING HOLIDAY
Week 15 Nov 28-Dec 2 binding C++ libraries to python
demo of gamey w/ C++ library
3D graphics in pygame: OpenGL
game engine jam theme announced
Week 16 Dec 5-9 Game Engine Jam Game Engine Jam
FINAL EXAM: demo your project in the classroom, and hand in by the end of the day FRIDAY DEC 16 11:30-2PM


GRADING

There are 3 projects in this class and a big Game Engine Jam at the end. The point breakdown is as follows: There is a total of 100 possible points. The grade is relative to the percentage of 100 points achieved.

Grades: A > 90%; B > 80%; C > 70%; D > 60%; F < 60%


PROJECTS

Grading of the projects takes place at two moments: there is a scheduled demo day during which you will have to demo your project to other people in the class and to the TA and instructor. You must also turn in your project to the handin system by the end of the demo day. The second grading moment will be an examination in detail of the project code, and additional play of the code, by the TA and/or instructor, offline.

For the projects, the point assignment of 15 points for project will be distributed based on the following considerations:

  1. Does it work and are the specific requirements of the assignment implemented? (5)
  2. Was the demo informative about the strengths and weaknesses of your project? (5)
  3. Is the code clean, organized, demonstrate pride of craftsmanship, and easy to execute? (5)
Consideration 1 will happen in both grading moments; consideration 2 will be during the demo session; and consideration 3 during the offline grading moment.

ProjectDemo/Hand-in DateDescription

Project 1: Hangman

Sep 27

pdf description

Project 2: Whackabox

Oct 25

pdf description

Project 3: Cannon Fodder

Nov 22

pdf description
demo video

Game Engine Jam:

Final exam day, December 16
Demo game during exam time, 11:30-2pm
Hand-in by close of final exam day

pdf description

Extra Credit Project:

Final exam day, December 16
Hand in to instructor directly, via email.
Hand-in by close of final exam day

pdf description

GAME ENGINE JAM

Game Jams are competitive events where teams of game developers build a game from scratch during the limited time allowed for the competition. A great example of a student-focused one is Chillennium, held most years at Texas A&M University.

For this course, we are concerned with constructing game engines rather that a specific game. So here we are adopting the Game Jam concept, but adapting it to emphasize the engine more than typical. On week 14, jam teams of 2-3 people each will be assembled from the students in the class. These teams will be assembled by voluntary teaming as much as possible, but the instructor reserves the authority to rearrange teams at any time for any reason. On week 15 the theme of the jam will be announced. The teams will have until December 16 to assemble a game using the criterial below. Each team must be present at the classroom for the final exam time, i.e. 11:30am - 2pm on December 16 to present and demonstrate their game to the audience. Each team will have until the end of the day on December 16 to handin their game.

Game Jams are competitve events. Grades are not. For our Game Engine Jam, there will be both elements. The competitive selections will be done during the presentations on December 16, based on criterial below. The judges for the competitive portions are to be announced later. Grading will be conducted using an independent set of criteria listed below. Grading is not dependent on the competition in any way. It is possible to create a terrible game but receive the highest grade. It is possible to create the best game and get the lowest grade. You and your team can focus on any mix of competitive and grading criteria that you see fit.

Competition Criteria

TBD

Grading Criteria:

TBD

PROJECT HAND IN

Projects will be handed in using the School of Computing handin mechanism. The project needs to be encapulsated in a zip file before it is submitted. The zip file should have the very specific name
username_N.zip
where username is YOUR username, and N is the number of the assignment (1, 2, or 3). For example, if I submit assignment 2, it should be in a zip file named jtessen_2.zip.

IT IS VERY IMPORTANT THAT YOU CAREFULLY FOLLOW THIS REQUIREMENTS. FAILURE TO DO SO WILL COST YOU POINTS. DONT MESS UP ON THE SMALL STUFF.

You have several choices in how you submit the project:

  1. Use a browser to log into the Webhandin website, handin.cs.clemson.edu, and submit the .zip file of the assignment. This can be done from any computer.
  2. Use the linux command, handin, to submit the .zip file.
Remember that you can submit to handin as many times as you like until the expiration date of the assignment. Only the last submitted version will be graded. So it is safe to submit an incomplete assignment early, just to make sure that the submission process functions, then later do it again for the version of the project you actually want a grade on.

It is your responsibility to ensure that your project makes its way to the handin system, regardless of the performance of the tools provided. You can double check with webhandin if you desire.


POLICIES

Policies are revised and posted frequently. For fall 2022, these are the policies set by the university:

Undergraduate Policies

Graduate Policies