Dev Update Mar 7: Towns, Regions, and the First Threats

In the previous update I wrote my goal to introduce systemic global threats to challenge the player. To achieve this, I need to carve up the map into regions and have a better more detailed map.

Jan was laying the tech foundation.

Feb was expanding on it to make a more full medieval world…. in which monsters will crush, pillage, and destroy. (Being a GM, I have a soft spot for the monsters!)

1. Map Now Has Geographic Landmarks

Scenery is now detected and named. This will feed the new directional system for NPCs telling you where to go.

2. Towns Span Multiple Hexes

It was driving me nutz the current build only had one village icon and it was used for every town size.

In fixing it, and discussing with wonderful people like Odynn, KafkaExMachina, Dagy in the Discord channel, I decided to go all the way with Towns spreading across multiple hexes.

While doing that, I might as well put feeder villages around the towns.

While doing that, I may as well put specialty buildings like resource producers out on the map too.

This creates more places for the player to visit, and more places for monsters to interact with civilization. Buildings being placed are quarry, mine, pasture, herbalist, distillery, and brewer.

3. Interesting Maps

I recently read a 1,000 page textbook on Game AI. A major point the author made was, “Start with Random. If that isn’t sufficient, here are some techniques to use.”

Random placement of towns wasn’t sufficient. They would get really spread out or bunched up in a corner. It was literally totally random.

Next I divided the map up into sectors, in this case 10x10 but it’s arbitrary.

Using sectors I can space towns out with a few simple rules, and then go back in and put interesting things between. These sectors will be utilized much more later.

4. Getting Fed Up

I don’t know what you are like, but it’s the engineers dilemma that I set out to do a thing, then must build all kinds of other things, just to earn the right to build the thing.

I did a lot, but I was getting fed up waking up each morning for 6 weeks just to work on maps; all when what I really wanted to do was make the Threat system and get some gameplay going!

It’s simple and obvious to finish a task before starting the next one.
But people aren’t robots and morale is important too.

I’m self employed, working on this amazing game, if I’m getting sick of working on the same thing each day, I can switch off. I do that for my employees!

So I wrote out the remaining cleanup and refinement tasks remaining so I wouldn’t forget them, then started working on the Threats.

5. Making a Plan

I’m pretty organized about my client work. It makes it flow much more smoothly and helps with internal expectation setting. So, I took a moment to plan out the Threat system and assign Story Point estimates to it.

(If you don’t know what Story Points are, it’s a system that allows one to judge the relative size and complexity of a task without defining how long it will actually take to complete. Humans are good at judging how big/difficult a task is, but terrible at estimating how long it will take.)

Making the initial MVP Threat system is 53 Story Points.

5. First Threat

While I like and will build the Spider Queen threat detailed in earlier posts, I wondered if there was a simpler tech demo I could create that didn’t require some of the more advanced gameplay features like multiple breeding sites, Queen regrowth, and escape to other lairs.

I designed the world’s most vanilla RPG quest:

  1. An elite monster, in this case a goblin named Moggrat, is raising a warband and raiding peasants.

  2. Left unchecked, he will extort and attack towns.

  3. Once enough clues are located, his lair will be revealed - but only for a short while before he moves on to another campsite.

  4. Player attacks the Lair and confronts Moggrat.

This has most of the features of the Spider Queen, but is 50% simpler.

I built the basic structure of the system with Scriptable Objects to make it nice and data driven.

Points accrue every X time cycle. Once it reaches the threshold, the Threat can take an action. Actions can have prerequisite actions that must be performed first before they become valid. This helps build tension and make it climactic.

I wanted to define the kinds of ‘spots’ actions can be done on the map. Maybe only some actions, like a raid, only make sense on a farm, village, or housing. Using data to combine concrete Actions with lists of possible targets makes a really simple yet flexible system I'm proud of!

I got the system to run:

  1. Region begins in a dormant threat state.

  2. After X time a new threat emerges from a potential list (of one)

  3. The threat begins and starts taking moves at certain intervals

6. Safety and Danger Zones

I soon realized it is dumb for Moggrat to do a scouting party right next to a big town. He needs to start taking actions in the outskirts, away from civilization, where it is safer for monsters to operate unseen and with a quick escape.

That required building a system of safe zones around towns. This will be tied to the town’s military level.

But then I needed to see where the Safe zones were to ensure the system was working right.

And this is what led to creating a Data Overlay system.

This feature has been requested before. Like Civ or Old World, now I can do data overlays on the map. I threw a shield icon up for all the safe hexes where the Scout mission won’t occur.

This system will be tied to certain world spells so you can spot stuff.

This lays the foundation for Danger which will build as you travel further and further from civilization and safe zones.

The placement of a watch tower or guard tower by a town out in the wilderness will now really matter as it affects the safe zone layout.

Coming Up Next

That sums up what’s been built over the last month. I can already tell it was the right move to start with the map gen before doing the threat system.

With the Threats now firing a Scouting action, on Monday I’ll start working on the NPC’s as witnesses to the event and able to tell you where it is for further investigation.

Once I get the first Threat working I will package it up for a Beta release.

I hope you enjoyed this write up and like where the game is going.

If you prefer to see what is happening dev wise more frequently and more detailed than these monthly posts, head on over to the Discord real-time dev blog where I post daily and discuss features!