Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About MeatShield

  • Rank
  1. 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. Events 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.
  2. Why not? Just after the bombs dropped, lots of things were destroyed but some stuff survived. Sure, more stuff was destroyed in the hardest hit locations, but... In the days and weeks after, the people who survived flocked to the least damaged regions and they were looted the hardest, all the good stuff is gone. The more destroyed regions, and those most infested were not looted as hard if at all. So in the world we spawn into, the harder locations have better loot, and the nicer places don't.
  3. They could do something like the heat system. A per Chunk value that increase or decreases the game stage of the zombies spawned within it. The value could increase over time naturally (biome based?), and other human activity could increase it too, kinda like heat now. However the value would not decrease over time on it's own. It would require the player to do so. Killing zombies in the area could reduce it, and there could be missions given by the traders to 'purge the area'.
  4. B* is a search algorithm, it's just not very common, and not really suited for 3D path finding. It's a really cool algorithm and I'd highly recommend reading it. https://apps.dtic.mil/dtic/tr/fulltext/u2/a059391.pdf It's best used for optimizing decision making, and it works equally well for an optimality search as well as an adversarial search. It 'could' be used for 2D/3D path finding, however the special sauce that B* brings is a pair of values for each node. One is an optimistic search cost and the other a pessimistic cost. These values represent the bounds for how expensive a path that traversing through this node is. As the graph is explored, these values are updated when more accurate data is found. This can be beneficial if a nodes optimistic search cost is higher than the pessimistic cost of another, it can be excluded entirely because there is clearly a better path through the second node. This is really cool, but I cannot think of a good way to weight these values initially. Since the player can arbitrarily build structures, the pessimistic value would have to default to infinity, or some arbitrarily large value like 4 blocks of steel blocks. The optimistic value would be the difficulty of traversing the block contained in the node. So none of the special sauce B* has does anything except add overhead. Further, I can't figure out a way to integrate the X,Y,Z heuristics like we can with A*, or similar greedy algorithms. I'd love to see how B* could be adapted to 3D path finding, but I really don't think it's possible.
  5. I think it should be possible to add tags to POIs. These could then be used by quests to allow for more specific quests. Currently clear quests have a difficulty_tier property, which corresponds to a DifficultyTier property in the POIs. What if we added a set of tags to POIs, and clear quests such that a clear quest would only choose POIs with at least 1 of the tags. For example, the tag Military_Base could be added to all of the military base POIs, and we could create a clear quest that would only select POIs with the Military_Base tag. Now that isn't very exciting. But we can do the same thing with fetch quests. What if we wanted an early fetch quest for a beaker. Getting a quest to find a beaker in a random POI isn't that realistic, but what if the quest only looked for realistic tags. Tags like Science_Lab, Medical_Lab, or Meth_Lab. So what does this get us. It gets us a highly dynamic quest system and sets us up for new quest types in the future. I've looked in Localization - Quest.txt and it appears they have plans for additional missions. I envision a system where you go to the trader and ask for an auger. They say they don't have one, but tell you the location of 3 nearby places to check. A hardware store, a construction site, and a house with a shed in the back. One of them will have it. By making the tags part of the POIs it also allows for custom POIs to be included. If I make a meth lab trailer POI, I can give it the Meth_Lab tag and the quest for a beaker would be able to use it. Thoughts?
  • Create New...