rubber-duck.blog — nvim
← blog

Big Changes

It’s been a while since my previous post because I’ve been busy with my job and family. Rapid-fire updates:

  • I have a proper domain now for my portfolio website ayaanhafeez.dev
  • I published my browser extension ‘FocusNode’ on the Chrome extension store (awaiting Firefox approval). Check it out here!
  • I added a secure password system to ssht, my ssh manager. Also deployed it to macOS through Brew and to Linux.

Back to the main topic at hand: Terminal Mystery.

The main story of the old manor was an AI-generated placeholder to test out the mechanics of the game. Since those have been mostly finalised by now, I got to writing the main story.

The idea came to me when I was trying to work but my cousins were playing Balatro on the TV. Since the game is already based on Linux shell commands, why not make the story programming related as well? I also recently learned that Balatro is very popular among programmers, so integrating it into the story would be perfect.

I wrote down some key ideas into a file, defining the main plot, characters and ideas, and gave them to Claude Sonnet 5 to write a full story and character descriptions. Since most of the idea was already there, its job was mostly just forming full English sentences from my brainstorming slop.

Now for the implementation, most of this game was hand-coded, but that requires lots of concentration. This is where AI comes in. It was not particularly fast or great, but it’s convenient: I could watch 22 Jump Street with my cousins while the AI worked in the background on mostly trivial tasks like writing parts of the evidence and creating the frameworks for some new rooms — things that already exist in the codebase.

Another positive for AI is that I can make changes really quickly and see how they play out: I added a bit of a tilt to the room view, using a custom shader, to make it look like a top down form one side. I played around with different warp degrees and seperating the front facing wall but nothing really sat right. It was taking away from the pixel art indie game vibe that I was going for when I first started working on this game. With the help of Claude I built the shader and integrated it in a few minutes and played the game for a bit. This change was final enough that I pushed it to main (this can be seen in my commit history) and it wasn’t until I changed the default font to a pixelated font that I realised that I had strayed too far from the original vision of the project. I had recently learned about shaders while reading about my terminal emulator Ghostty and I rushed to use that knowledge here. Unforunately not everything is meant to be used everywhere and sometimes the initial idea is the best one.

While the AI was working, and Schmidt and Jenko were going through their break-up, I went on to create some new textures. As mentioned in a previous blog, I’ve been using LibreSprite to create pixel art for this game, and today’s task was a laptop and a Slack screen. There was only one laptop I could have chosen for this task, and it was a ThinkPad. Getting the slope of the edges right was a bit tough, but it was all smooth sailing afterwards. The Slack screen was just three colours and took less than five minutes.

A bit more on AI — although I believe this topic is important enough to have its own post — I’ve been struggling with finding a good balance of when to code manually and when to use AI. As someone who is considered a junior, it can be difficult to even review AI code if I don’t know what good code looks like, and the only way to learn that is by spending days coding myself.

To conclude, the game seems to be in its final stages before the beta release, which I plan on doing before summer ends and university starts.

// related project
Terminal Mysteryactive
⎇ mayaanhafeez/TerminalMystery3 other posts about this project
Press : for a command, Ctrl+P to search,Ctrl+T to cycle theme, Ctrl+S to cycle style