Players submitted an excellent list of deficiencies in the beta of the new update called The Threat System. I’ve been working through them but it is taking a while.
See, there are two problems with this game.
A) It isn’t finished.
B) Parts of it aren’t right.
Every time I try to address A. Unfinished by adding a feature, I have to spend time on B. Not Right to correct stuff that isn’t right, or at least not inline with the revised vision of the game.
An excellent concrete example of this just happened while I was typing this:
I previously added some new entertainment, comfort, and social options to the Inn. Addressing the A problem.
I better aligned the tooltips and text display for these options.
I posted a screenshot on the real-time dev blog
Eddie looked at the screenshot and pointed out “5% increase to any of those services’ wellness values would be unnoticeable” He’s totally right!
So now I have to go address the relationship tier rewards - both a design task and a small coding task. That’s a B issue.
So even if it takes 15 mins to do the relationship tier reward rebalance, that is discovered work and makes it take longer.
I’ve Been Updating Long Ignored Systems, Like Wellbeing
This pending release I revised a lot of the game: map gen, monster patrols, towns, buildings, conversation system… it’s a long list. It’s great, because I brought them all up to my standard and aligned with the vision of the game.
But there are still some nooks and crannies I haven’t touched yet. And this is where suddenly there is a big mountain of Discovered Work.
Players reported that the run away wellbeing drop penalty was too harsh.
They are right. But the problem isn’t the wellbeing drop. The problem is that recovering wellbeing is too onerous and, as I discovered later, expensive! Running away from combat effectively cost 800g of wellbeing loss.
Wellbeing has been a system that is supposed to be important but was under designed and had no balance luvin’.
So I dug into it and figured out what Wellbeing is:
How much recovery can the player do in a day with little effort and with great focus?
How much is a point worth in gold value and time?
What are good (and if clever, excellent) ways to gain wellbeing?
How do I make role playing the funnest most efficient way to play and stop bad un-fun patterns like just going to the inn and spamming food over and over to get wellbeing up. That’s not “interesting choices”. That’s just ‘pay the money, get the bar up.’ and the player does whatever is most efficient regardless of what it is called or the flavor text.
Last year I cast the long term vision of the game and stated wellbeing was a core valuable system to manage. It should feel like you are managing it, not just watching it drop and then filling a bar for a buff.
So I updated the Wellbeing system. Actions come in 7 categories of gain:
Food, Drink, Sleep, Comfort, Social, Mount, and Achievement
This is something I had to do eventually, I just ended up having to do it now.
As a mage, studying and improving in magic makes you happy. Wellbeing++
As a human, spending time with a friend makes you happy. Wellbeing++
Mounts are kind of like a pet that is always with you. So having a mount provides a steady daily amount of Wellbeing.
While maybe not perfect, the new system is better, or in a design sense “more correct.” I’m happier with the game and I think you will be too!
Speaking of mounts, that reminds me…
Mounts
When I say I revised the game a lot, I mean it.
In analyzing how the patrols and map movement was working I decided to switch to a turn based system instead of a time/speed based system. This is more akin to rogue like experiences I’ve played where I move, monsters move, I move, monsters move. (I understand other rogue like games have speed/turn based systems, it came up in the real-time dev blog.) It solved a LOT of problems.
But it made mounts useless. In their previous iteration all they really did was move faster and give you some more inventory space. Now that every hex is a turn, that speed boost benefit disappeared.
I spent some time with players on discord thinking through what value a mount could offer. We had some good ideas, so I implemented them.
Now mounts provide all kinds of useful benefits:
Increased chance of running from monster patrols - when encountered
Skill boosts, like +10 to stealth or persuasion
Stat boosts, like to your reputation or prestige
New abilities, like +1 AP in combat, or guarding you at night so you are never ambushed when camping
In implementing these mount changes I hit my nemesis:
Thousands of lines of ridiculous, over engineered, multi-layered self-referential JSON files. A design left over from previous programmers that is a waking nightmare to work with. I never should have let them do it. Regrets. I have a few.
The JSON above is setting two values on the mount in the most obtuse way: inventory slots and how old the animal is when you buy it.
Why someone would build a field in millions of minutes when it is so clearly thought of and used in years, I will never know.
JSON should be simple single lines like this:
"StatBuff" : {"Stat":"inventory", "value":10}
"Age" : {"min":"2", "max":4}
I have a dilemma - I have this terrible system I hate working with that takes forever to add one thing because I have to do it across 3 different files in 3 different folders all called… wait for this, you’ll love the user-friendly genius of this… “template.json”!
Flipping through 3 different files in Notepad++, all called “template.json” to edit the right value in the right place is hair rippingly infuriating! Can’t make this stuff up folks!
Enter AI To the Rescue!
I’ve been having success with Cursor for the last several months. I like it. I’ve found AI very good at data-oriented refactors that preserve functionality but exist in a new format. In a word: it is very good at Transforming.
I decided to do a test - see if a) it could (context wasn’t too large for it) and b) how long it would take, to transform the Mount system into sensible usable JSON.
It took about an hour. 90% of that was prompt writing and correcting. An hour to completely change the data format and update the importer code.
Now:
ONE file per race of mounts
It takes ONE line to do something like add a stat bonus.
All the variants for the mount are stored in that one race file, allowing better customization than before.
And what is the file called? So I can locate it in the future if I want to modify it? So I know what it is when I happen across it?
“Template.json” of course! Because obviously that is the best name a file can have. Every file in the game data system should be called that!
No, I called it the race name, like “MountCavalcavara.json”, or “MountStag.json”.
If I had to do this refactor by hand, I wouldn’t have. It probably would take me days or even a week just to get the new design to parity functionality of what was already written. It just isn’t worth it. And that is why many big refactors that are so necessary go undone: Too risky, too tedious.
This improvement of the mount design, data, and system is great. But I learned something very important.
There are other parts of the game that are terribly architected with terrible JSON filled with hundreds of Template.json files I simply don’t know how to change. The most important is Combat Spells, Combat, and Spell Progression.
Before my mount experiment, I only saw two options: Use what is there and choke down the bile every hour I do so, or start over and build something new to replace it.
There is now a third option. It wasn’t available a year ago, maybe not even 6 months ago: Transform the existing system into a good usable one.
Combat, spells, and progression has gone from something I dare not touch, and won’t get to changing until much later, to something I could spend a few days to transform into something good.
And this realization has very good implications for the project!
Conclusion
I’m still working through the playtest defects. Backlog says there is about 3 weeks of work left in it, but that doesn’t account for surprises like wellbeing was. I’m still working away at it and the game is getting better.
Bonus: Post about AI Programming and the Dilemmas It Brings
Today I had an issue with tooltips.
I did my normal workflow in Cursor: had cheap Composer 2.5 model make a plan.
A coworker at my client work has been talking up Claude Opus so I decided to give it a whirl on this task.
I never thought as a programmer I’d have to one day know so much about models and pricing, but here we are.
Claude Opus 5.0 (and 4.8, 4.7) costs 10x more than Composer 2.5.
And 5x more than Grok 4.6.
It’s about the same price as GPT Sol 5.6
I set two agents running, with the same prompt, at the same time to make a plan.
Cheaper Composer model came back quicky, less than 10s, with 'change this, add this timer, do that, shift pixels, tooltips will work.'
Opus took forever - like almost 10 minutes. It came back with 'You have a fundamental flaw in your screen switching where the town buildings are still live in the background and they are absorbing raycasts from the mouse preventing your tooltips from working - the tooltips themselves are fine.'
I was in shock - but the opus one sounded more legit, so I had it implement.
Sure enough, all the tooltips work correctly now!
This would normally be a cause for celebration - but it is not.
This is a 😱😱😱 moment!
I've been using the cheaper model for a lot of things - what else has it been wrong on?
What else is a bandaid instead of a real solve?
The solve from Opus cost about $6.00 USD. Composer less than $0.60 and covered under subscription.
I ran the test of same prompt from same source code commit on ChatGPT Sol 5.6, Grok 4.6, Composer 2.5, and Opus 5.0. Only Opus found the underlying issue.
Going forward, when I have a problem, do I spend the 10x to ensure it actually is a simple problem?
How can I tell a 'deep' problem from a 'shallow' problem?
This tooltip issue totally looked like a shallow simple problem. But it wasn't.
Do I just bite the bullet and spend 10x on AI? This isn't some corporate expense account, this is my food and mortgage money. At $6/hr Opus will cost me over $1,000/month.
These are hard questions to answer.

