Hacktoberfest '21

Hacktoberfest is an annual event that celebrates open source, and I will be working on my video game for programmers this month.

Hacktoberfest 2021 Wallpaper

Hacktoberfest is an annual event in October that celebrates open source and encourages participation in the open source community. For me, it is the third time participating and I have some big plans for this year.

The Theme

I have spent a lot of time over the last year or so thinking about the intersection of learning, programming, and gaming. More than a year ago I wrote the following piece on the topic, and my thinking has not changed much since:

Why I Want to Build a Video Game for Programmers
As an avid gamer, I love the structured challenges and feedback loops that video games provide. Especially when there are clear goals, but a lot of flexibility how to achieve them. Can we make practicing programming more engaging by combining it with gaming? Challenges with ProgrammingI love program…

In the year that followed, I experimented with technologies and interfaces to test a few hypotheses. I hacked around with Bevy, a new game engine written entirely in Rust. I took my first steps with Godot, and embedded a simulation written in Rust inside it. But the experiments have not yet led to an actual game, and I am not closer to original goal...

The Goal

So the goal for October is to take what I learned in my experiments and start working on an actual videogame for programmers. This is not a project that will be finished in a month, but in four weeks I want to have something that can at least be called playable.

Concretely, I want to create the foundation for the videogame and implement a first game mechanic to prove the concept. It sounds simple, but requires me to shift from a prototyping to a product mindset and actually deliver something.

The foundation that I refer to is everything that is required to work on the game. Code bases for the game's logic and the API layer, repositories on GitHub, continuous integration, and automation for common tasks to save myself time. I have written in the past about how I set up certain parts of my tooling, and I want to write one or two more articles in October about this topic.

Fully Automated Dependency Upgrades with Dependabot and GitHub Actions
Dependabot is an app for GitHub that automates dependency upgrades through pull requests. When maintaining many or large projects, manually merging these pull requests can take quite some time. Luckily, the process can be fully automated with the help of one or two GitHub Actions.

The game itself is something that will not fit into a single month. Truth be told, the vision that I hold in my head will require years of dedicated effort to implement a universe full of possibilities. But leaning into agile development practices, every cycle of work should produce a runnable product. And so should October...

The Plan

A month sounds like a lot of time, but between my work and social life there is only so much time left to work on open source. So a plan is needed to use the time that I have in the most effective way possible. Roughly said, this is how I want the next four weeks to look.

Week 1 – Foundation

Building the foundation is the first step. I can cut some corners here and leverage work that I have previously done in my experiments. But I do need to think about a few questions without apparent right-or-wrong-answers. What architecture should the game have? What game engine best supports this architecture?

Answering these questions is a daunting task, because they have the potential to set and restrict the long-term strategy for the game's development. But given my previous attempts, chances are high that this project will not live long enough for these decisions to be a problem. So let's just make them and move on...

Week 2 – Game Mechanic

The second week is dedicated to the development of the first game mechanic. I already have an idea in mind, and pages upon pages of notes and drawings in my notebook. So the challenge will be translating the idea into code.

Week 3 – Developer Experience

An hypothesis concerning the success of the game is that developer experience matters: If programmers can get started easily and find the resources they need to be successful in the game, they will like the game and play it. To test this, the third week is all about creating a good developer experience. A starter template for Node.js, good documentation, and a place to connect with the community.

Week 4 – Validation

The last week is less about coding, and more about exploring the mid-term future of the project. With a very rough but playable proof-of-concept in hand, what does the community think about the project? Is there interest to see this project continue? And if so, can I validate that it would be commercially viable for me to dedicate more time to it?

The Deliverables

At the end of October, I want to have achieved the following:

  • Take the videogame for programmers from idea to prototype. Release a small, playable version that demonstrates what can be possible...
  • Validate the idea and answer the question whether it makes sense to invest more time into this project.
  • Write more. So many ideas are only partially developed in my head and notebook, and I want to take time to put them into a coherent form and explore them on this blog.

I hope that putting these on paper creates the accountability I need to really follow through with them. The first day of October is already gone, 29 more days to go. Let's get started...