As part of a game jam organized by the Finnish Game Jam and the European Space Agency (ESA), I was able to dive deep into space exploration with a simple but fun 2D game during two days of development.
With one of the themes being "Delayed Frustration", we decided to make a game about expanding your satellite network to act as a relay for ship controls. The further you are from Earth or the closest satellite, the more randomized your movement is, making it impossible to control the ship at some point.
So, what is your mission? Collect resources from the nearby planets to craft more satellites, then place them strategically to be able to reach the furthest planets and collect more resources!
But it's not that simple, if you crash the ship while carrying resources or a satellite, you will lose them. And crashing becomes really easy when a planet's gravity force is pulling you in, or when your friend decides to charge at you!
The goal of the game is to plant more satellites than your opponent before all resources run out.
As the sole programmer on the team, I was responsible for implementing all the game mechanics.
Initially, I made sure the basic space movement was smooth, and that two controllers could be used to control the ships. Then, I added the planets and their gravity. The gravity force is calculated based on the planet's radius, and the distance between the ship and the planet's center.
After that, I implemented the resource collection, satellite crafting and planting mechanics. They are all quite simple and fit within the same category: land on the planet, wait one second to collect/craft, then take off again. Planting the satellite does not require waiting.
That alone is too easy though, so I added the crashing mechanic. If the ship tries to land face-on on a planet, it will crash and its position will be reset, resources lost. The same happens if the ship collides with another ship.
Finally, some procedural generation was in order to make the game more replayable. The position of all planets are randomized at the start of each game, as well as their size.