Ransack Raccoon

Check the Game out!

About the Game

The night is young and the time to steal is now! Follow the raccoon, Bop, on his midnight escapade through this retro, vaporwave inspired mall as he maneuvers his way through various store rooms, stealing everything not nailed down, before slinking away through the vents onto the next, bigger, and better thing.

Beware! This heist is not without peril! The mall has been equipped with a security system to deter pesky thieves who would steal the store wares and Bop will need your help. Spotlights shine, blink, and rove through the stores, searching to light up the raccoon of the hour and stopping him from stealing all of the items in the room.

My role:

  • Engineered intuitive UI systems while collaborating with Artists and UI/UX designers.

  • Improved between-the-level transition experience by introducing loading screens

  • Refined overall game experience by adding mouse support and allowing users to engage with the UI

A curious development anecdote:

Having joined the team halfway through the project's development cycle, one of the first tasks I was given was the introduction of a loading screen between the levels in the game. Working under a considerable time pressure, I gave myself 5 days for the implementation. At first, I attempted to make the loading screen multithreaded, with one thread loading the game files and the other one displaying the loading animation. This ended up causing a bug which made each sprite in the game use the same mesh, messing with animations. After some time debugging, I managed to narrow down the culprit to a few OpenGL calls. Unfortunately, the programmer that had written the graphical backend for the game had left the team a few weeks in without documenting their code. I tried teaming up with the new graphics programmer to solve the issue, but after spending a couple of days on it, I ultimately ended up deciding to put the loading screen on one thread, updating the loading animation after each loaded file.

This experience taught me a number of things, namely that:

  • It's best to write an engine with multithreading capabilities in mind from the start, rather than trying to squeeze it in halfway through its development.

  • Instead of over-fixating on one issue, it is imperative to have a "Plan B" in mind, in order to make the best use of one's time and resources.

  • When working on a project, one must put the product before their drive for implementation. Putting in engine features solely for the sake of it is rarely justifiable.

Check out some of my menu UI code:

Trailer:

Screenshots: