Project details
Developed over 15 weeks
Unity 2021.3.22f1
released  june 13th 2023
The Team :
Antoine Coustenoble
Lead Visual Design,3D Artist,Documentation,Game-Design
Bastien Denis
Lead Game Design,Programmer,Documentation
Camille Menana
Lead Sound Designer,Game Design
Matthias Helderald
Lead Programmer,Game Design,VFX & Lighting
Make the most of what you have
INTRODUCTION
Our first school project with a 3D toolset, using Unity and FMOD. We were given a theme for this project : Min/Max .As a result, our project's motto is as follows:
Make the most of whatever resources you have to endure against waves of enemies. Attracting and throwing objects from the environment will be your sole way to guarantee your survival
We aimed to provide a game that offered a renewable experience, one that could be enjoyed multiple times without ever replicating the previous playthrough. This involved creating a deep sense of immersion within the game, achieved through enclosed settings and intense action sequences. We intended to challenge players by placing them in difficult situations and compelling them to adapt with the resources at hand. Moreover, we strived to offer players a diverse range of objects, levels, and consequently, gaming scenarios.
Game Design
We aimed to provide a game that offered a renewable experience, one that could be enjoyed multiple times without ever replicating the previous playthrough. This involved creating a deep sense of immersion within the game, achieved through enclosed settings and intense action sequences. We intended to challenge players by placing them in difficult situations and compelling them to adapt with the resources at hand. Moreover, we strived to offer players a diverse range of objects, levels, and consequently, gaming scenarios.
The player throws a crate at an enemy
The player throws a crate at an enemy
The player throws an explosive barrel at an enemy while jumping thus rocket jumping
The player throws an explosive barrel at an enemy while jumping thus rocket jumping
Programming
The most crucial aspect of programming this game was designing the state machine. Given the cyclical nature of the game and the well defined system states, a state machine seemed like a wise choice.
Project Repulse has 4 states:

NewRound, in which we randomly instantiate objects from a set of objects at random positions on the platform, as well as spawn enemies. Then, we transition to Idle Round.
There we can see the doors opening to let the ennemies on the platform at the start of the round.

Idle Round, where the round is in progress, and functions defining the conditions for advancing to the next round execute. We then transition to EndRound or EndSector, depending on whether the player has completed the sector or not.

EndRound allows us to move the player to the next round, which involves actions such as raising the elevator to the next level, and then we initiate NewRound.

EndSector facilitates the transition between two sectors, guiding the player through a corridor to reach a platform with a different level design, and then we launch NewRound.
VFX
Explosion :
The Explostion fx can be broken down into three phases :
• Bright flash whose size rapidly decreases as if it were collapsing upon itself.
• Luminous streak with random position and lifespan originating from the center of the explosion.
• Rotating arc that extends and vanishes.
For this FX I wanted to do a sort a Sci-fi chemical explosion, so that it fits with the artistic direction.Also I tried to incorporate the "Pulse" of Project Repulse in the rotating arc.
For example here is in detail how I created the rotating arc that extends and vanishes.

First I drew the shapes of the arc on Illustrator
• First, I created a new block in my explosion VFX, which spawns once.

• Next, I initialized the particle to have a lifetime of 1 second and set the arc to the desired angle.

• After that, in the Update function (every frame), the arc will rotate by 15 degrees on the y-axis.

• Then, I plugged in the texture and set the size of the texture.

• I also adjusted the size of the texture over its lifetime using a curve, making it gradually larger with a plateau at the end.

• Lastly, I set the color of the texture with a variable and multiplied the color and the alpha over the particle's lifetime using an additive blending mode. This allowed me to control the brightness of the arc throughout its lifetime.
Blackhole :
The Blackhole fx can be broken down into three phases :
• Expansion of the black hole.
• Expansion of the accretion disk.
• Rotation of the accretion disk and particles.
For this blackhole I had the intention to create a quite luminous blackhole with an easily recognisable accretion disk and area of effect so that the player would knows the metrics of the gravitational attraction.
Dissolution :
• Gradual dissolution of the object from top to bottom following a 
procedural pattern using a coroutine.
I drew inspiration from Portal for these shaders. I liked the concept of dissolution, but to maintain consistency with the artistic direction, I designed it to glow and decompose in a way that would loosely resemble lasers or heat in general.
Back to Top