We're back baby!
So this project started immediately after I played Rimworld back in 2013. I was so in love with the game, and so smitten with the idea that I as a software engineer could jump into making games.
Boy has that been a tough road, and a big learning curve. Knowing how to write business and web software does not really translate well to knowing how to create video games.
Being a passionate video gaming since my childhood playing Zork, Buck Rodgers, Electronic Arts Lord of Conquest (https://en.wikipedia.org/wiki/Lords_of_Conquest), doom, quake, Wolfenstein, etc does not necessarily translate well into knowing how to make video games.
Anyone can have an idea; anyone can start down that path, but holy crap is it a daunting path.
In the beginning, I worked on prototyping systems, all the while learning how you do things in video games. Anyone who is a “coder” understands that the first time you step into something new you have so many questions. Getting the answer to those questions is difficult because in your brain you know what you want to do, but you don’t know how to ask for a solution due to the fact you don’t know what your goal is called. One example as a for instance, when you want to develop a system to let your pawns navigate around the map, the correct term is called pathfinding. Unless you have someone, you can ask, and rubber duck with, you have to try to troll through search engines, or forums hoping to stumble upon the solution you’re looking for. This type of delay adds an exponential amount of time in how long it takes to get up to speed on something and become productive.
So, every major milestone I’d do builds.
First, I had to get a sprite system that would let me build a map, that was not included in Unity at the time (it is now yay!) so we had to find one on the unity marketplace. Now you have a tilemap of sprites that you’ll be able to traverse and explore. But that was just plain, and quickly it got boring being on the same map every time, you knew where everything was, there was no further sense of discovery.
Then we had to work out a system of generating terrain, so we built out a system that would build a world out layer by layer using Perlin noise and assorted algorithms. Nobody wants to play on a cookie cuter world, they want to be able to image the history of this world. They want to think of how the world was shaped by erosion, waterflow, volcanic, and tectonic events.
With a terrain system in place, next we had to start on a “jobs system”, until this point the control of the pawns was done as RTS style, you click a pawn and then you tell them what to do. But that is not how Dwarf Fortress or Rimworld are, you assign a pawn roles and then you assign work that must be done.
That work is broken down by roles and then the AI in the background will find pawns that can do those roles and assign them the work. This is a very delicate process because if you’re not efficient this is what will kill your FPS, the cpu constantly having to determine who should be doing what job. If you’re not efficient you end up threshing your cpu and killing your FPS, which kills any enjoyment of the game.
Once we get the first jobs system into place, we started down the path of creating “Regions + Zones”. We followed some technical docs from none other then Tynan Sylvester, creator of Rimworld, who was kind enough to share high level technical videos on how he accomplished what he did in Rimworld. This was a game changer because it showed me, how the pros do things. It opened up my eyes at how I was going about things the completely wrong way. So, we took the flood fill algorithms that we had created and refactored it all to work the way that Tynan had laid the path out for.
But then that is where the story takes a hiatus, real life had thrown me into a tough spot. I won’t call it depression, not because I would not want to say that, but because I’m not sure and I’d hate to minimize anyone else’s journey through their darkness.
Life continued, game development was still a hobby, but the burning passion faded, I lost it for half a decade. I felt like I was not good enough to even bother finishing my projects. I did not think I could make something that lived up to my vision for my game. I was an outsider trying to break into something I just did not think I could do well. I decided to stick to my core competencies of software, automation, and leadership.
Fast forward to March 2020. I had taken a break from Rimworld after it “released”, I notice that with a lot of Early Access (EA) games I play. While EA games are in active development, I follow them for every update and play them to death, but once the games are released it loses magic. You feel like it’s a “finished game” and the mystery and excitement is gone. You know this is the game you’re always going to have, so why rush to play it now when it won’t ever change?
Then the Royalty DLC came to Rimworld, and I played it. In a few hours my imagination was reinvigorated, and my passion had returned. I saw this amazing game and the amazing community pulling in tons of new fans from services such as Twitch.tv and YouTube.
I looked myself in the mirror and decided I was going to finish SWS (Space Western Survival – working title) and ship it. It wouldn’t be a perfect game; it will be perfect for me though. I hope that I can find at least 1 other fan who sits down and plays this and says holy mackerel that was fun. If that happens then I can say I accomplished my goals.
There is something so deeply satisfying to me about playing procedural games that are different every time. The stories that you see unfold are part of the reason Dwarf Fortress, Rimworld and other games like it as amazing.
So I’m back, and I’m putting some of my older builds onto itch.io as I continue pushing forward to get this done. I need you to hold me accountable, so I have to deliver for you the stakeholder that wants to see this thing finished.
Thanks for taking your time to read, and please give me any constructive feedback you have. Thanks.