I haven’t written in a while because I want to share what is already built, not what I intend.
For almost six months, I’ve been working on one major feature. But to support it I had to touch almost every aspect of the game.
Now that it’s in testing, I look back and am proud how it forced me to shape the game more into what I’ve always envisioned.
Here’s the journey, and what changed.
The Big Feature: Systems Based Threats & Villains
Similar to other RPGs we all enjoy, I could script a multi-step quest line: NPCs tell the player about a monster’s activities, put in some set piece battles, a story turn or two, all leading up to a boss battle. The player’s progress is measured by ticking off the todo boxes in a list.
I’ve already built this. It’s fine, it works, I enjoy it in other games.
But that’s not what we’re here for.
I want a fantasy world that feels alive: That pushes back, does things I don’t expect, and can ultimately win if I ignore it. I want a Forever Funbox™ I can play. (OK that’s not really trademarked)
I’ve been chasing this for years and took several attempts at it. End of last year had a nice sales bump which enabled me to focus full time on coding for at least a few months.
I sat down Jan 5th and had to decide where to begin, what did the game need most?
I chose Systems based Threats. Which means enemies that plan, think, act, and play against the player.
“In short, make it a game of player versus monsters.”
Little did I know how difficult it would be!
Step 1: Regions
I had to start with the data. The data required treating a play area like a single province with joint news, connected towns, unified biome, and an antagonist threatening the whole fragile system. I call this a ‘Region’.
The game world is now made up of multiple regions, each can be of different biome, size, population, and later noble families and rulers.
Restructuring the World data was a significant and necessary rewrite that paved the foundation for the rest.
Step 2: New Map Gen
I’ll be the first to admit the previous map gen wasn’t good enough. The idea of trying to generate a whole world in a 40x40 hex map was a fail. And because of problems in the algorithm there just always seemed to be hills, mountains, and more hills everywhere!
I started to fix it, but eventually threw it out and wrote a new biome based one.
It generates regions based on temperature, allowed vegetation, randomized features like volcanoes or craters, and spacing out towns and points of interest from each other.
Then I went further. It generates and names landmarks. NPCs now use those to provide directions.
Then I split out towns. They can now have multiple housing districts based on size. I added outdoor buildings like brewers and farms on the map and you can visit them.
After 2 months of writing the new terrain gen I started getting sick of waking up each day and just working on terrain gen. I had a feature to build! What I now had was superior to what came before and supported what I needed. So I stopped there.
As of this writing, you will only see it generate temperate maps and there are no rivers or roads. This is enough to support the Threat feature and will be expanded once it’s working well.
Step 3: Defining the Threat
The next step was to data model the Threat. What it can do, when it can do it, why it does it. That last one is really important and took several iterations before landing on something that works.
I originally posted a Threat design based on a spider queen. There were a few nuances to the spider queen I didn’t want to tackle for the first Threat, so I made a simpler one to prove out the system and mechanics. The threat system is generic and built to support many kinds of threats.
Threat - Moggrat the Goblin Warlord
Motivation: An elite goblin leader has emerged and sees the human population as a rich source of plunder. He unites the fractious goblin tribes under his banner with promises of meat, steel, and gold. He builds his forces to the point where he can attack and destroy the regional towns.
“A Threat’s behavior is driven by one core metric: Power.”
Power represents how bold and powerful the threat is in the region.
The Threat seeks to increase it’s Power to exceeding a certain threshold so it can perform it’s ‘super move’. In Moggrat’s case, once he accumulates 250 power he can start destroying towns.
Power is the sum of four resource values that range from 0-100:
Supplies - Food, equipment, pack animals, and battlefield stores
Affects: Enemy starting HP: 70%, 100%, 125%, 150%, 200% including Boss and elites.
Wealth - The coin, plunder, and rewards used to pay and equip the threat troops, determining their morale.
Affects: Damage modifier: 70%, 100%, 125%, 150%, 200%
Minions - The size of the threat's followers, beasts, and lair population
Affects: Number of enemies in combat: -1, 0, +1, +2, +4
Captives - Prisoners forced to build, serve, and provide sport for the threat’s boss, or food for it.
Affects: Boss Health and Damage: 70%, 100%, 125%, 150%, 200%
Lieutenants
An additional resource value tied to Minions. Every 50 minions, a new lieutenant is recruited. Lieutenants are elite mini-bosses that appear in a Threat Boss fight. Once recruited or killed, the change is permanent. Taking out lieutenants before facing the boss is a sound strategy, but not mandatory.
Step 4. Threat Actions in the Region
A threat like Moggrat wants to grow in power and start taking over those juicy towns. How? Every X time period he takes a ‘turn’ and performs an action. The verbs the Threat has available are configurable and specific to the Threat. The target of the action is based on power level. So at low power they ambush individuals and extort a single building with small rewards. Later it grows to confronting whole towns with big rewards for success.
Scouting – reconnaissance, checking for weaknesses
Raid – Attack for the purpose of gaining Supplies. Can hurt or kill NPCs and damage buildings.
Extort – Gains wealth through threatening to attack a building or town. Monsters are honorable in that if a town pays tribute they will not attack it – at least for a long while.
Ambush – Attack for the purpose of gaining captives. NPCs can be hurt or go missing.
Recruit – Increases followers through uniting the tribes. NPCs can see the bonfires and hear the drums.
It took about a month to get all this working. But it might as well not be there if it doesn’t affect the world.
5. How Threats Affect the World
There are two major systems that have been added to support Threats.
Threat Witnesses and Outcomes
Every threat action creates witnesses and/or victims. The possible outcomes are:
NPC spotted monsters, NPC got away
NPC hurt
NPC captured (not yet implemented)
NPC killed
Building damaged
Town damaged
Town destroyed
How does the player find out about what the Threat did?
Through a new regional news system.
And how does the player access the news system?
Through the innkeeper of course!
There is a new prompt at the Inn “What news?” – which only appears if there is new news to hear.
The innkeeper will tell you of someone who had an incident with the threat. You can follow up by going and speaking to the witness, or not.
It’s not very sophisticated, it gets the job done.
Hurt & Repairs
If an NPC is hurt, they have a reduced offering until they get better.
I had to add the ability to see buffs on NPCs so you can see they are hurt and when they will get better.
If an NPC’s building is damaged, it closes while repairs are underway. You can see how long the repairs will take. If so inclined, you can help out by providing gold and resources to speed along the resources. Which if you do, greatly improves your reputation in the town. Which brings us to another new system.
Buildings now operate on a simple damage system. It depends on the power of the Threat and the Defenses if a building is damaged or destroyed in the action. A normal building damaged in attack becomes damaged. But if it was already damaged, it is now destroyed.
NPCs are similar: they become hurt, and if hurt again are killed. Buildings owned by killed NPCs are reopened by family members after a period of mourning.
Reputation
Towns now track your reputation for doing kind/heroic acts. Your regional reputation is based on a weighted aggregate of all the towns (cities are worth more than villages).
Your reputation is what precedes you when you go to a new town or meet a new person. They have heard of your heroic deeds.
Defeating the threat will massively raise your reputation in the whole region.
As I write this, I now realize I didn’t connect this to the Legacy score system. I put it on the list of things to resolve before release.
Defenses
Towns now have three levels of Defenses which protects the town’s buildings and NPCs from death and destruction. Defense represents more than just walls everything: militia, earthen barricades, equipment, water brigades, manned watchtowers, and general alertness.
A town with weakened defenses will be destroyed when attacked by the Threat.
A town with normal defenses has a chance of repelling the attack but then becomes weakened.
With fortified defenses a city repels an attack, but the defenses are depleted a level.
A player with resources can fund the improvement of Defenses, helping protect it from the Threat’s next attack.
Danger System
This has been long overdue and became required in order to spawn monsters on the map.
Towns (not buildings, towns) create a radius of civilization and safety around them (range based on town size). No monsters will spawn or even travel near the town.
As you travel into the wilderness you enter the monsters territory. Every step increases danger and the possibility of monsters appearing. It is a complex system but I’ll keep it simple here. They appear either as tracks or roaming patrols.
Tracks are static, and only last for a period of time until they wash away.
Patrols will hunt you when within scent and sound range.
Your perception and monster lore stats are used to identify the patrol’s race.
Monsters will hunt you and call in allies as they chase. They will give up after you are a certain distance from their territory.
The monsters that appear are based on where you are and how dangerous it is.
A region with an active Threat are the major nuisance everyone has to put up with. You are mostly likely to face patrols from the Threat with all the modifications identified above.
You can use the new Heat Sense spell to control the Danger system by revealing patrols and tracks before they would be close enough to hunt you. A detected patrol will be marked and you can sense where it is no matter how far away.
Entering a town (not a building) will cause all the monsters to lose interest in you and return home.
I’ve always wanted the map and monster movement to feel similar to what I liked in Ultima V and now it does.
Monster Presence
This is a new/old concept implemented in a better way. Landmarks are geographical areas like forests, hills, mountains. These can be populated with a specific monster population. If you wander in a wood with giant spiders in it, you will mostly get spider patrols and tracks. Every time you defeat a patrol in combat it lowers the population, to the point where the monsters go extinct, making the place safe for you and NPCs.
Points of Interest on the map (a single hex spot like a ruin or old building) can have monster presence there as well and act the same as a landmark
Map Movement
Movement on the map has been simplified to be more rogue-ish: You move, then the monsters move. Time no longer matters, every move is an hour, some terrain is now impassable. This plays better.
Step 5. Discovering the Threat Lair
Lairs are now elevated to something much more involved because they represent the home base of the Threat. Moggrat has a lair, your first task is to discover it.
I decided to go GM hand-wavy on this part so made a simple clue system:
Interviewing a witness provides one clue. Always. Safe steady progress on the threat.
Going to the site of the incident and passing various skill and magic checks provides additional clues, but there could be monsters around. These expire over time so you either investigate or don’t and lose the chance. The skill based way to find the lair.
Defeating a threat patrol in the wild has a chance of dropping a clue. The confrontational battle way to find the lair.
I used the tracks icon to show Clue locations, it’ll be replaced with a better icon.
Initially Moggrat’s lair is hard to find, requires a bunch of clues - he’s not very big, doesn’t leave a lot of evidence. Later when he’s attacking towns, it doesn’t take much to follow an army of goblin tracks back to the lair.
I then had to create a new UI screen called The Journal to track your clue progress on the Threat. This screen solves a lot of data display issues I have and is now the player’s window into the game world data. It replaces the old Quest screen which was probably the ugliest screen in the game.
This screen needs more work before I release, but you get the idea.
Once the player discovers the lair through clues it will scroll to it and reveal it on the map. This took a bit to figure out how to do, but now I know and can use it for other things!
Step 6. Attacking the Lair
The core fantasy for attacking the lair is (this is at the top of my design notes):
I found the lair.
I chose how to attack it.
The enemy reacted.
My choices changed the final battle.
The player attacks the lair to weaken the threat, rescue people, steal resources, kill leaders, or force the boss into a final confrontation.
I want it to feel epic, like a great tabletop roleplaying session with back-and-forth to it. Not a “one and done”.
I don’t like how my dungeons play, plus they wouldn’t be appropriate to the outdoor environment anyway. I’ve been baking an idea for how to do outdoor lair assaults for a while so I decided to take a week and try it out here.
There is a lot here so let me unpack it.
First, a map of the lair is generated (the nodes not the art). Each node has a type which determines the kinds of actions you can perform:
- Guard Post is a battle
- Chest lowers lair wealth
- Wagons lowers supplies
…
The top right shows the status of the lair in resources and alert status.
The idea is allow for hit-and-run tactics to weaken the opponent and get out clean at one of the Exit locations. OR charge in and just fight everything.
As you move around and take actions, you draw attention to your presence and increase Alert. Setting fire to a supply wagon is a great way to destroy supplies, but also raises a lot of Alert.
Your Alert max is based on your Stealth skill + spell effects + a base amount.
When you max out Alert, the guards launch an attack including one or more elite Lieutenants.
If you run from this battle, any gains you made undone (they put out the fires, find the poison in the food, etc.) and are now alerted to your presence and more emboldened.
If you win, you kill a lieutenant, which is a big deal. The other way to take on lieutenants is to confront them in Tents. This is much better because it is a solo fight with no minions around.
Either way, when you leave the lair you get a summary of your accomplishments.
Step 7. Boss Fight
Confronting Moggrat is in your control. There is a single Boss node on the lair map where you can confront the boss. This is a battle to the death, you wither win or die, no running (there is a warning).
Elites are red, boss is golden color.
The boss fight has all the modifiers applied from the Lair values, so it could be a huge battle with lots of enemies and elites, or just the boss and a few minions based on what you did.
If you win, the threat is vanquished and you are the hero of the region!
If not… roll up a new mage and try again.
Step 8. Threat Wins
Or, you can completely ignore the threat and watch the simulator run. Moggrat will grow in power, patrols will be more frequent, and soon villages and towns will start being destroyed. You can save humanity or watch it burn.
I didn’t do anything for what happens after you or the threat wins. The general idea is you can travel between regions, so if one is destroyed, you still have other things to do. But the Threat will spread to the other regions, layering on top of whatever already faces those regions, making them harder.
Step 9. Other improvements
There are many more improvements I made along the way I didn’t bother to detail here. The big feature here is the Threat systems.
Step 10. When Can I Play This!
Everything described above is already built. I waited to hit feature complete before sharing all this juicy info with y’all.
I touched (and broke) most of the game in adding this Single Feature Update!
This week I have been playtesting and fixing bugs.
I think I need another two weeks of playtesting and fixing before I put the release on the Beta Branch for playtesting.
So sometime around Jun 17-21.
Conclusion
I hope you like where this is going. I think the game is feeling better and fitting my vision more. Hopefully this is a good step forward in creating the Forever Funbox™ this game could become.
I tried very hard with the time I have to make the game a game. With clear objectives, lots of choices on how to overcome an adversary, and clear win and loss scenarios.
You can follow the day-to-day development of the game on the Real-Time Dev Blog Discord Channel. I appreciate all the questions and feedback players like you have provided as I tackle dev of this game.
My next dev blog post will be when I’m done internal testing and have an exact date for the Beta Build release.

