Jump to content

Faction Influence Heat Maps and Dynamic Events


Recommended Posts

I was listening to the dev streams (awesome, thanks for doing that). There was talk about some sort of dynamic event engine and I had some thoughts about how to implement that which would allow for the world to feel alive, and that the factions exist even when the player isn’t present. Creating emergent NPC behavior and allowing players to make an impact on the world. There are 2 parts to this, the Heat Maps, and the Events System. The Heat Maps that represent how much influence a faction has in a region, and an event system that uses the data in the heat maps to create realistic events.


Heat Maps


Similar to how there’s a heat map for player activity that screamers react too, create a heat map to track each factions influence. One for each of the 2 main factions, one for the Bandits, one for zombies, and one for the player(s), etc. These heat maps track the relative strength of influence the faction has within the region.


The simplest example would be zombies. The level of influence within a regions impacts strength of the zombies the player encounters, stronger sleepers, stronger or more frequent wandering hordes, etc. The zombies will spread influence to adjacent regions as their influence rises. This spread of influence can be kept in check by a different faction having high influence in an adjacent region. The player can also directly impact the zombies influence within a region by killing zombies, clearing POIs, and by from missions generated by traders to clear highly infested POIs.


The 2 main factions would function similarly. They would have high influence in whatever region they have their main base in, and it would slowly spread from there. As influence increases past a threshold, the faction can setup a stronghold in an adjacent region. This would involve a handful of POIs needing multiple versions, a normal one, and one for the faction strongholds. For example the fire station POI could have version that the Dukes control, it’s got a few traps, maybe a janky kitchen and some sleeping arrangements… make it feel like humans live there. This doesn’t need to be done for each POI, just a handful at first, and eventually a dozen or 2 overall.


The heat maps change over time. These changes can come from the player, or from Random Events, or emergent behavior between the factions. Some structures could also generate influence, like a stronghold, or some sort of zombie infestation. Players could receive missions from the factions to destroy rivals or from traders to aid others. Completing these, successfully or in failure would impact the influence accordingly. Similarly the player simply killing every zombie in sight would slowly reduce the influence of zombies in the region.




Random Events are generated based off of the state of the heat maps and how they could interact with each other. They can be generated at regular intervals, such as once per game hour, or a few times per day. If the player(s) are not near the event, it can be done purely in code (faction A attacks faction B, roll dice, adjust heat maps). If the player is nearby, the event would play out in front of the player as emergent behavior.


  • Ex: The Bandits have high influence in a region, and decide they’d like to go raiding, a quick search is performed for nearby raid-able POIs like a strong hold, and one is chosen. The bandits send out some people to raid. If the player(s) are no where nearby, the event can play out purely in code. Roll some dice figure out if they were successful or not, and adjust the influence accordingly. Maybe they did well and the bandits gain influence, and their target looses influence and the strong hold they attacked reverts back to the normal destroyed POI. However if the player(s) are nearby, it can be similar to a wandering horde. The bandits spawn, somewhere near the strong hold and attack it. The player can participate, run, whatever. Depending on how many die on which side, the influence will be adjusted and maybe the next time the player(s) leave the region the POI would be reverted to a ruined state.
  • Ex: The zombies have been gaining strength in a region adjacent to a region the Dukes have high influence in so the Dukes decide to purge the xenos zombies. If the player(s) aren’t nearby, roll some dice and adjust the heat maps, but if the player is near, things get interesting. As the player is exploring the region, there’s an increase in Duke troops in the region. They spawn in higher frequency in groups and they go around trying to clear POIs and kill zombies. Do they see the player? Do they like the player? Do they hate them? ... Maybe both the main factions decided to purge the same region, is there an all out war in the region.


The possibilities are really endless, and they can be tied into the trader missions too.

  • Ex: The trader have advanced knowledge that the bandits are going to raid XXX and wants the player to go and help out. If the player gets there early, they have time to setup, if they arrive too late the fight could already have started, or worse, could already been lost.
  • Ex: The Dukes are loosing influence in a region and needs someone to deliver supplies, depending on how fast the player delivers the supplies depends on how the influence changes in the region. The player could also use the opportunity to attack them in their weakened state, angering the faction and possibly the trader.



I envision all of these things going on in the background, and making the world feel more alive. A player coming back to a region they haven't been to for a while could have had the powers shifted, what once was zombie infested has been cleaned up by a faction, or what was once controlled by a faction, has been overrun by bandits. But it's not just a purely random thing, there's a reason behind it. A player who allies themselves with a faction can see that faction spread it's influence across the map, and see their rivals shrink.

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...