Skyfall
A fun little game where the goal is to survive the asteroids.
GAMEPLAY VIDEO
media/skyfall.mp4
Skyfall is a fun little game where the goal is to survive the asteroids. This independent project helped me learn how to manage my time, tasks and resources effectively.
The main challenge was designing the logic for moving the car across the surface of a planet — and everything that had to be rebuilt once ordinary gravity stopped applying.
- EngineUnity
- LanguageC#
- GenreSurvival
- TeamSolo project
Systems breakdown
skyfall-1.gif
Driving on a planet
I implemented a custom gravity system through the FauxGravityAttractor and FauxGravityBody classes. Instead of relying on Unity's default gravity, a radial force pulls objects towards the planet's center, so the car stays on the surface wherever it is.
The attractor applies that pull continuously while aligning the object's rotation to the curvature of the surface; the body component sits on anything that has to obey it, like the player's car. The result is smooth, seamless movement all the way around the planet, plus an easy hook for any other gravity-dependent object.
skyfall-2.gif
Dynamic orbital camera
A raycast checks for obstacles between the player and the camera; when something gets in the way the camera moves closer instead of clipping through it, so visibility never breaks.
The field of view also reacts to speed — the faster the car goes, the wider it opens, which sells the sense of motion and keeps the run readable.
skyfall-3.gif
Mission system
Missions give the player objectives to chase during a run: survive for a set time, dodge a number of asteroids. I built them on C# events, so progress updates itself instead of being polled every frame.
That kept the system efficient, modular and simple to expand — new missions slot in without touching the update loop.
Source code, builds and commit history:
▶ VIEW ON GITHUB