Projects

Cave Paradox

Unity
C#
Multiplayer
Git

Presentation picture of Cave Paradox

General Presentation

Cave Paradox

Context

This game was initially developed towards the end of my second year at ENSIIE (around mid-2022) where we were three developers. We then continued the project during my last semester at UQAC (around mid-2023). I am still actively working on this game.

The Game

Cave Paradox is a cooperative 2D video game. The two players find themselves in the same location, but at different times. One player embodies a fearless adventurer, trapped in an abandoned mine after an accidental fall, while the second player is a miner who lived during the time when the mine was still in operation.

Through a temporal link that forms between them, the miner is compelled to assist the adventurer in finding the way out of the abandoned mine. To achieve this, the miner can interact with the environment, which will have repercussions on the configuration of the environment for the adventurer. These changes create new pathways, open passages to allow the adventurer to get closer to the exit. For example, the miner can reinforce the mine walls to prevent a future collapse that hinders the adventurer’s progress.

My Contribution to this Project

Automatic Builds

For this project, we used Git as a version control system via GitHub. With the help of GitHub Actions, I set up automatic builds of our game for Windows every time there was a push to specific branches. This allowed us to quickly test new versions of our game throughout the development process.

Network

Cave Paradox is originally a 2-player game, which requires enabling two players to connect and interact within the game. Thus, we had to integrate a lobby system and implement multiplayer interactions. Throughout the development of this game, I took care of the entire network aspect.

Lobby

For the lobby, I used a lobby plugin that I developed Lobby Plugin, which utilizes Unity Gaming Services’ lobby features.

Multiplayer Interactions

All interactions in our game are indirect: actions performed by a player in the past timeline will have an impact on the future timeline of the other player. Each action carried out by a player, such as picking up an item or placing an item in a chest, is shared with the other player to ensure synchronization.

Single-Player Mode

We also wanted our game to be playable in a single-player mode, so I made adjustments to implement that.