A recap of all games I made for 15-466 Computer Game Programming (fall 2022).

Course Overview: 15-466 has been offered every fall since 2017, taught by Jim McCann. In this course, students build computer games with C++ and OpenGL from (nearly) ground up - the provided base code includes basic OpenGL shaders, mesh/scene/sound loading, etc., with which students then implement all gameplay logic.

Context: 15-462 Computer Graphics is the formal prerequisite for this course; I was able to get it waived, having the required C++ experience in an attempt to self-learn C++ and game programming the previous winter.

Projects: In the first half of the semester, students develop a mini-game individually (or for some games, optionally with partners) every week; there are six in total, each focusing on a different aspect of game development. In the second half, students work in groups of 3-4 on a final game.


Projects

  1. Snong
  2. Pizza Cake
  3. CliClock
  4. Game Design Simulator
  5. Chaotic Shooting Game

Note: I skipped week 5’s mini-game, the theme of which is walking simulator, due to having final-round job interviews with five important companies during that week.


Snong

Theme: Sprite-Based Game

  • Requirement: Game 1 requires building an asset pipeline (for loading and displaying assets) that’s compatible with a constrained tile-based display system based on the Nintendo Entertainment System’s PPU.
  • What I Made: A local two-player game combining the classic Pong and Snake game. The ball bounces from all four walls, and catching it with your paddle - which is a snake - makes the opponent’s snake grow. The snakes and the ball move faster over time, and you win if your opponent’s snake crashes into a wall or itself.
  • Time Spent: 15 hrs
  • Main Challenges:
    • Everything felt a bit challenging as I was refreshing my C++ programming and debugging skill, and even the gameplay mechanisms that feel simple to implement - such as collision detection and spawning snake tails - took longer to code as I discovered more bugs every time I tested it.
    • Coming up with my own asset pipeline that works with the given constraints took some careful thoughts, but became pretty straightforward after realizing that I could just build it using a scripting language instead.
    • The game was definitely still buggy, even after my painstaking attempting to test it thoroughly by playing against myself.
  • Highlights:
    • The game received extra credit for having font handling - which was just a set of sprites with the pixelated letters on them, and an ugly case statement.
    • The game was also demo’d in class.

Pizza Cake

Theme: The Virtual World

  • Requirement: Game 2 requires building our own 3D models in Blender and implementing some animated transformations.
  • Time Spent: 20 hrs

CliClock

Theme: Require Sound

  • Requirement: Game 3 requires a game that requires sound to play well and making our own sounds/music.
  • Time Spent: 15 hrs

Game Design Simulator

Theme: Choice-Based Game

  • Requirement: Game 4 requires a choice-based game lasting at least a few minutes, which needs to display text using the specified libraries (Harfbuzz for textshaping, FreeType for glyph rendering).
  • Time Spent: 10 hrs

Chaotic Shooting Game

Theme: Multiplayer

  • Requirement: Game 6 requires building a multiplayer game using a client-server network.
  • Time Spent: 10 hrs