Step onto the neon-lit dance floor of Groovy Ball, where disco meets football in an electrifying fusion of rhythm and physics!
Developed as a captivating school project centered on mastering the laws of physics !
Groovy Ball invites players to immerse themselves in a dazzling arena where the objective is clear: outmaneuver your opponent and score goals among dynamically generated obstacles.
Developed as a captivating school project centered on mastering the laws of physics !
Groovy Ball invites players to immerse themselves in a dazzling arena where the objective is clear: outmaneuver your opponent and score goals among dynamically generated obstacles.

Split-screen :
The two players share the screen, adding new constraints and determining how elements are placed on the scene. I decided to incorporate a lot of verticality into the game so that the camera is perfectly adapted to the world.
To enable the player to easily track the ball, I implemented two camera systems. The first camera is a third-person camera that follows the player's movements, and the second is a ball camera that shows the position of the ball relative to the player. To create this camera, it was necessary to determine the position of the ball in relation to the player and place the camera in such a way that the player is between the ball and the camera, allowing us to see where both are located. I drew inspiration from the camera system of Rocket League and iterated several times until achieving a satisfactory result, adapted to Groovy Ball.
Gameplay :
The gameplay revolves around two main mechanics: shooting and long-range shooting.
As soon as one of the players is close enough to the ball, they can shoot. A shot will push the ball away from the player's position; the more energy the player has at the time of the shot, the farther the ball will go. A shot consumes all of the player's energy.
Players can also use long-range shooting, which is very powerful and will push the ball strongly but has a long cooldown, displayed in the bottom left of the player's camera view.
Players can move, sprint, jump, and glide. Some boosts spawn randomly on the map to provide different bonuses or penalties, such as an energy recharge or launching the player into the air.
To add more challenge, the DJ drone roams the arena and occasionally grabs the ball, creating unique plays! Additionally, a force field sporadically appears around the ball, causing players to respawn if they get hit by it.
As soon as one of the players is close enough to the ball, they can shoot. A shot will push the ball away from the player's position; the more energy the player has at the time of the shot, the farther the ball will go. A shot consumes all of the player's energy.
Players can also use long-range shooting, which is very powerful and will push the ball strongly but has a long cooldown, displayed in the bottom left of the player's camera view.
Players can move, sprint, jump, and glide. Some boosts spawn randomly on the map to provide different bonuses or penalties, such as an energy recharge or launching the player into the air.
To add more challenge, the DJ drone roams the arena and occasionally grabs the ball, creating unique plays! Additionally, a force field sporadically appears around the ball, causing players to respawn if they get hit by it.
Procedural generation :
For this project, I focused on two types of procedural generation: Perlin noise and Poisson disc sampling.
I quickly became interested in Perlin noise for terrain generation, but to ensure the map maintains a competitive and fair design, it was better to preserve its shape.
So, I turned to Poisson disc sampling to generate obstacles and trampolines on the map.
Poisson disc sampling allows for placing objects randomly while maintaining a uniform distribution.
I quickly became interested in Perlin noise for terrain generation, but to ensure the map maintains a competitive and fair design, it was better to preserve its shape.
So, I turned to Poisson disc sampling to generate obstacles and trampolines on the map.
Poisson disc sampling allows for placing objects randomly while maintaining a uniform distribution.

Conclusion :
This project was truly enjoyable to work on, especially when designing the gameplay mechanics and testing them with another player. As a developer, it's genuinely exciting to witness the interactions between players and between players and the game. I had the opportunity to have many of my classmates test the game, and they all had a great time, which is the most rewarding outcome for a game developer.