First Year Progress Retrospective

Welp, it’s been one year of work. Let’s document the progress.

Introduction

A year ago today I left my full time job with a strong itch to make a game and at the same time wear as many hats as I could in the process.

Not only I wanted to make a game, but I also wanted to write the tools, fix the engine, setup an infrastructure, learn about marketing, etc, and after a year of doing this full time I figured it’s time to take a break and celebrate what we have done.

And I say what “we have” done because even though I’m a solo developer, I don’t really do everything on my own. I constantly build upon tools and operating systems others have built, I outsource certain development tasks that are not my forte, and I contribute back to FOSS when I can. Is it okay for me to say that only I did everything? I don’t think so. I also work for all my future selves, see? Just like a student of Master Foo who has seen many come and go to learn of his teachings. Including a prodigy, a C master , and a GUI programmer.

Anyway! I’m starting to ramble. Let’s get back on topic.

Given the breadth and depth of the tasks I wanted to tackle, explaining every single thing I’ve done over the past year doesn’t feel practical so instead I’ll try to break it down into a list non-gamedev tasks and gamedev tasks.

The goal for this first year was to learn as much as possible, to minimize costs as much as possible and to get most of the non-gamedev tasks out of the way and I feel like that’s exactly what I did.

Non-GameDev Tasks

  • Bought domains and a lifetime mail server subscription.
  • Read the legal agreements of all the software I wanted to use.
  • Learned how to host my own pages and services
  • Implemented initial GitOps infrastructure (it works great!)
  • Started doing the company’s bookkeeping on my own with hledger and hledger-flow to save money for now.
  • Create initial server cluster and service mesh to make it easy to add/remove web services (currently in progress and using HashiCorp Nomad + Consul + Traefik)
  • Infrastructure as Code

At some point, at least in 4 to 10 years from now, it would be nice to have my infrastructure written down in code (perhaps in Terraform) so that it’s easily modifiable and easy to migrate over to a public cloud, but doing that at this stage is way overkill and I don’t think I’ll need that anytime soon. In fact, I may never need that. Having my own servers and service mesh I can access remotely is more than enough for my current and foreseeable needs.

GameDev Tasks

  • Learned a bit more about how game designers think through many Game Developer Conference (GDC) talks and the Door Problem
  • Fixed/debugged my Godot framework and got it to work properly across platforms
  • Automated Godot 3.x builds for major target platforms (Windows, Linux, Android, Mac, iOS)
  • Figured out most of the game design I want for my first commercial game
  • Wrote a custom EventBus for performance reasons
  • Expanded ScreenshotManager into VideoCaptureManager to grab the last five seconds of gameplay in Godot – great for marketing purposes
  • Wrote CI/CD pipelines to automatically export to all target platforms at every commit
  • Design a Dialogue Editor
  • Implement the Dialogue Editor
  • Design and develop first commercial game

Throughout the year I focused on debugging/fixing/enhancing a previous Godot framework I’ve already been developing on my free time.

I started the year with 10889 lines of GDScript code already written and finished with 12919, for a total of 2030 new lines of code written which makes sense given that most of my time has been spent on non-gamedev tasks which I was interested in tackling first.

I also have an itch to implement the Dialogue Editor first before I start working on the game design and implementation so I’m going to do just that.

The Time Cost

Over the past year I spent a total of 2132.65 hours working on my own, which equates to about 8.20 hours per day on a weekday. Not bad. I can formally say I did work on my own on a full-time basis.

Digging through my time cards I thought it would be interesting to see what my top time sinks were this year and here are the top 8:

HoursActivity
466.0website_development
317.0infrastructure_update_and_maintenance
292.5tool_development_for_games
186.65game_design_research
137.0administrative_tasks
124.5infrastructure_research
95.0market_research
92.0setting_up_equipment_and_software

And no wonder. I didn’t know anything about web development or setting up an infrastructure and piecing it all together was quite an undertaking. There are just so many libraries and frameworks and jargon that to find the tools I wanted to use throughout all the noise, it obviously took some time. In the end I opted to err on the side of performance. Static sites are definitely my jam (hehe… JAMStack pun intended) and after digging throughout so many codebases I can confidently say Haskell, Golang and Rust are my new favorite programming languages.

Conclusion

I am very happy with how I spent my time this past year. While I’m not that much closer to finishing my first game, I’ve followed my curiosity everywhere I could and feel I have a much stronger foothold and knowledge base for making a broader set of games.

I expect to finish my easier-to-access service mesh infrastructure and my game dialogue editor within a month and a half from now and from there on all paths lead to game design and development and I’m very excited about that.

Next year I expect most of my hours will be burned developing my game and I’m excited to see how far I’ll be able to take it.

Comment successfully submitted! Your message will be shown in a few minutes.
Please provide a valid name.
Please provide a valid email.
Please provide a valid URL.
Styling with Markdown is supported
Please provide a valid message.
Please provide a valid recaptcha.