Inspiration

Our inspiration stems from when we played games that had a physics component such as Kerbal Space Program and Garry’s mod. We wanted not just a game that had a physics component but also a game that has a simple yet existent story so that it gives us the player a purpose to play. A game that showed us the possibilities was Portal where it had a lot of emphasis on the story while also having mechanics relating to physics. So we decided to make a game that would fully be focused on physics-based motion.

What it does

Ghost Station is a puzzle story game where your main goal is to repair an abandoned space ship. The game starts with you starting in front of a broken and abandoned ship and scattered around the ship is debris and somewhere exists the parts that you need to fix the code. The way to move through this debris is where the physics engine comes in, you are given a gun that when used on an object, it will apply Newton's 2nd law to both the object and you. If you were to push the object, you would also get pushed in the opposite direction with an equal yet opposite reaction. With these movement methods, you have to find the missing part and return it back to the ship to fix it and along the way, you will learn how these ships ended up abandoned.

How we built it

We built it using the Godot game engine. The game was fully written using GDScript which is Godot’s inbuilt language. We considered using the jolt physics engine instead however after looking into it we decided not to use it as we did not need it for our use cases. For our sprites that were used we used pixilart.com to make pixel art sprites that we used in our project. We also used github so we could effectively collaborate on this project together and delegate tasks. Finally we also used FL Studios to make the different soundtracks that would be in the game.

Challenges we ran into

One challenge we ran into while making this game was that in the start you would left click to pull yourself towards an object and right click to push yourself away from the object at high speed. So the only way you can move is if you pull yourself towards an object or kick yourself really fast off of another object which would lead to you going off screen and soft locking yourself. To solve this we implemented the same mechanics as pulling for pushing while changing the direction. This made navigating within the game much simpler while also keeping the difficulty high because it is a puzzle game. Another challenge we ran into was when selecting power we had a bar in the bottom right however we couldn’t intuitively tell what the direction or the magnitude of the force we were applying was going to be. To solve this, our idea took some inspiration from Portal where there was an orange or a blue portal. We set it so if you apply a pushing force the color would be orange and if you apply a pulling force the color would be blue. This solves direction but not magnitude so for magnitude we decided to go with a transparency system. You can see where you are aiming with a beam of that color so we decided that at 100% it would be opaque but as you use less power, the beam would become more and more transparent.

Accomplishments that we're proud of

The accomplishments that we are most proud of was successfully building a physics based experience where the core mechanic is the movement which is driven by Newtons’ 2nd law. The game feels both intuitive and engaging rather than frustrating especially when we play tested it for a long while. Early on in the project, there were iterations where the player could soft lock themselves so by refining the push-pull system, and adding clear visual feedback through the color and transparency of the beams, we made complex interactions easier to understand while also preserving the challenge that makes it a puzzle game. We are also proud of developing the entire game in Godot using GDScript and GDShader, creating all of our own pixel art to give the game a unique style, while also collaborating effectively as a team using GitHub to turn our initial idea into a working game.

What we learned

Through this I think the most important thing we learned was how to apply our programming knowledge. This experience taught us that the languages we learn and the purposes of which we learn them is because they share similar logistics with other existing languages. Knowing one would help with coding in a different language. We also learned how to make pixel art for all of the sprites that are involved with the game. We all had fun learning and developing this for one of our first hackathons.

What's next for Ghost Station

For the future of Ghost Station, we would like to add more missions. At the current moment we only have 2 level scenes which in the future we would like to have more levels. With only having 2 scenes we haven’t fully implemented all of the story mechanics that we would have loved to have. Also at the current moment selecting levels also isn't fully implemented leaving more to be desired. So in the future we plan to add more sprites for more unique experience cause we do not have nearly as many sprites as we would have.

Built With

  • gdscript
  • gdshader
  • godot
  • pixilart
Share this project:

Updates