For centuries, cabbage and fish have been at war. We were inspired to create games that tackled unique mechanics. A mechanic we wanted to see more in gaming was the ability to control/alter the state of an opponent's environment, especially the ability to sabotage others. Inspired by the rise of multiplayer minigames in recent years, we aimed to incorporate this mechanic into the gameplay of a 1v1 online multiplayer platform game.

What it does

Carp and Cabbage is an 1v1 game you can play with friends across the world. You try to survive longer than your opponent by staying alive on the stationary baguette platforms and the moving knife platforms. You also have the ability to sabotage your opponent by cutting their baguettes and temporarily destroying their platforms, or by releasing bouncy hot peppers onto your opponent's side. While you sabotage your opponent, you will also need to dodge their sabotages on you. You have the choice to Play as the graceful carp or the flamboyant cabbage, outmaneuvering and outlasting the other player.

How we built it

Our game is built using Ubisoft's Hacker NEST API (UbiGame) and written in C++. The backend server uses Node.js and for real-time communication between the C++ applications. We hosted the server on Heroku, easily allowing any two players with the game to play against each other. We took advantage of UbiGame's various components to add physics, animation, music, and special effects to our game.

Challenges we ran into

We weren't super comfortable with C++, but UbiGame required us to build our app in C++. We spent many hours debugging bugs and many null pointer exceptions. We also sometimes struggled with finding appropriate documentation for UbiGame and other C++ libraries, such as the library we used for the application. We also needed to implement some of the physics in the game, and one of the most difficult implementations for us was the ability for your character to jump.

Accomplishments that we're proud of

We were unsure about how far we would get with our idea, especially given our short time frame and the requirement of using an API which 3 of our team members were unfamiliar with. In the end, we were extremely happy with how our game turned out, especially as we enjoyed playing it with one another after we had finished developing it.

What we learned

We learned a ton about the process of game development, from planning to building the components to fitting them all together. We frequently discussed ideas for our game and we had many thoughtful discussions about what we valued in a game, and what would make a game fun for people to play. We also learned how rewarding it is to play a game developed by ourselves, especially as we had fun playing it as we improved it.

What's next for Carp and Cabbage

Originally, we had plans for Carp and Cabbage to be a platformer where you race against your opponent to reach the finish line, while being able to sabotage your opponent on the way. However, as we started running out of time, we realized that we weren't going to be able to complete such an ambitious idea, and so we pivoted and make the focus of the game the ability to sabotage your opponents. We believe that this core mechanic of our game can be vastly expanded, such as adding various other methods of sabotaging and dodging.

Share this project:


posted an update

Some questions, answered

How does the game host multiplayer?

We use to create a websocket server which we host on Heroku and connect to from UbiGame using a C++ websocket library.

How does the bread-slicing mechanic work?

Once a bread platform is sliced, it regenerates after a short period of time. During this time, the player cannot slice another bread platform. The player also has to focus on their own side not falling down, so they cannot put all their attention to slicing bread, thus making the mechanic not too overpowered.

How does the chili pepper bomb work?

The chili pepper can be released and launches the opponent into the air upon contact. Once released, there is a cooldown period before another pepper can be released.

Log in or sign up for Devpost to join the conversation.