Jump to content

(A19) WalkerSim - Enhanced roaming zombies


Recommended Posts

  • 3 weeks later...

I love this mod and its idea, in A19.3 its working flawless, but as mentioned before its a bit too much off a endless hassle, there should be a break every now and then...

 

My suggestion would be something like this pseudo code. It would bring in some values, such as gamestage, difficulty, population, day lenghts and (bad)luck. Differencing between Day and Night would also be an option, but for now the example is w/o Day/Night difference.

Its all about the idea, to make an player "invisible" for the 2D-ModeOfflineZombies as long as the player stays in the current chunk. If this is possible at all, bonus points for saving this chunk status (or the timer set for "invisibility"), when player leaves the current chunk.

Invisible means the player does not cause the 2D-Zombies to spawn in as soon as he hits the kills needed, more below.

Invisible does not mean, that any Zombies already spawned cant see/hear him.

 

Please let me know, what you think of it and if its possible at all.

 

 

Pseudo code:

TimeInChunkMins = get TimeInChunkMins
24hrLengthMins = day length in Mins              
24hrLengthFlo = (24hrLengthMins / 100)			 
GameStage = get PlayerGameStage
TimeInChunkModMins = (GameStage x 24hrLengthFlo)		
Difficulty = get PlayerDifficulty                       ---- 7 <-> 2 , 7 beeing easiest
Population = get (Population / 100)
RnG 		= random N# between 20 and 10

DayOrNight = ?


---------------------------------------------------------------------------------------------------------------------------------------------------

while in currentChunk


	if	(TimeInChunkMins > ((TimeInChunkModMins x Population) / (RnG - Difficulty)) then     --- the time when counter starts should be a "secret" to the player, hence the RnG																							    

		count _kills

			if _kills > (((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG)) then 	--- in terms of kills, a high RnG roll means (bad)luck
  																							

				current chunk makePlayerInvisibleIn2D for (((TimeInChunkModMins x Population ) / RnG) + Difficulty)  --- make Player invisible but do not remove the zombies currently left																																																										  
			end
		end	
	end
	
---------------------------------------------------------------------------------------------------------------------------------------------------

 

 

ALL results should be upped to their next integer !

    
Example 1: EasyMode Early-Game: 60Mins Day, 120 Population, Random No. 17 , Difficulty 5, Gamestage 20       --- Low Difficulty, low Gamestage + good                                                                                                                                                                                   --- luck, in this  gamestage you will only                                                                                                                                                                                     --- be able to kill slowly

Gamestage 20 x DayFloat 0,6 = TimeInChunkModMins 12

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 1,2 Mins             --- time you already have to be been in the chunk, before the kill count starts                                                  

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) =  2 kills                                    --- seems a bit low but keep in mind that all previously                                                                                                                                                             --- spawned zombies will stay, which is already a lot at                                                                                                                                                             --- pop 120                                

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 5,8  Mins Invisible/no Respawn


                
Example 2: RegularMode Mid-Game: 60Mins Day, 120 Population, Random No. 16 , Difficulty 4, Gamestage 80     --- good mid-game, in-between good                                                                                                                                                                                        --- and bad

 

Gamestage 80 x DayFloat 0,6 = TimeInChunkModMins 48

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 4,8 Mins 

 

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) =  14,4 kills  

                         

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 7,6  Mins Invisible/no Respawn

 

 

Example 3: HarderMode End-Game: 60Mins Day, 120 Population, Random No. 13 , Difficulty 3, Gamestage 120     --- Harder Difficulty, higher Gamestage                                                                                                                                                                                      --- + less luck, but in this gamestage                                                                                                                                                                                          ---you should be able to kill  really fast                                                                                                                                                                                          

Gamestage 120 x DayFloat 0,6 = TimeInChunkModMins 72

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 8,6 Mins

 

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) = 28,8 kills

 

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 9,6  Mins Invisible/no Respawn

Edited by Barra (see edit history)
Link to post
Share on other sites

Update 1/24/2021, Version: 0.3.0
- A19.3 support.
- Fixed potentially locking up the server.
- Fixed initial population not using 'POITravellerChance'.
- Added option to make sound distance configurable.
- Added sound event vizualization support to the viewer.
- Added option 'PauseDuringBloodmoon'.
- Added option 'ReservedSpawnSlots'.
- Added option 'WalkSpeedScale'.
- Improved offline walking behavior.
- Improved zombie spawning to avoid lag.
- Improved despawn when backtracking, they have a minimum lifetime of 1 in-game minute.
- Reduced network bandwidth for viewer.
- Reduced default server update rate from 60 to 40 Hz.
- Reduced 'PopulationDensity' from 120 to 60.
- Increased 'POITravellerChance' from 0.25 to 0.65.
Download: https://github.com/ZehMatt/7dtd-WalkerSim/releases/tag/0.3.0

 

This is what the new sound visualization looks like:

2021-01-24_03-00-40.thumb.gif.a447ec6b2213ec7144be391848d27bed.gif

 

For demonstration purposes all zombies not inflicted by the sound are standing still in this gif.

Edited by ZehMatt (see edit history)
  • Like 2
Link to post
Share on other sites
On 1/15/2021 at 7:15 PM, Barra said:

I love this mod and its idea, in A19.3 its working flawless, but as mentioned before its a bit too much off a endless hassle, there should be a break every now and then...

 

My suggestion would be something like this pseudo code. It would bring in some values, such as gamestage, difficulty, population, day lenghts and (bad)luck. Differencing between Day and Night would also be an option, but for now the example is w/o Day/Night difference.

Its all about the idea, to make an player "invisible" for the 2D-ModeOfflineZombies as long as the player stays in the current chunk. If this is possible at all, bonus points for saving this chunk status (or the timer set for "invisibility"), when player leaves the current chunk.

Invisible means the player does not cause the 2D-Zombies to spawn in as soon as he hits the kills needed, more below.

Invisible does not mean, that any Zombies already spawned cant see/hear him.

 

Please let me know, what you think of it and if its possible at all.

 

 

Pseudo code:


TimeInChunkMins = get TimeInChunkMins
24hrLengthMins = day length in Mins              
24hrLengthFlo = (24hrLengthMins / 100)			 
GameStage = get PlayerGameStage
TimeInChunkModMins = (GameStage x 24hrLengthFlo)		
Difficulty = get PlayerDifficulty                       ---- 7 <-> 2 , 7 beeing easiest
Population = get (Population / 100)
RnG 		= random N# between 20 and 10

DayOrNight = ?


---------------------------------------------------------------------------------------------------------------------------------------------------

while in currentChunk


	if	(TimeInChunkMins > ((TimeInChunkModMins x Population) / (RnG - Difficulty)) then     --- the time when counter starts should be a "secret" to the player, hence the RnG																							    

		count _kills

			if _kills > (((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG)) then 	--- in terms of kills, a high RnG roll means (bad)luck
  																							

				current chunk makePlayerInvisibleIn2D for (((TimeInChunkModMins x Population ) / RnG) + Difficulty)  --- make Player invisible but do not remove the zombies currently left																																																										  
			end
		end	
	end
	
---------------------------------------------------------------------------------------------------------------------------------------------------

 

 

ALL results should be upped to their next integer !

    
Example 1: EasyMode Early-Game: 60Mins Day, 120 Population, Random No. 17 , Difficulty 5, Gamestage 20       --- Low Difficulty, low Gamestage + good                                                                                                                                                                                   --- luck, in this  gamestage you will only                                                                                                                                                                                     --- be able to kill slowly

Gamestage 20 x DayFloat 0,6 = TimeInChunkModMins 12

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 1,2 Mins             --- time you already have to be been in the chunk, before the kill count starts                                                  

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) =  2 kills                                    --- seems a bit low but keep in mind that all previously                                                                                                                                                             --- spawned zombies will stay, which is already a lot at                                                                                                                                                             --- pop 120                                

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 5,8  Mins Invisible/no Respawn


                
Example 2: RegularMode Mid-Game: 60Mins Day, 120 Population, Random No. 16 , Difficulty 4, Gamestage 80     --- good mid-game, in-between good                                                                                                                                                                                        --- and bad

 

Gamestage 80 x DayFloat 0,6 = TimeInChunkModMins 48

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 4,8 Mins 

 

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) =  14,4 kills  

                         

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 7,6  Mins Invisible/no Respawn

 

 

Example 3: HarderMode End-Game: 60Mins Day, 120 Population, Random No. 13 , Difficulty 3, Gamestage 120     --- Harder Difficulty, higher Gamestage                                                                                                                                                                                      --- + less luck, but in this gamestage                                                                                                                                                                                          ---you should be able to kill  really fast                                                                                                                                                                                          

Gamestage 120 x DayFloat 0,6 = TimeInChunkModMins 72

 

(TimeInChunkModMins x Population) / (RnG - Difficulty) = 8,6 Mins

 

((RnG / Population) x TimeInChunkModMins) / (Difficulty x RnG) = 28,8 kills

 

((TimeInChunkModMins x Population ) / RnG) + Difficulty = 9,6  Mins Invisible/no Respawn

 

I've been thinking on how to add the game stage into the mix, the issue remains primarily on having multiple players in the same area. I want to keep the system more natural with less rules, if you clear an area you should be fine but there is always the chance more of them stumble upon that area and gun sounds have a way of attracting them all in all pretty simple rules.

 

I have however different roaming models planned for the future, one example being actual waves spawning at the border and just crossing through the map from one random map border to another random map border of the opposite direction, this just being one example. Another thing I definitely want to look into is terrain elevations, there are so many things I wanna try out eventually but I have only so much time sadly.

 

There is also always the option to simply fork the source code, the code is under MIT license so you can pretty much do whatever you want.

  • Like 3
Link to post
Share on other sites
  • 2 weeks later...

this is such a cool development!....I hope you're still active with it cuz it feels like there's so much potential.

 

a couple questions.... (I'm experimenting with it but haven't done enough yet)

How do Wilderness Spawn increase modlets affect this? (like JaxTeller's x5 multiplier) 

same for increased wandering hordes and increased screamers? do they change the way WalkerSim works and/or are they compatible?

and to run on a dedicated server, can I just use the server version on the server or do the clients need the DMT version as well?

 

thanks for the cool mod....if I was a better programmer (not just a hack-n-slasher/copy-n-paster) I could really dive into this more(!)

  • Like 1
Link to post
Share on other sites
On 2/11/2021 at 1:34 AM, Hoopty said:

this is such a cool development!....I hope you're still active with it cuz it feels like there's so much potential.

 

a couple questions.... (I'm experimenting with it but haven't done enough yet)

How do Wilderness Spawn increase modlets affect this? (like JaxTeller's x5 multiplier) 

same for increased wandering hordes and increased screamers? do they change the way WalkerSim works and/or are they compatible?

and to run on a dedicated server, can I just use the server version on the server or do the clients need the DMT version as well?

 

thanks for the cool mod....if I was a better programmer (not just a hack-n-slasher/copy-n-paster) I could really dive into this more(!)

 

The animal spawning should be unaffected by this mod in general. Screamers should be still triggered by the heat map, I don't recall them being part of wandering hordes, I might be wrong here, so in theory the Mod should not influence it either.

 

And for the dedicated setup only the server requires the mod, clients can play with vanilla client.

  • Thanks 1
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...