A Sabbatical, a Game, and Neovim?

Sabbatical

Yo, so I got blessed with a sabbatical, and that means four glorious weeks of nothing to do. And yes, there are a million things other than sitting in front of a computer during my break from sitting in front of a computer. But for years now I treated myself to the excuse of being too tired in the evening, or having not enough time to properly start a project. And the weekends are for the great outdoors, right?

So going through the list of things that I always wanted to do but never got around to “because of work” I found these:

  • Build a game
  • Learn Neovim
  • Start a blog

Funnily enough, all of these can be easily combined! What a coincidence! I want to start a new project, I can use that new project to get myself familiar with Neovim, and all the while I can blog about what I am up to. We’re talking about synergies here!

A game?

I think there are many like us who first started out programming because we were dreaming about building our own game. But then reality set in, and then the hunger (for food) and we started to look into how to best use our software development skills to earn a living. But the itch is still there, and the dream never really goes away. What if… if only I had the time.

Well, time is what I have right now so let’s see what we can knock out in a couple of weeks.

What I am setting out to build is something that I would love to have played as a kid (and still do), and that hopefully other people try out and enjoy too. I just want to create something that grows and improves over time.

I don’t know about you but I have this thing where I am jealous of other people’s games. Where I look at it and in my head it goes “I wish I’d built that. That must have been so much fun.” And that is the basic goal I set myself for this sabbatical. I want to set the foundations of something that I can build and iterate on in the future, where I can look back with a grin because I remember the fun I had building it.

There were many great games growing up, but the one that stuck with me the most, the one that is just way bigger in my mind and in my memories than it actually was is Black & White. And I have been drawn to all kinds of settlement sims ever since. Because that’s what it was. You as the player, admittedly with godly powers, get to manage a village and based on your influence and actions you get to see it grow in different ways. And the creature that learns from you. For me, there is something magical both, the idea of implementing a deep settlement simulation, and then watching the simulation play out and “come to life”. In my tiny kid-brain this activated all kinds of neurons. Am I good? Am I evil? Do I save them? What happens if I drop that huge boulder on that guy’s house. I’m sure he looked at me funny. Reason enough. I want to tap into that. Unlike other settlement sims I don’t want you to have to hand-hold your minions. They should have some agency! You’re a god for heaven’s sake! The game is not over just because some of them move on from you, far from it! There have also been some really interesting mechanics introduced in games like Foundation where you get to paint some areas for zoning. Imagine using that to express your will. Something like “That forest? I like that forest. That’s a big no-no no-go zone.” and “Yeah sure, I can bless those fields I guess.” Slap some physics on top and we’re halfway there. How hard can it be, right?

Another settlement simulator, nice, but what’s up with Neovim?

My day-job changed quite a bit since I joined, and right now I make heavy use of AI agents in just about any area. I use it to get myself familiar in new code bases, look for and write documentation and as pair-programming buddy to throw stuff against a wall and see what sticks. That means I am reviewing and modifying code a lot more than I am actually writing any. Up until now I was using some unholy marriage between Rider and VSCode, using Rider as my primary IDE and VSCode for general text editing, or poking in code that’s outside of Rider’s world. But with agents I could not get used to the glued on chatbot-ish monstrosities in either.

The way I envision working with agents right now is maybe similar to changes in any physical craft, like carpentry. Where previously I had to plane planks by hand, sand them, and make the fit. But now I have been handed a powertool that does the planing for me. That means producing planed planks (read: lines of code) is now a lot less manual labor intensive. That does not mean I don’t need to think about it anymore, or that I don’t need to know why we need to plane it in the first place. But that also doesn’t mean I don’t get to pick the planer’s color, or how I feed it planks and work with it.

So if the manual labor of writing code is taken care of, then at the very least I would like the actual handling of the powertool to feel as good as possible. I want to remove or at the very least reduce any kind of friction between the thing I want to will into existence and all the steps I need to take from now to finish. Because I still very much want to be a part of that process and I’m more than fine with being the bottleneck. The agent has no idea where the journey goes, so why would I hand over the reins? And if I no longer know how the thing we’re building works, then what’s the point?

So I went out of the IDE and into the console, mostly mucking about with Claude Code, and I thought to myself, the wise men of old were already native to the console, they were born in it, molded by it. I merely adapted the terminal. Anyway, what options do I have to stay in the console for as much as possible? Funny enough, when I first started programming I was firmly on team “if it ain’t got a GUI then it ain’t for me.” But oh well, getting older means you’re allowed to change your opinions I guess. In my ideal world I start the agent, we do some planning, then it goes off and does its thing and at the end I just switch a tab, navigate the diff, take some notes or make some changes myself and rinse and repeat. Death to context switching!

What’s next?

Next I think I’ll share some details about what exactly it is I’m trying to build, the “tech stack” I’ll be using, and why I am setting it up the way I do. Most of my experience with games comes from Unity, so why on god’s green earth am I starting to look into Godot…cliffhanger much?