Class is held in person Tuesday and Thursday from 18:40-20:00 in CIT 101.
First class is Thursday Sept 10th!

Welcome to 2D Game Engines! This is a largely student-run course, similar to an independent study, and you'll learn lots of techniques needed to create a fledgling game engine. These topics include animation, simple AI, collision detection, physics, and raycasting. You will create a game engine of your own over the course of the semester, adding a few features to it each week. At the same time, you will also create a series of games using your engine that demonstrate the use of the features you add. Near the end of the semester, you will design and implement a final project that uses your game engine to create a complete, polished game.

Assignments


To do Released Design check Due
Tic Sep 15 Sep 16-17 Sep 22
Alc I Sep 22 Sep 23-24 Sep 29
Alc II Sep 29 Sep 30-Oct 1 Oct 6
Wiz I
& Wiz Extras
Oct 6 Oct 7-8 Oct 13
Wiz II
& Final Project Idea
(Final Project Features List)
(DUE MON OCT 26)
Oct 13 Oct 14-15 Oct 27
Wiz SWAP
Oct 20 ❀ Oct 27
Nin I
& Final Project Groups
(DUE MON NOV 2)
Oct 27 Oct 28-29 Nov 3
Nin II
& Nin Extras
& Final I
Nov 3 Nov 4-5 Nov 10
Final II Nov 10 ❀ Nov 17
Final III Nov 17 ❀ Dec 1
Final IV
(DEMO DAY DEC 8)
Dec 1 ❀ Dec 8
Final V Dec 8 ❀ Dec 15

Lectures

If you have trouble accessing any of these materials, please email us! We'll be happy to make accommodations.



Hours

Refer to the calendar below for the most up-to-date TA hours.

Design Checks take place from Wednesday-Thursday the week each assignment is released.

Documents

Here are some documents that might be useful to you as you take this course:

Course Missive
Collaboration Policy
Global Requirements
Handin Reference
IntelliJ Setup Guide
Git Guide
Anonymous Feedback Form


Frequently asked questions

How will remote/in-person hours work?
Check out the course missive.
How much work is it?
Based on the work from the previous few years of class, we estimate that the projects should take roughly 15-20 hours per weekly checkpoint. There is also a two hour lecture each week and a weekly design check.
Do I have to be a video game expert to take this course?
Nope! While it does help to have some familiarity with the different types of 2D video games out there, we will explain everything you need to know in order to do the projects.
Can I take this course before CSCI 0320?
Yes. The pre-requisite for this course is any intro CS sequence. You will be maintaining and improving upon your code and projects throughout the course so this helps out a bit with preparing for CSCI 0320.
Where can I get sprites and images for the projects?
There are a handful of places that you can find free assets online such as opengameart.org, itch.io, and many more. If you do use resources you find online make sure to give credit and cite. Although it isn't a part of your grade we love to see custom art and designs in submissions.
Where do you go to find inspiration?
Think about what kind of games you've liked playing in the past, and ask yourself how you'd improve upon them. If you were offered the chance to make a spinoff, what new direction would you take it in? There's a lot of game archetypes out there, and we won't constrain you to a single one of them. (You can absolutely turn a dungeon crawler project into Stardew Valley as long you use the same engine features.) You can make metroidvanias, puzzle games, visual novels, arcade games, simulations, remakes, whatever you want. Links for more inspiration.
Can I reuse a game I make here for my CSCI 0320 final project?
That depends on how the CSCI 0320 TA's feel about it, but in general, you can't reuse work you submitted for one class for a similar assignment in another class. Your experience creating game engines, however, will allow you to make an even better game for your CSCI 0320 final project.
Can I reuse a game I made in CSCI 0150/CSCI 0320/etc. for my final project here?
You can reuse the same concept, sure, but keep in mind you'll have to build it all with the game engine you wrote throughout the semester. Porting over the idea is perfectly fine, though.
What should I bring to the design check?
Design checks in this course are not the same as design checks in CS15/16/17/18. We expect you to have thought about the project and have a good idea of how you will solve some of the central problems it involves, but it's OK if you haven't written any code or made a diagram of your class design. The later you do your design check, though, the more progress we will expect you to have made.
Why is this class sometimes designated csci1971?
We have two course codes. Don't ask why---we don't know either. Hopefully you will never see the other one.
Can you show me some student final projects from throughout the history of the class?
Sure thing, buddy.

Fall 2025:
Fall 2024:
Fall 2023:
Fall 2022:
Fall 2021:
Fall 2013:
Fall 2012:

Staff

Prof. James Tompkin

jtompki1

he/him/his

Previously pushed pixels; presently professes PowerPoints.

Favorite video games: X-COM or Baldur's Gate 3 (with respect to time sunk)

Currently playing: Denshattack!

Eliot Geer

eliotgeer

he/him/his

Randomly met ConcernedApe at the farmer's market this summer.

Favorite video games: Animal Crossing New Horizons, Earthbound, Thimbleweed Park

Currently playing: Mina the Hollower, Stardew Valley, Balatro

Nathan Robbins

Nathan-SR

he/him/his

Night owl 🦉

Favorite video games: Civ 5, Minecraft

Currently playing: Teamfight Tactics, Elden Ring