top of page
Sweet Dreams

Project Type: Semester-long group project for EECS 390 (Advanced Game Development Project)

Date: Developed throughout the Fall semester of 2019

My Role: Programming Lead

Genre: Action roguelite with bullet hell elements


Full Playthrough
Dream Depth System

Instead of using traditional health, this game has a system (very loosely) inspired by the different stages of sleep.

  • Enemies have attacks that either decrease depth increase depth, or are "neutral," which means they follow whichever side the player is already leaning towards.

  • Light bullets get faster, smaller, and start bouncing as the depth gets lighter.

  • Deep bullets get slower, bigger, and start to home in on the player

  • Circles that deal damage over time also start popping in randomly within each room when the player is very close to losing.

  • To prevent this all from being too unfair, enemies are more likely to drop helpful items when the player is closer to losing. This helps create more exciting, skin-of-your-teeth recovery moments.

  • To prevent the player from always wanting to take hits to balance out their depth, there is also a damage multiplier on enemy attacks that increases as the player gets hit.


Depth bar by Seth McKenna

Some of My Features
Onesie Miniboss AI


  • The chicken room has a grid of stuffed animal columns to make it hard for the player to get a clear line of sight.

  • The chicken chases the player and lays eggs rapidly. This is intended to progressively cut off paths between the obstacles and eventually force the player to run into eggs.

  • There is a cap on how many eggs can exist - the oldest egg explodes once this cap is hit.


  • The hedgehog attack is like a shotgun blast, so it gets close to the player before starting its attack pattern.

  • It shoots three blasts and then hides to recover - the "hiding" AI is just navigating to the corner farthest from the player. This gives the player a chance to chase and shoot it while it's not dangerous.


  • The unicorn has a warning beam that it projects to indicate where and when it'll shoot its laser.

  • Since the laser is raycast, the player needs to carefully use the cover in the unicorn room to avoid it.

Procedural Generation

The procedural generation system places our handmade rooms on a grid and connects them to each other.

  1. It first places the starting room in the center, then places the goal room randomly a set number of rooms away.

  2. The two rooms are connected with a direct path.

  3. More rooms are randomly added off of existing rooms until the required number of rooms is hit.

    1. Some rooms cannot have doors on certain walls.

  4. Onesie rooms are added last, also off of existing rooms. They must be a set distance away from the starting room.

  5. Doors are enabled on each room and paired with the adjacent room's doors.

Full Credits


  • Christian Bonnell

  • Samuel Neal

  • David Nixon

  • Katie Ohlson

  • Zachary Perlo

  • Jacob Rich

  • Ellis Saupe


  • Shannon May

  • Kelly McCardell

  • Seth McKenna

  • Alicia Metzger

  • Taylor Mills

  • Nia Turpin

bottom of page