This is a massive post, so I have put stuff in spoilers. Basically, while I love the idea of hordes, their current implementation needs a lot of work, and might actually need to be temporarily removed from the settings since they are quite broken at the moment.
What is the current state of hordes?
Ideally the current state of hordes is as follows:
- Hordes are randomly generated initially on all city tiles. Non-spreading hordes are generated on things like electric substations and swamps
- Hordes will randomly wander in different directions, if they can’t hear anything.
- If they hear something (a very loud sound), they will tend to randomly wander towards that direction. Eventually they will give up, or reach the sound.
There are major problems with this implementation, but I will get to them later. First, these conditions are not currently being applied correctly
- Initially, hordes are attracted (lightly) to a random spot between (-10 to 10), (-10 to 10). These are the ten tiles closest to the automatically generated spot in the top-left, with 29 interest. This is less interest than a gunshot, but not by much.
- Hordes will move towards that point as fast as possible, never making detours (unless they encounter some other stationary hordes, such as swarms of dragonflies. Then their behavior becomes harder to observe.) They travel at 50 speed (although fast zombies may effect that, that is untested)
- Hordes will never stop moving towards that point. The interest drops by 1 point every 5 minutes; but when it hits 15, it stops decreasing, and the hordes continue to move.
- If interest hits 100, they stop moving, and interest never decreases
- Occasionally, hordes will travel to the wrong tile: They don’t head towards the tile that made the sound, but another tile entirely. I am not sure on the specifics of this anomaly.
I haven’t recorded these under the ‘bugs’ section, because even if the issues outlined above were fixed, Bumpkin makes a major point about a major problem with hordes as they are ideally implemented:
And someone else (who I can’t find the quote for … sorry!) mentioned another major problem with hordes: The only sound that is ever created must happen within your reality bubble. Sound cannot be created elsewhere. So that means that if sound occurs, even if you don’t make the sound, the hordes would (should?) travel towards you
Now there are a few possibilities that I have thought of, but I am aiming to design a standalone horde system that doesn’t require us to simulate NPC’s lives. Thus, I need a design document.
A good implementation of hordes should:
- Be able to be outrun
- Be able to be fought
- Be able to hide and be outlasted (Although random movement may lead the horde to you)
- Remain a threat until the horde is killed (or a part of it is killed)
- Travel to you, not you to it.
- Not require constant checking of the overmap
So here is my suggestion of the ‘radically’ overhauled zombie hordes, that hopefully will not be too difficult.
[size=24pt]What makes a horde?[/size]
A horde has exactly one unique zombie: A zombie overmind. If the zombie overmind is killed, the horde will not function. The zombie overmind is not intellegent, per say, all it does is keep the zombies close to it, and tends to wander in straight lines longer than regular zombies (this does not need to be simulated at the ‘lower map’ level, but explains why it alone travels across multiple overmap tiles). It would probably fight as strongly as a regular Zombie, and be as tough as a zombie brute (not as tough as a hulk, however).
Each horde has a list of the number of zombies of each type in the horde (optional: health level of each zombie).
[size=24pt]What does a horde do?[/size]
I am not 100% sure how this will be implemented in code, so please tell me if any part of this is not possible.
When your reality bubble encounters new tiles that have a horde on it, each new tile discovered has a 1 in 576 (24 * 24) chance to spawn a zombie overmind. If it does, then all the zombies with the horde are spawned around it, as close as possible, in a random orientation. The horde has ‘descended’. Since the reality bubble is 90 tiles in radius (right?) and vision is 54 tiles, even in the worst case scenario, a horde would need to be nearly 1600 strong before zombies would ‘spawn’ in sight range.
Every hour, on the hour, hordes will move one map tile randomly. In addition, any zombie overminds that are not in the reality bubble will ‘ascend’ into a new horde on the overmap, along with any zombies in that overmap tile, or any of the eight adjacent tiles. (One issue with this is that all zombies, regardless of whether they were previously part of the horde, become part of the horde once you approach it. It may be possible to assign each zombie as a member of a certain horde, and if that is the case then do that. But otherwise, it is a reasonable price to pay for richer hordes)
If a horde moves over an overmap tile with zombies already on it, 20% (configurable) of the zombies on that tile will also ‘ascend’, and join that horde. This means zombies ‘trapped’ in certain circumstances will be able to get ‘freed’ by joining a horde, but this is a reasonable issue to allow, in exchange for richer hordes.
If a horde moves onto an overmap tile that is under the reality bubble, there is a chance proportional to the coverage of the reality bubble that the horde will descend on the edge of the reality bubble
Finally, how is this better?
- Since hordes do not move towards sound, they are not naturally predisposed to seeking the player out
- It does not require simulation of NPCs, while allowing the possibility for NPCs to react to hordes at an ‘overmap level’ level of simulation in the distant future.
- Hordes pose a credible, and increasing, threat as the game progresses
- There are no ‘cheesy’ ways to defeat a horde. You must either flee, fight, or hide. There are no other options, but many ways to implement those three fundamental methods.
- It doesn’t break suspension of disbelief any more than the current method does.
- The redesign of hordes will fix the bugs in the current implementation. (Although they may introduce new ones. Such is the price of computer programming…)
Thoughts? Suggestions? Improvements? Complaints? Accusations that the current system of hordes is entirely perfect as it is now, everything is working as intended, and that I am a n00b for suggesting this? Feel free to say them all