3 projects from CS91 (Game Systems), including a remake of a retro game, a demake of a modern game and an original game, made using TIC-80, C++ and 8bitworkshop. This was a class focused on designing and building retro games, so we did not use any modern game engines.
Remake: Donkey Kong
We remade the original Donkey Kong arcade game in TIC-80, a fantasy console that runs on Lua. You can play it here.
Left: Donkey Kong, Right: Our TIC-80 Remake
There are two elements that define Donkey Kong's game essence:
- Donkey Kong is one of the first arcade games to incorporate a narrative, in the form of an extended intro sequence.
- Platforming: that is, controlling a character that traverses 2D space and avoiding obstacles using hops.
We decided to incorporate both elements into our remake, setting our jumpman in the backdrop of an industrial accident instead of a kidnapping. We also implemented the climbing and jumping mechanics from the original game. Barrels that roll to the bottom and into the acid vat will also traverse in the opposite direction, similar to the arcade game. Finally, jumpman can pick up hammers and smash barrels for points.
Title sequence, gameplay, end sequence
Some techniques I want to highlight: TIC-80 does not have really have any affordances for making platformers, so we had to implement a KinematicBody class and animations from scratch. We also used TIC-80's built in map tool to create the title and end sequences. Finally, we drew original sprites and composed music using the built in 8-bit music maker.
Demake: Overcooked
You can play it here. (If the dimensions are messed up, just make your window half width).
One of my favorite games to play with friends has been Overcooked on the Switch. For our Demake, we decided to remake this game in 8Bitworkshop using a C++ library to simulate the development environment for NES (Nintendo Entertainment System). So, we are attempting to bring a game on Nintendo's newest console to its oldest one.
The game essence of Overcooked is threefold:
- It is co-op game. Phil Duncan, the lead developer for Overcooked said in an interview: "Kitchens have always struck me as a perfect analogy for a cooperative game: an occupation where teamwork, time management, spatial awareness and shouting are all vitally important." So in many ways, Overcooked is a coop game before it is a cooking game.
- It has a cute, colorful aesthetic.
- The core challenge involves cooking recipes with multiple ingredients that each require preparation.
Since the NES has good native support for multiplayer, it actually wasn't too hard to make a coop game. What was really challenging was creating the map and sprites, which all had to fit inside impossibly small nametables and pattern tables (they were both 256*256, I think). Due to the storage limitations of the NES, we were also only allowed to use 3 colors per sprite. This presented certain artistic challenges.
Left: our recipe - sushi, Right: our sprites
I drew up a map in aesprite. But in order to use it in our game, we then had to import it as a 2D array of char
's, which we had to constantly update (for instance, if you put an ingredient down) and check against player position for collision detection. To a much greater extent than usual, coding a NES game required us to think like machines.
What I see vs What the game sees
Make: Slackjack
For our final project, we returned to TIC-80 and made an entirely original game. The elevator pitch: Blackjack, but the rules keep changing. You can play it here.
Similar to Blackjack, you start out with two cards face up, the dealer starts out with one card face down and one card face up. You can then choose to hit until you bust (go over 21) or get Blackjack (match 21).
However, in our version, the dealer is cheating, meaning they know what the next card is going to be and absolutely won't hit if it means they will bust. How do you outsmart a cheating dealer?
Taking inspiration from games like Baba is You, and roguelikes such as Slay the Spire, where the objective is to break the game instead of beating it, our game allows the player to swap around any of the numbers highlighted in yellow when they are not actively in play. In the above screenshot, you can see that the player has changed the rules such that the ceiling is not 21 but 40. The player can also swap out thei sum from their previous round with their wager, essentially allowing them to bet more than they have. It is difficult to explain, so you should give it a play!