Did some low-poly palms for the upcoming Alpha 9:
I’m still working on wrapping up features/bugfixes for Alpha 9. Last big feature that needs to be done before Alpha 9 release – AI troop management between defence/offence positions. It’s proven to be one of the greater AI flaw so far.
Until then, wip builds are available in Discord community: #new_versions channel.
Alpha 9 will have the following major features:
- Aggressive animals
- Early army
- Warriors morale
Let’s see how they work!
Wolves, bears and boars will now attack all nearby units within some range. Wolves and Bears also got special spawning house – Den. It will spawn new animals until destroyed. Animals spawned from den will wander within certain radius (attacking anyone passing by) and “guard” in smaller radius (running to attack anyone approaching).
Animals and dens can be placed and configured via built-in Map Editor.
So now, animals are a real threat for citizens working in the field and for advancing armies. This can be seen in Horseshoe – 1vs1 map, designed around wolves obstacle in between 2 players.
Soldiers can be trained from the first second now. Militia training was moved to Camp. Cost of training is 1 Blank (who will leave his Cottage upon completion) and 1 Club. Clubs can be made later in the game in Weapons Workshop at a cost of 1 Wood. Typical Camp will have a dozen of clubs at the start, allowing player to hire Militia for exploring and self-defense, but not enough for full-scale offense operation (more on that in Morale section).
Along with Militia, now Camps can train Serfs and Builders (they cost only 1 Blank).
Warriors attack strength now depends on their class and proximity to their (or any allied) town. Militia has lowest morale strength – only 15%. This means that it will fight at full strength within it’s town borders and only at 15% strength when far from the town (e.g. in enemy town). Better warriors have stronger morale (which goes all the way up to 100%). This means, that for example 2 enemy militia can be easily beaten by just one defending unit.
I want the system to be stateless – that is given static setup (units/houses placement) morale should always be the same, irregardless of previous/next system state. In other words, if you see a screenshot you can calculate everyone’s morale without knowing what happened before.
The factors at play are:
- proximity to own houses is the best and strongest factor
- proximity to enemy houses lowers morale
- allied houses are also counted (after all we want to encourage allied help)
- campfires should boost morale as well (so they play a bigger role as outposts)
Here are some results of 100 test runs. First number is defenders count in their own town, second is approaching enemies. Tests were made with 2 and with 10 defenders to find out equivalent number of attackers:
- Militia: 2/4 10/41
- Axeman: 2/3 10/18
- Swordsman: 2/2 10/11
All these features are aimed at making early game more engaging.
Took these screens while playing challenge map in Alpha 9 – you have to survive against incoming enemy hordes, where each new wave is stronger than previous one. I’ve managed to last for ~40min:
P.S. You can try out Alpha 9 wip yourself by downloading from this special Discord channel: https://discord.gg/cEwJFSY
This week I’m experimenting with house building process.
There were several ideas, simple and complicated ones. But in the end I’m aiming toward the balance between house building process that should look appealing and doable from technical and labor standpoint.
Here’s how Cottage building steps look like when colored in prevew:
And this is how it looks in the game when the house building process is in progress:
It’s a long road to propagate this building approach to all in-game house. Especially since many house still don’t have their looks (and some houses are still not planned out yet). There are also pipeline issues to solve, so that modeled houses could be split into parts and imported in the game easier.
For now, Alpha 9 is likely to include just one or two houses with building process steps.
I’ve been asked about making a Discord server for the Knights Province.
So here it is: https://discord.gg/tqDCZzx
Feel free to come in and say Hi! 🙂
Suddenly all site links got broken and started leading to an empty page with lone “No SKU!” text. I was afraid site got hacked. An hour of troubleshooting lead to the solution – Just go to Settings-Permalinks and hit “Save ” button – miraculously cured!
TL;DR: When compilation time goes out of hand – prune “uses” sections.
Over the time the game`s EXE compilation time grew longer and longer. Today it clocked at 70sec! Of course codebase has also increased (~350kLoc now), but still it was weird, given that 330kLoc compiled in 12 or so seconds just a few months ago. Such long times are very counter-productive, given that project has to be compiled and tested every now and then during active development.
Delphi is known for it’s super-fast compiler. So I had to check what’s going on.
Thanks to Source-Code-Versioning (which is SVN for the project) I was able to roll-back to older versions and find the one that increased the compile-time from 15 to 68sec. It was made a month ago. Why did it make such a big change – I can’t say. There was nothing special in it, apart from shuffling several files between folder and changing a few bits in “uses” sections. This was a good lead though – I started to check what will affect compilation time between this and previous versions. It seemed like moving files between “uses” sections was the answer. So I did a quick optimization – removing unused units and demoting them wherever possible from “interface” to “implementation” sections. This was the answer! With 10 min refactoring sprints the time dropped down to 36 sec, then to 26 sec, then to 18 sec. I was on the right track.
Now I have returned to the latest version and started optimizing .. An hour later I’m happy to have project compilation time back at lightning-fast 8.5 sec! Praise the fast Delphi compiler! 🙂
P.S. All times are given full rebuild from SSD drive. Every time I did several builds in a row – times were very consistent.
Here’s a post mainly intended for mapmakers:
For the game I’m looking into setting AI army plans in a more convenient way.
Typical aim is 75min session where AI gets an army of a few hundreds
That’s roughly starting at 1 warrior per minute and ending with 10.
Let’s average that to 5.
Now there are roughly 10 warrior types which could be trained
So on high end we might have requirements of 8 melee per min. On low end we could have 1 siege per 20 min
– Higher numbers naturally feel like more (instead of EquipRate which goes in reverse)
– It’s more intuitive to set this in an integer format
So my proposed plan is:
– set army demand in form of “WarriorType per hour” for each warrior type
– allow to change this from dynamic script
This way AI could be set to train exact army proportions (e.g. a lot of swordsman and bows, or all in into militia and a couple of catapults, or just a few pikemen for remote villages)
What do you think about this feature?
P.S. Forum discussion.