I’m back and I’m diving into tech for a while. Read on for some fun with game development supported by LLM tools…
Back in around 2015 I decided I was losing touch/empathy with my development teams so I rolled my sleeves up, started coding and wrote a complete text adventure engine (and game) using nodeJS. The main goal was to understand the pains of adding tests to legacy code. The code was deliberately “nasty” but functional.
It grew legs… It became a lot of fun to work on and ended up being published / hosted on Heroku. During development I had the team play test it so I could improve the overall UX, handling of users doing weird things, general bug hunting etc.
It was fun to see how people who hadn’t grown up playing text adventures in the 1980s tried to “talk” to the game engine. I implemented some neat extra features to both handle beginner problems whilst guiding them on how to interact as expected.
There are some pretty advanced features and easter eggs hiding in there too – not the kind of things a typical text adventure would have (we’re talking affinity systems, NPCs deliberately tracking down players (using the Pacman ghost algorithm – thanks Jeff for that insight!), viral outbreaks with mutations, (yes – even before the pandemic), hidden rare achievements etc.
Even now there is so much of the engine still left to enhance and so much game content still to be added – even though it was fully playable (and somewhat hard).
So… It’s now 2025 and whilst I’m between jobs I thought I’ll roll my tech sleeves up again, see how the world has changed and get up to speed on things my teams have been using that I haven’t made time to be hands-on with.
The great news is I managed to resurrect it against the latest version of NodeJS and relevant npm packages with relatively little pain.
(at least on my local machine!!)

Now I want to do more work on it and republish it, there’s a lot to upgrade though.
Imagine 10 years of untouched bitrot, libraries going out of date, breaking changes in frameworks etc…
Step 1 – those old tests. They still run and pass! But nodeunit has long fallen out of favour and I want something that will integrate with my IDE. At some point in the past I’d started to implement Mocha tests instead – but even Mocha is pretty old now.
After some exploring of what’s most commonly used I made a decision – let’s migrate to Jest!
After a few days battling Jest integration with Visual Studio (and hitting what I believe is a known bug in VS). I migrated all my development work to VS Code (bear in mind a decade ago VSCode was in its infancy.)
- So – Visual Studio to VSCode migration – done!
- Jest tests running from the IDE – done!
- Now the fun bit – migrating 500+ unit and functional tests to Jest.
I will pause here and say GitHub Copilot is world-changing.
I am able to open up each test file, tell copilot to migrate it from nodeUnit to Jest, save the results, run them and then fix up and clean up in the (very few) places where Copilot didn’t quite get it right.

What even a year or two ago would have been a long, tedious, and error-prone technology migration is taking minutes per test suite.
Sometimes copilot needs a little extra prompting mind you…

The above stopped too soon and wiped out all the unconverted tests so – a little slower…

I’ve run engineering orgs in a couple of AI companies – primarily ML-based AI but this is my first real dive into using LLM/Chat based AI as a means of improving productivity.
Suffice to say, I’m sold!
Next steps…
1 – Redis upgrade.
Redis for saving/loading games now needs proper async support (back in the day, callbacks worked just fine).
That’s going to be a bit of a monster. Refactoring all the way up the game stack! The joys of promises and awaits means you can’t easily flip from async at a low level to a synchronous top level call. Luckily writing tests is so much faster than it used to be – there’s no way I’m taking this on without some regression test scaffolding. (although at its heart, thos top level calls have to change so this will be a challenge.
2 – Enhance the UI.
The original UI mimics an old computer terminal. It’s fast, responsive, and (if I say so) pretty awesome. It’s pure HTML, CSS and JS, with a bit of help from JQuery.
Ironically; in 2025, people are now much more used to typing conversations into a computer than they were a decade ago! So we’re all good, right?
But… I want to do more with it and learn at the same time – so at some point, expect it to be using React, Vue or Next or something similar (and maybe eventually even a native mobile interface) – and have some visual enhancements. I’ve created the first few github issues for this already.
3 – Build & Deploy.
Hosting on Heroku probably still works but the cloud has moved on. I’m currently looking at a pair of docker containers – one for the main Node game, and a second for Redis. This may be overly complex but it’s a deliberate choice for learning.
Once I’m able to get those containers working well, talking to each other locally, then I can go look at where to host and how to run deployments.
*but* – deploying stuff like that to the cloud is also a *biiiiig* security challenge. Even a few years ago one of my teams was caught out by a bot watching for insecure deployments. A few years ago I watched my head of techops battle a bot in real time, locking off systems before they could be wiped. (and succeeding). But this stuff is even faster and trickier now – so before this goes anywhere in the wild, there’s going to be some security locking down and testing to be done.
And beyond that, *so* much more. If you want to follow my progress, the repo is here…
https://github.com/scrom/Experiments
Bear in mind, the original goal was to deliberately create nasty legacy code and then start digging myself out. This does *not* represent the coding standards I would normally follow (or accept from my teams :D)
Anyway… Happy 2025 I’m still here, I’m still mostly focused on managing, growing, and levelling up teams and organisations. I don’t often call it “agile” any more as there is so much more to everything. I’m sure I’ll write about strategy, agile and lean KPIs, scaling organisations, etc in future but at least for this week, I’m letting my inner nerd free.