The making of the game

The Making of "PlanetDrop"

How it started?

drawing1 I have always wanted to make a game. A keen gamer myself, hobby programmer and a big sci-fi fan, I just had to give it a try. How hard can it be, right? In late summer 2020, I was sitting on a sunny balcony with a cup of coffee, some sheets of paper and a pencil. A couple of months ago the last episode from "The Expanse" closed the season. I was also thinking about one of my favorite books - "The Forever War" by Joe Haldeman. So it started - a space game, where you command a ship, but not like in Star Trek. You will obey the laws of physics, gravity, inertia, etc. From a previous test-project I already knew, this will not be very interesting to play, as space-travel, even with some mockup "physics", is a tedious and time-consuming thing. The SpaceFold technology ("Dune" - Frank Herbert) came to rescue. "Aliens" threw some additional inspiration with the incredible "combat drop" scene (later I decided to make a small tribute, by introducing a "Sulaco" model). I drew the initial "Palm of the Galaxy" outline that afternoon - the name came from a 15years-old-project for a boardgame RPG. Next couple of months were very busy for me and the game did not move from the paper until late January 2021.

What was the budget?

Zero.

How many people participated in the development?

One.

How much time is invested?

Roughly 10 months, 10-20 hours per week.

What tools have been used?

The budget mandated only free tools/resources should be used.
  • Game engine: Unity3d
  • Code: Visual Studio 2019, Notepad++
  • Models: Blender
  • Vector graphics: Inkscape
  • Raster graphics: GIMP
  • Sound: Audacity
  • Screen capture: Greenshot

Some thoughts on the tools

Remark: I do not claim to be even moderately skilled user in any of the tools I used. Any knowledge gained, came from needs, related to the project.
Notepad, VS2019, Audacity and Greenshot are great.
Blender capabilities - I did not even scratch the surface of its capabilities, but again - amazing tool!
Inkscape is a very good tool. It takes some time to get used to its quirks, but in general - does the job. Crashed a couple of times - nothing critical.
GIMP ... I had some experience with Photoshop CS3-5 (yes, 10 years ago), and I have to say I feel this tool is not even reaching "ancient PS" quality. No complains - I got it for free, it served its purpose. Regular crashes though.
Unity3d ... boy where do I start. My humble opinion is that Unity is a mess at this point (google it - I am not the only one). I counted ~50 versions in 2020 alone! Rendering pipelines, incompatible shaders, different ways to do the same thing in a span of just 5 releases, problems with shadows and materials, wrong documentation, bugs...things there change so fast, there is no chance this is stable and healthy environment for a long-term project. I think they are reaching out (unsuccessfully to this point) for the AAA-game-dev world and completely scraping the idea of beginner-friendly engine, which is rather sad. As I am writing this, their official website for DOTS (the fancy new programming technique, nobody knows how to use) is throwing 502-Errors. I liked Unity3d, but I would definitely check what the Unreal engine offers.

How much of the initial plan survived intact?

drawing1 I would say "about 85%". During the writing of the game, I had to set a very clear horizon on what I can and what I cannot do. Some features - like "talking heads in StarCraft style" when new message appears - had to be scrapped. Some ideas need to be adapted for ease-of-creation, as they appeared to be really difficult to implement.

The music is really good, who made it?

music tracks The one thing I could not make myself is the music. It is downloaded as royalty-free tracks, some require "a credit to be given" so you see them on games title screen and here (as a picture).

How many lines of code?

9217

Is the code optimized?

Absolutely not. My entire approach was to do something the simplest way possible. In some occasions I had to go back and remove redundant things or re-write existing code so it is even simpler and shorter. No fancy programming techniques are used ... mostly because I do not know them. Spaghetti-code - ooohh yes :)

What was the hardest part?

Creating UI was utterly exhausting. I wasted more than a month working on it. The default (and free) UI capabilities of Unity are absolute garbage. Everything was fun and games, until I had to force myself to sit down and work on it.
Complex shaders are still a "black magic" for me. Also there is literally not a single comprehensive tutorial on Unity's shader graph - I guess nobody bothers to create such, as it will be obsolete in 3 weeks.
I also had a lot of trouble finding some textures for the planets and deciding which way to go there. Took a lot of experiments. Once you start working with big objects, you realize there are a lot of limitations involved. Procedural planet generation is just not a spoon for my mouth and probably would have taken 2-3 more months to figure out.
A major disappointment was the lack of adequate free assets on the Unity's asset store. Most of the "free-ones" are either old and not working or with extremely poor quality. I expected a lot more in that direction.

What worked really well?

own tools Once the level starts, it is mostly a sandbox. Nothing is scripted, except some patrol paths. Around June 2021 I realized I will need something like a level editor to spawn customized objects around the battlefield, but also have a visual representation which goes where, so I built one.
The "AI" code is just 309 lines - maneuvering over waypoints, investigating unknown radar signatures, reacting to incoming fire, avoiding obstacles and some other stuff. Yes, rudimentary implementation ... but it works.
The overall process after importing a ship model until it is ready to be played went also pretty good. own tools Once the file is imported, I just had to attach several script files, add a couple of colliders and that's it. In a "busy" day, I could start with a brand new model and end with a playable ship.
Destruction is procedural - this saved me a lot of time, as the other option is to create additional, destroyable model for everything.
Scene ordering, transitions, and loading, though hard to comprehend initially, appear to work just fine.

Unexpected fun?

The sound.
I have never, ever touched sound editing in my life. This was a brand new experience, and fairly enjoyable after all. I hope I did not mess it up completely.

Should you give a try in game-dev?

Solacu model Yes, definitely!
If I can - anyone can (I guess even way better than me). Friendly warning though - regardless of what tools you will be using - prepare for a tough learning curve. To complete a game (even on the amateur level I am doing it) takes a lot of time, patience, persistence and efforts.

Any special thanks?

  • Brackeys - this guys is a Godsend! Probably 1/2 of what I learned about game development is thanks to this man alone and his youtube channel. Unfortunately he quit it in September 2020.
  • Imphenzia - another great channel for Blender modeling. Simple and understandable, even for noobs like me.
  • Adasha & Koko - for the moral support and valuable feedback.
  • GamesKeys - for including the game as "Top Steam Games To Tryout In November 2021"