Project Zomboid cover
Project Zomboid screenshot
Linux PC Mac Steam Gog
Genre: Role-playing (RPG), Simulator, Indie

Project Zomboid

Howard Ze(n)d



For our last blog we released the new unstable beta version of Build 41 – which was 41.69 (nice). Today we are releasing 41.71, which follows last Thursday’s 41.70.

You can subscribe to the Unstable beta branch and download 41.71 by right-clicking PZ in your Steam library, and selecting Properties. Now go to the Betas tab and select the "unstable" branch from the dropdown menu.



These have generally been iterative patches, polishing the unstable beta up to a standard that we hope to be ready for a wider stable release next week.

This week’s primary task has been our Sound Team and coder brains fixing out some nasty total sound cut-outs that had been cropping up on busy servers.

Another primary thing we’ve been adding patch-by-patch is our new approach to action music. Instead of switching between tracks mid-combat, the music is reactive and can increase and decrease in intensity during combat and other dramatic moments. The familiar tune can cross-fade into a high action version, essentially.

So far we’ve been getting a very positive reaction from players on the beta. With 41.71 we will have ten out of the fourteen action tracks working in this way, so let us know what you think!

Otherwise in these patches we’ve been fixing lots of different longstanding niggles with the game, so have a peek at the changelists – and jump in if you fancy on the unstable beta to let us know whether you think the build is ready for wider public consumption.

Finally, if you notice that the Unstable beta is misbehaving with your favourite mods, then please let your favourite mod authors know – though please also be patient with them as they all exist in the real world with real lives/jobs/families/pets/TV shows to watch.

Finally finally+ a reminder that we will be removing some legacy builds from the Steam betas once the latest unstable beta goes stable. If you are playing on an older Build 41 beta, then please return to the mainline if at all possible.

NEXT


Meanwhile, new stuff continues to build for future updates to Build 41. The MP team continue their long-term work on having all items operate server-side to prevent item-spawn cheating, while also providing improvements to 41’s more iterative patches.

At the moment there’s also MP work in the can on stuff like vehicle radios now receiving radio stations, VOIP and radio chat messages in bubble text over the car. Likewise improvements have been made to your client predicting where your friends are falling/dying which is resulting in resulting in far less corpse placement weirdness.

Work is also currently going into the smoothness of vehicles being controlled by other folks on the server – especially when they are moving at high speed.

On the TIS side, meanwhile, EP has been integrating a new feature into the in-game map system that will be of great interest to admins and server owners: the ability to see where individual players are on Build 41’s in-game map.

Server operators will also have the option of allowing members of safehouses or factions be able to see each other on their own map, if that suits their playstyle more than the usual default of having absolute no idea where your friends are.



While it’s still not imminent, Aiteron is also integrating new animations into his fishing system that are starting to look really cool. This is super WIP and will get a lot of polish, but this is what it looked like this morning.

Please note that in the vid the character is following the cursor: the cursor doesn’t represent fish placement. Gameplay hasn’t been fully tied to the anims yet.



We are also looking for feedback and local knowledge from PZ players from Kentucky (and nearby surrounding regions) who enjoy fishing themselves.

If this means you, then please check out the questions on this Google form. Massive thanks to those who previously emailed and have already given us some direction also!

 

NEW HIRE


Avid TIS followers will know that for a while we have been on the hunt for an Animation Engine Specialist to join the Project Zomboid team, and we are delighted to welcome one Howard Smith to our ranks. Howard is a big PZ fan, and also has big brains that have previously worked on the likes of Call of Duty, Halo and (wait for it) Left 4 Dead.

Truth be told, in the big push for MP our work on our animations tech stalled somewhat – and there’s still many, many aspects of PZ combat and movement that we want to streamline and improve, and likewise many complex systems we’d dearly love to integrate in the future. Howard has a tasklist a mile long covering areas in which our animator has been logjammed recently, and as such will be something of a busy boy.

Something else, meanwhile, that this gets us back on track with is work towards a release of our internal AnimZed animation tools to the community. This won’t be an imminent thing, but part of Howard’s work while getting bedded down in our code will be in building documentation and making some improvements both for us and the modding community.

MORE NEW HIRE?


Following the success of Build 41, we also find ourselves in a position where we can hunt down other experienced Games Programmers to join the Project Zomboid team.

We are looking for coders willing and able to refresh some of our older systems, polish the existing ones and then to delve further into the features that will be part of the Knox Event’s exciting future.

Interested applicants should check our jobs page, but we should underline that we currently don’t have any entry-level positions available. You will need to have a fair amount of experience we are afraid.

TILL NEXT TIME


That’s all the major news for this blog, but tomorrow we will have a surprise treat for denizens of the PZ subreddit. Pat_Bren has tracked down and interviewed a community hero, which has finally allowed us to say…



This week’s arboreal scene from a S1ngle Man. A changelist of all our pre-release and post-release patches since the 41 beta began can be found here. The Block of Italicised Text would like to direct your attention to the PZ Wiki should you feel like editing or amending something, and the PZ Mailing List that can send you update notifications once builds get released. We also live on Twitter right here! Our Discord is open for chat and hijinks too.

41.69 Unstable - Niiice



Heya everyone, so today we’re pushing the 41.69 patch out into the Unstable beta, which you can subscribe to by right-clicking PZ in your Steam library, selecting Properties, now go to the Betas tab and select the "unstable" branch from the dropdown menu.




This is a the first release of a wide-ranging version that touches many parts of the codebase – including some fairly foundational stuff to improve the smooth running of MP, some handy new hooks for modders and many and various different fixes and improvements.

The full and unexpurgated changelist is pretty vast, but a quick topline run-through of its contents will now follow:

  • In MP: improvements to car physics, admin improvements, anti-cheat fixes, better handling of dead bodies, PvP and safehouse fixes, fixed grass growing through safehouse floors and much much more.
  • VHS fix – an end to the peril of one-time-use video tapes on servers.
  • A raft of Steamdeck compatibility improvements.




  • New items, new forage finds, updated 3D models, new hair types and more.
  • Scarecrows and Lab Skeleton ‘mannequins’ that can be kitted out in player clothes.





  • Quality of life features: renamed Skill books, better item placing, movable minimap and many and various other things.
  • 3D items now shown as textures rather than models. As such they now slide around less when the player moves, and have far less of a performance impact when all piled up.
  • New/improved tag system for modders, and other general mod-side improvements.
  • Added ambiance noise for different areas on the map tied to particular buildings and items, such as a little bit of mall muzak.




  • Relevant ‘power down’ noises for the above-mentioned sounds to flag the power/water cutting out.




  • New sounds for arcade machines, gas pumping, vehicle headlights and car window opening (both via handle and electric windows). Also BBQ noises, campfire sounds, fireplaces and more zed trip/thump stuff.
  • Improved treatment of inside/outside sounds depending on whether doors and windows are open or closed.
  • Loads of UI and controller improvements that are universally handy, but have primarily been put in for (you lucky!) Steamdeck users. 41.68 works okay with the new handheld device, but 41.69 should provide some vast improvements.
  • Lots of general balance, including a spotlight on foods and recipes.
  • A shitload of general fixes.


We would be hugely grateful if players could move over to 41.69 and report any oddness or hiccups, and likewise to inform the creators of any mods that have been broken.
 
We have done our best to bypass disruption, but in such a wide-ranging patch there will always be mod toes that the code has unavoidably trodden upon.
 
(Creators of radio/TV-related mods should especially pay attention to the MP VHS fix, as it may cause some issues.)

OTHER STUFF


Elsewhere work continues on Build 42 and 43 content continues, with RJ still focusing on farm animals, and also the introduction of some basic AI versions of wild beasts also. Please consider these WIP!



Also coming to you today with a WIP tag (as we are working on far better player directional ‘strain and lean’ animations rather than a repeated ‘pull animation’) is a video from Aiteron showing his current work on the fishing update.
 
A lot of work these past few weeks has also been into making it work online, and our testers have been having some impromptu fishing competitions already.
 
Here, also, you can see:
 
  • Water splashes (visuals WIP) to show placement of groups of fish, ultimately we plan to move to a more constant surface disturbance to show the positions of fish at any given time, as well as use the current splashes instead when the fish is struggling on the line.
  • Lines and hooks that can be changed on the fishing rod that have an impact on your fishing.
  • A fishing net you can catch items in, and a new ‘generic trash’ item that can also become snared up in your tackle and provide you with a random item (not always a shoe!)




In the land of MP meanwhile the Strike Force are currently working on vehicle smoothness, and rare strange physics during and after vehicle collisions. They also have some imminent plans for better hit-fall position prediction, which should make corpse placement much closer to how it looks in SP.

We are also partway through a longer term process of making the inventory system completely server side (or rather authenticated server side) to avoid any kind of item spawning cheats. This is something we really need to do to close up the potential for item hacks on MP servers.

It will not likely appear for a while, most like coming in a major build rather than an iterative patch as it is a major piece of work and will also come with the potential for mod breakage for mods that spawn items directly on the client.

(We’ll make sure to keep it unstable a good period to give mod authors a chance to fix when it rolls around, and will provide some method for modders to legitimately spawn items recognized by the server when needed.)


This week’s stand-off from Viиicius. A changelist of all our pre-release and post-release patches since the 41 beta began can be found here. The Block of Italicised Text would like to direct your attention to the PZ Wiki should you feel like editing or amending something, and the PZ Mailing List that can send you update notifications once builds get released. We also live on Twitter right here
Our Discord is open for chat and hijinks too.

Lone Survivor



Hello! The last couple of weeks has had an unusually high number of absentees, by coincidental combinations of gaming conference attendees, long-planned family visits, and even an unforeseen emergency hospital stay (that turned out fine, don’t worry) meaning we’ve been running on a somewhat diminished team of late, but that should be sorted out by next week and we’ll be running at full steam again! – so unfortunately, there aren’t any sexy vids or pics to show off. However, still we have some super interesting stuff to talk about! However, it’ll likely take the form of ‘lotsa text’ so prepare yourself for that!
 

41.69


First, 41.69 (nice) build is still in progress, we’re testing a bunch of changes at the moment and are eager to get it out there, but are still weighing up the cost of disrupting the MP servers with the benefit of the goodies within, and making the call on when we’ll push to unstable and start the release process. We’ll let you know when we know more.

Here’s the changelist of 41.69 thus far!
 
https://pastebin.com/ZhRhKVZi


NPC Narratives


For the blog, we figured a good way to give people something real tasty to sink their teeth into regardless of the lack of fancy vids or pics, would be to show off the text results of our future Narrative NPC system that we discussed a few weeks back planned for Build 43.
 
As we detailed in our first NPC ‘meta’ system explanation, we have a powerful narrative event system that can be used to add context-driven ‘storylets’ together into a somewhat convincing narrative for NPCs when they are away from the streamed-in world. These would define the goals of the NPCs, as well as evolve their situation so that when the player runs into them they have a convincing backstory, or events can transpire to affect those groups when they are not around for the player to witness. They will also drive events with npcs while the player IS present, leading to interesting generated story events for the player to interact with.
 
These events set flags on characters, move their virtual presence along road networks and between houses of which all the rooms on the entire map are accessible even when the tiles themselves have not been streamed in. We can add extra data and tags that change the NPCs states and allow them to experience simplified narrative events that will branch and trigger randomly, and each of these events can have numerous outcomes of which we can attach a line of dialogue recounting the event later, so the characters will be able to sit around a campfire and let the rest know their story, or group members can recount the events of an eventful trip the player wasn’t part of, or what transpired at the safehouse while the player was away.
 
Context-sensitive text scripting is used to modify these lines of dialogue to fit the situation. For example, a tag for a character’s name in the dialogue can be substituted with ‘my mother-in-law, X’ or ‘my nephew, Y’ tracking the relationship between the two characters, or even between the character being spoken about and a third character (‘X’s brother, Y’). Other things such as a town location can be substituted where necessary, and there can be variant lines that are picked based on the characters, their flags, or other environmental conditions. Or just raw RNG, to mix things up a bit.
 
Pat_Bren has been busy coming up with a whole metric ton of varied events and mini-narratives, and Lemmy has been integrating these into the event system. There’s a lot more to add yet, but it's starting to yield some cool results.
 
Here’s a few narrative outputs. Full disclosure: some massaging of the results has taken place here, it’s somewhat curated as the system is still capable of some very odd results and the pool is not yet large enough to avoid ‘arrow to the knee’ situations, if we just threw in the first 10 results it’d probably not be so impressive at this stage, so we’ve picked ones with the least overlap — though you’ll likely notice a few repeated statements (in most cases this also demonstrates the variants or alternate paths we have there to mix it up) – our goal is, ultimately, with progressive builds, to widen the library of narrative events and lines to the point where each story feels completely unique (easier to do without voiced dialogue, but we apologise profusely to our translators). 
 
Please be aware these are still work in progress, and we still need to do some work to make these flow as naturally as possible as if recounted later to another character — rather than as a straight log of events that can seem a bit terse and unnatural, so none of the text is remotely final and we still need to figure out a good balance of information that would feel natural to share to a third party potentially weeks later…

(It’s very important to note that, at present, these narratives are limited mainly to the meta, and while we talk about how they will impact characters the player witnesses, there is still a lot of work to do in that department. This is all very super work-in-progress, and while a metric ton of work has been done across the NPC codebase, it's still a big job to piece it all together to work as one.)

I knew the electricity would be cut off.
We stocked up and ate the fresh food first, then we lived on cans.
We already had a generator and we used it for a while, until it caught fire…
The flames spread quickly.
Juan got the extinguisher, but it wasn’t enough.
The smoke got to Keith, but we were able to drag him out of there.
The whole house was on fire, and we lost everything.
I thought the Murphys might help us out, but they wouldn’t let us inside, they said it was too dangerous…
We were so desperate, we moved into a nearby house.
We pushed a bookcase in front of the back door.
Broke apart a table and used the pieces to secure the windows…
Then we just held out there as long as we could…



There were four of us. We were holding up in West Point. It was crazy!
My brother-in-law, Jason, just abandoned us, left us to fend for ourselves. We never saw him again.
We tried to find a store that was safe. We had to go out and look for anything we could get our hands on…
But those things were everywhere. We couldn’t get anything… There were too many of those things!
We had nothing, food had run out.
Then a couple of days later, someone started banging on one of the windows. We had no idea who it was!
It was Jim, a neighbor of ours, wanting to come inside.
But what if he was sick? We couldn’t risk it.
I hope he made it…


Those things broke through the barricades and poured inside.
I did the best I could, but there were just too many!
We panicked and ran…lost Lang and Dillon, I don’t know if they got away, or…
I think they got away. They’ve got to have, right?


Just before the shit hit the fan, my sister Annie got sick.
We tried to take her to the hospital… but the highway was blocked with traffic.
By that time we realised it was too late, the car was blocked in, there was no way out.
We had to abandon the car and make our way on foot.
Annie was real bad, her fever was getting worse. Bryan, her husband, had to carry her.
There was nothing I could do for her… I did what I could, but it just wasn’t enough.
We didn’t know. We had no idea what would happen!
When she turned, she bit Bryan on the back of the neck.
We left them both out there, God help us. We left them both walking around out there!


I tried to get home to my family. When I got home they’d already bugged out, they left a note saying they’d gone up to Riverside to my inlaws.
Why didn’t they wait?
I know I’ve got to get over there, before…


There was little I could do for him.. I did the best I could, but we didn’t have enough supplies.
He knew what was going to happen.
He asked me for pills and locked himself in the bathroom
We buried him out back… that is, after we…


Just before the shit hit the fan, Joe got sick.
We tried to take him to the hospital, but the streets were clogged with traffic, so we came back.
Joe said he didn’t want to become like those things…
He asked me for a rope and barricaded himself in, but he still came back…
The barricades weren’t strong enough.
He escaped and bit Sergei.
I had to put him down too.
I’ll never be able to forgive myself.
It’s like a nightmare…


Alanna, my wife, had a fever that morning, but she hadn’t been bitten.
In less than an hour she kept getting worse until she turned and tried to bite me.
I had to… oh God… Her body’s still there…
I tried to get to my brother Jack’s house.
Those things started chasing me but I stole a car and got away…
I had to keep on the move to get away from the infected.
Then I hit someone with my car. There was no time to brake…
The man wasn’t badly injured, thank God.
He introduced himself as Kevin Jones, a plumber from Rosewood.
He was alone, I think he’d lost someone.
When we finally reached Jack’s house, he and his wife Carol were okay, thank God.
They couldn’t believe we weren’t infected.
That was the worst day of my life. At least, up till then…



Let’s pick one of them and break down how it works:
Just before the shit hit the fan, my sister Annie got sick.

We tried to take her to the hospital… but the highway was blocked with traffic.

By that time we realised it was too late, the car was blocked in, there was no way out. We had to abandon the car and make our way on foot.

Annie was real bad, her fever was getting worse. Bryan, her husband, had to carry her.

There was nothing I could do for her… I did what I could, but it just wasn’t enough.

We didn’t know. We had no idea what would happen!

When she turned, she bit Bryan on the back of the neck.

We left them both out there, God help us. We left them both walking around out there!

As is probably clear, this is all too self-consistent to be completely random. This isn’t just a bunch of random disconnected events triggering one after another, but rather a mini-narrative that is comprised of several related events, each of which has various ways they can pan out and also conditions that can lead to them triggering in the first place, leading to a whole host of other outcomes that will affect the group in different ways.
 
To show this, you’ll see another branching version of this same narrative in the list of outputs above, starting with ‘Just before the shit hit the fan, Joe got sick’. Though it sharing the specific phrase ‘shit hit the fan’ text was a coincidence, it could have equally started with ‘Just before things got really bad’ or ‘Before all of this’.
 
Narratives have natural endpoints that can end that narrative, or instead, they potentially lead naturally into another if relevant. In other cases they can set flags on characters or groups that will lead to other events, or even other narratives, having a chance of triggering on them in the future. This is the way the narratives can ultimately serve as larger building blocks to make longer character stories that flow into each other convincingly.
 

So back to this demo narrative above:
 

“Just before the shit hit the fan, my sister Annie got sick.”

 

As detailed before, we generate the starting NPC groups from various families, with some other elements to mix things up. In the first event of this narrative, we pick an appropriate member of the household to ‘get sick’. This will set the first constant within this narrative that will be referenced and used throughout.
 

Then the second event in the narrative is thus…
 

“We tried to take her to the hospital… but the highway was blocked with traffic.”

 

This event will trigger the characters of the group (however it was generated) including the unfortunate Annie, to set a goal to travel to the Louisville hospital. Wherever they are in the world, a path will be generated along roads to that location. Even though the characters, nor a vehicle, are streamed into the world, and they exist virtually in the ‘meta’, we can randomly assign them an appropriate car and start them moving at approximately car speed along the roads en route to Louisville.
 

If the player were to cross paths with this virtual ‘radar blip’ of these characters, it would spawn in the car with them inside, moving in the correct direction at the appropriate speed, and the more direct vehicle controlling AI would take over with the same destination in mind.

This event can play out in various ways, hitting the military blockade, crashing the car, getting stuck amongst a group of zombies.
 

Getting stuck in traffic has various outcomes, including for example a car-jacking attempt, or the person being carried turning in the car. Some of these may lead to more generic events or narratives or may continue the main mini-narrative to a further conclusion.

Assuming all this carries on within the virtual meta world, they will make their way until they hit one of the traffic jam zones on the highway, which in this case causes it to trigger the next event in the narrative.
 

“By that time we realised it was too late, the car was blocked in, there was no way out. We had to abandon the car and make our way on foot.”

 

Alternatively, it could be they managed to drive back home or get through the jam and onto the next problem. But, in this case, the narrative branches to this outcome. We flag they have lost their car, and are now on foot. 
 

We set their goal to still be heading toward Louisville hospital, however, now they are flagged as on foot and the group’s ‘radar blip’ moves at a much slower rate along the road. If a player intersected with their journey, we’d spawn the characters all on foot, and the AI would take over from there with the same pathing goal.
 

Now they are on foot, this opens the door for other events linked to this narrative to fire that wouldn’t be possible within a vehicle. One such event that can randomly trigger is a worsening of the health condition of whomever was chosen to be the sick one, which is what happens next.
 

“Annie was real bad, her fever was getting worse. Bryan, her husband, had to carry her.”

 

True, at this time we don’t have any way to ‘make this real’ should the player happen upon this group, since we don’t have support for characters carrying others at the moment. We hope to add this, and should we do this, then when we spawn the characters in the flesh we would set them up as appropriate to the event – but regardless, at the moment these narratives in particular take place way too early for players to actually intersect with, so we can take a few liberties in these particular narratives anyway.
 

Notice Bryan is referred to as ‘her husband’, which is automatically generated using Annie as the context character, and the code examining the closest relationship between these two characters. We could instead have an alternate line of dialogue using the speaking character (Annie’s sibling) as the context and it would instead read ‘my brother-in-law, Bryan’, finding the shortest link between the speaking character and Bryan was through Annie. We plan for this to be expanded in the future to automatically modify based on all manner of things, such as character opinion, and/or character’s traits (My idiot brother-in-law, Bryan, for example) though this may not be present in the first iterations of the system.
 
So now, we have flagged that the ‘ill person’ is being carried, and is being carried by Bryan. This opens up the potential for new events to be triggered, and indeed that is what happens. Poor Bryan.
 
Again, some choices, what they do with the zombie Annie and Bryan, there could be a third victim in attempting to put them down. These branches are, relatively, painless to write, and can be expanded on far into the future. It means we can have many small narrative threads, ones that last days, or ones that last months, that thread-in appropriate events to steer the story in believable directions, with written or designed outcomes that make sense and feel like a real story, in a manageable and expandable way.
 
The ‘quests’ that we have with our story generation will likely fit in line with this above narrative system. Is a character split from their loved ones, on their way to another town to find them? Maybe you can help? We’re hoping for a more organic structure of interaction and transaction with NPCs that emerges from this narrative system and leads to some really cool and believable stories being told with our NPCs.
 


Header Image pilfered from a previous blog out of laziness, sorry! You can find all our previous blogs here.
Block of italized text has nothing more to say today, bye bye!

Milky Milky



How do, all. Let’s visit a few different PZ departments to see what’s cooking.

41 PATCHING


We are currently partway through the journey to the 41.69 patch. Planned patches to Build 41 are intended to be, generally, not feature-led and instead focus on balance, QOL, fixes and polish. The current contents of 41.69 includes:



There’s a lot more incoming next week, but we intend to keep this patch relatively short and sharp if we can – though of course will also need to be sure of MP stability before any release (even to unstable) as there’s still quite a lot of large adjustments to the MP code going into the pot.

FISHING AND LOCKPICKING


Although it’s not clear where it will land in terms of a build release yet, this week Aiteron’s new fishing system had its first internal test. This was largely a bug-chasing exercise, especially in terms of MP, but the testers had fun.

There’s still a lot of work to be done, and we will need better and more appropriate anims to really sell how it works, but the current mission statement is to get it all working – so we can then add some polish.

We also need to bring the mechanics closer to realism, through exploring what is caught (and how) in Kentucky – and what different types of lines, hooks, lures, bait and catch options we should include to increase/decrease your chances of catching a particular sort of fish. Likewise, clearly stuff like your location, the weather, the time of day and your fishing skill will all come into play.

We won’t go into detail, as it’s still distant, but something else that’s in the design phase while Aiteron implements fishing is bringing elements of his lockpicking mod over into the main game – in a new and improved package to boot.

Locks will vary in type and challenge, and the tools required may differ. Through this, stashes with useful loot will be added to the map – hidden behind locked doors. This will also enable locked doors within houses, chests, locked gun cabinets etc.


MAP WORK


The map team’s ongoing mission to improve the Knox Event map continues. Amidst other tasks focussing on the Many Years Later challenge map, converting and building new farms to fit in with our animal plans, and plotting for future expansion… here’s a few extra fun things that will be appearing in an exclusion zone near you.










MUSIC


On top of the gameplay improvements mentioned last time, the guys at Formosa UK (formerly Noiseworks) are working on a first draft of a rework of the action music.

Instead of switching between tracks mid-fight, the plan is to cross-fade between different intensity levels of the same track. The base intensity will be the regular track that you are used to, but then there will also be a high action version that has been beefed up a bit.

When the action subsides, or the number of zombies you’re fighting declines, the music will enter a low state and eventually fade out.

FARM ANIMALS


Work on the introduction of farmed animals continues for their planned introduction in Build 42.

All the following information and videos are SUPER WORK IN PROGRESS and will improve a bunch as we move forward. Please don’t worry/complain/laugh/faint/query/weep about ‘em. (Usual caveats apply basically!

Some bullet points on the current integration!


https://www.youtube.com/watch?v=b2bIElZuo8k



https://www.youtube.com/watch?v=QcyazPXKhUY



https://www.youtube.com/watch?v=1ryDAW0luHQ

ANIMAL BREEDING
What’s currently being added to the above systems are some ways to encourage the breeding of animals – to improve your herd, and that of your friends and neighbours, as the apocalypse draws on.

It sounds complicated, but it’s actually quite easy for us to generate animals with a ‘full’ (for our purposes) genome – again all defined in lua definition tables for easy modding.

Each animal type will have a set of abstracted genes that each contain two ‘alleles’ inherited from parents, from “milk quantity”, to “life expectancy”, “strength”, “appearance” genes and a lot more in-between.

We’ve gone for a somewhat realistic, yet still gamified, genetics system to make it feel somewhat accurate. We want to have some of the interesting consequences of genetics, and also to have them present clear enough results for players to engage with in cross breeding projects.

When breeding animals, characters with appropriate skills will be able to inspect the animal and get an idea of its various health-related attributes (aka genes) – while others such as egg laying, fertility or milk production will be observed in the animal during its lifespan. Higher skills will also, most likely, make this more apparent/obvious to experienced breeders.

The gameplay loop of animal breeding will involve trying to pick the correct pairings/groupings of your animals to pass along the best genes into their offspring.

Over successive generations you will be able to improve your stock with better milk production, egg production etc – or help you to focus on producing animals with more meat for slaughter.

Finding new animals to breed to diversify and improve your stock’s gene pool will be a prime reason for farmer players to interact with other groups, or go hunting around the farms on the map. Likewise, this will zero in on the concept of a ‘prize bull’ that you might grow an emotional bond with, and really, really not want to get ill – or perhaps even get stolen in MP.

The science will be that each animal will carry two sets of alleles in their genome, one contributed randomly from each parent. You have dominant and recessive alleles, and this will mean that you definitely have to be careful about in-breeding, as base generated animals may have recessive gene timebombs in the forms of genetic illnesses of varying types, waiting to ruin your prize bull and your entire stock if you’ve inbred your animals too much.

We’re sure there’ll be mods that will allow players to observe the genes more directly, but in the base game we’re expecting a tad more ‘art than science’ approach and using informed guesses and examination and observation to improve your stock.

There’s plenty more to this system, but we’ll leave it there for now. All animals will use this genetic system, and we’re sure at some point we’ll look into expanding it into the plant system too, however that’s not a priority right now and almost certainly in the worlds beyond Build 42.

This week’s cool arcade base from Damien. A changelist of all our pre-release patches since the 41 beta began can be found here. The Block of Italicised Text would like to direct your attention to the PZ Wiki should you feel like editing or amending something, and the PZ Mailing List that can send you update notifications once builds get released. We also live on Twitter right hereOur Discord is open for chat and hijinks too.

41.68 RELEASED

41.68 compiled changelist



(Also including 41.67 from the unstable branch)



MP



  • Cheat control
  • Each anti-cheat can now be disabled via server option
  • Several anti-cheats can now be configured via server option
  • Anti-cheats are disabled by default for co-op hosted servers

  • Max/Min/Default values hint is added to ServerOptionChange UI window for double and integer server options
  • Old SafetySystem tooltip text is changed in accordance with new icon
  • GhostMod and NoClip are removed when admin gets player access level

  • Adjusted anti-cheat thresholds
  • Player is not kicked on coop host server

  • Adjust MP gain XP limit by sandbox XPMultiplier value
  • Fixed typo in UI\_ValidationFailed\_Type9
  • System property "rconlo" is added to make RCON server listen on loopback interface only
  • New IsoObjectID class replaces ZombieIDMap.

  • Limit the "mods" string reported by Steam servers to 128 characters. A new keyvalue "modCount" reports the actual number of mods used by the server. The server browser and favorites list will display "... and N more" after the list of mods, when there are more mods than are displayed.  This is to fix some servers reporting ??? as their version number, which prevents people from joining.
  • The server will exit if there are syntax errors in the servername\_SandboxVars.lua file.
  • The server's servername\_SandboxVars.lua is saved after loading it to update it to the latest version with comments.

  • Added missing buttons to disable toggle in admin panel UI
  • Added closing admin panel UI if player has no access level or revoked privileges
  • Added closing safezone tool UI if player has no access level or revoked privileges

  • Clarified safehouse tooltip - show all reasons why a safehouse cannot be claimed

  • Added server option "SafehouseAllowNonResidential" to allow claiming all buildings
  • Added confirmation before releasing a safe house
  • Fixed the owner sometimes showing in safehouse member list
  • Added check when releasing safehouse if player is the current owner or an admin
  • Fixed DisableSafehouseWhenPlayerConnected teleporting players outside when a player is removed while there are members online
  • Fixed DisableSafehouseWhenPlayerConnected never replacing the safehouse after a player disconnects
  • Added updating of the safehouse online member count periodically
  • Added allow changing safehouse owner to players which are a member
  • Added extended server quit logging
  • Print 'command entered via server console (System.in): "xxx"' in GameServer.launchCommandHandler().
  • Added isConsistent() call to GameServer.receiveSyncClothing().

  • Fixed both options on yes/no confirmation when quitting a safehouse removed the player
  • Fixed zombie that can be deleted by admin or zombie owner
  • Fixed server hanging on quit command because of active RCON connection
  • Fixed CD and VHS tapes possibly being different for each client.
  • Fixed GlobalModData.save() not being called on the server.
  • Fixed ZomboidRadio.Save() not being called when other things are saved on the server.  It was called every 10 game-world minutes, however.
  • Fixed Lua error in ISPlayerStatsManageInvUI after calling the /additem command in multiplayer.
  • Fixed issues with the Stitch packet.
  • Fixed repeated exceptions in GameClient.sendAddedRemovedItems() when a container object is null for some reason.
  • Fixed adding items to or removing items from containers not being synced in multiplayer if the player teleports before the changes are reported to the server.  This was one cause of the issue fixed above.


NEW



  • Added "Enable left joystick radial menu" accessibility option.
  • Updated community translations.
  • Added 3D models (not all in-game yet)


ENGINE



  • Updated Windows and Linux FMOD to 2.02.05.
  • Added error checking and logging when initializing FMOD.  The sound system is disabled when errors occur.


MODDING



  • Made the maximum allowed tiledef file number 16382. File numbers 0-99 are reserved for the game, as was already the case. The old unenforced maximum was 1000, which some mods ignored. Sprite IDs must fit in a signed 32-bit integer (2,147,483,647). Each tiledef file is reserved 512 tilesheets of 512 tiles each. However: please note that values higher than 8190 result in NEGATIVE sprite IDs. Numbers higher than 16382 definitely aren't allowed due to using 32-bit integers to hold sprite IDs.

 

FORAGING



  • Added Search Focus system for foraging
  • focus is set in the investigate area window
  • only one focus may be active at a time
  • increases chance to find certain categories of item when searching
  • player must be skilled enough to identify the item category to focus on it
  • focus effectiveness is determined by player skill and category
  • hidden item categories will not be rerolled (rare find protection)
  • square must be valid to roll the item type (cannot be used to find plants on roads)

  • Fixed duplicate clothing effect displayed in ZoneDisplay tooltip
  • Fixed missing per player render flag in ISBaseIcon
  • Tidied spriteAffinities definitions
  • General tidying and alignment of tables
  • Removed stone/firewood identify category skill requirement
  • Added translations for search focus functions
  • Added controller support for search focus
  • Fixed medicinal herbs requirement - check for recipe instead of trait "Herbalist"
  • Fixed tooltips flickering in Zone Display
  • Added tooltip to make long tips easier to read without scrolling
  • Added zone display tip for using search focus
  • Updated focus check to occur before item preview is placed
  • Added blocking search focus for sprite affinity items


BALANCE



  • Fixed Axeman not applying bonus for swing speed
  • Added correct adjustment of exercise fatigue.
  • Updated community translations.


FIXES


 
  • Fixed car dashboard delay when taking damage
  • Fixed doors missing their glass, and the triangle-shaped floors\_exterior\_natural\_01 dirt tile.
  • Fixed disassembling player-built floors resulting in two floor tiles after reloading, an auto-generated wood floor plus a dirt tile.
  • Fixed the result of FMOD[noparse]::[/noparse][noparse]Studio::[/noparse][noparse]System::[/noparse]getCoreSystem() not being checked properly for errors.
  • Fixed Lua error clicking the close button in the titlebar of the Horde Manager debug ui.
  • Fixed a BufferOverflowException when the number of reanimated player zombies is high.  (It was taking about 600 player zombies (assuming 1.6KB per descriptor and 1e6KB packet buffer)  to be loaded for this exception to happen)
  • Fixed dragging VHS tapes from world containers to the Device Options ui not being synced in multiplayer.
  • Fixed repairing a hole in a long Leather Jacket with level 8 Tailoring not restoring condition.
  • Fixed phantom item-transfer actions playing after crafting sometimes.
  • Fixed IndexOutOfBoundsException in WorldItemModelDrawer.renderMain().
  • Fixed starting the MusicCombined event doing network stuff.
  • Fixed the MusicCombined event being stopped and then restarted the first time Lua is reloaded.
  • Fixed split-screen players, except the last, being unable to drive vehicles in multiplayer.
  • Fixed unnecessary pause when starting in debug

Project Zomobid UNSTABLE 41.68 Released

41.68 RELEASED TO UNSTABLE BETA



NEW



- Added allow changing safehouse owner to players which are a member
- Added extended server quit logging
- Print 'command entered via server console (System.in): "xxx"' in GameServer.launchCommandHandler().
- Added isConsistent() call to GameServer.receiveSyncClothing().

FORAGING



- Updated focus check to occur before item preview is placed
- Added blocking search focus for sprite affinity items

FIXES



- Fixed the result of FMOD Studio System getCoreSystem() not being checked properly for errors.
- Fixed Lua error clicking the close button in the titlebar of the Horde Manager debug ui.
- Fixed a BufferOverflowException when the number of reanimated player zombies is high. (It was taking about 600 player zombies (assuming 1.6KB per descriptor and 1e6KB packet buffer)
to be loaded for this exception to happen)
- Fixed dragging VHS tapes from world containers to the Device Options ui not being synced in multiplayer.
- Fixed repairing a hole in a long Leather Jacket with level 8 Tailoring not restoring condition.
- Fixed phantom item-transfer actions playing after crafting sometimes.
- Fixed IndexOutOfBoundsException in WorldItemModelDrawer.renderMain().
- Fixed starting the MusicCombined event doing network stuff.
- Fixed the MusicCombined event being stopped and then restarted the first time Lua is reloaded.

Project Zomobid UNSTABLE 41.67 Released

Find it on Steam Betas unstable branch. Saves should be fine but you'd be advised to back them up to be sure.


41.67 changelist




MP



Cheat control



  • Each anti-cheat can now be disabled via server option
  • Several anti-cheats can now be configured via server option
  • Anti-cheats are disabled by default for co-op hosted servers



  • Max/Min/Default values hint is added to ServerOptionChange UI window for double and integer server options
  • Old SafetySystem tooltip text is changed in accordance with new icon
  • GhostMod and NoClip are removed when admin gets player access level
  • Adjusted anti-cheat thresholds
  • Player is not kicked on coop host server



  • Adjust MP gain XP limit by sandbox XPMultiplier value
  • Fixed typo in UI_ValidationFailed_Type9
  • System property "rconlo" is added to make RCON server listen on loopback interface only
  • New IsoObjectID class replaces ZombieIDMap.


Limit the "mods" string reported by Steam servers to 128 characters. A new keyvalue "modCount" reports the actual number of mods used by the server.



  • The server browser and favorites list will display "... and N more" after the list of mods, when there are more mods than are displayed.
  • This is to fix some servers reporting ??? as their version number, which prevents people from joining.




  • The server will exit if there are syntax errors in the servername_SandboxVars.lua file.
  • The server's servername_SandboxVars.lua is saved after loading it to update it to the latest version with comments.



  • Added missing buttons to disable toggle in admin panel UI
  • Added closing admin panel UI if player has no access level or revoked privileges
  • Added closing safezone tool UI if player has no access level or revoked privileges



  • Clarified safehouse tooltip show all reasons why a safehouse cannot be claimed
  • Added server option "SafehouseAllowNonResidential" to allow claiming all buildings
  • Added confirmation before releasing a safe house
  • Fixed the owner sometimes showing in safehouse member list
  • Added check when releasing safehouse if player is the current owner or an admin
  • Fixed DisableSafehouseWhenPlayerConnected teleporting players outside when a player is removed while there are members online
  • Fixed DisableSafehouseWhenPlayerConnected never replacing the safehouse after a player disconnects
  • Added updating of the safehouse online member count periodically



  • Fixed both options on yes/no confirmation when quitting a safehouse removed the player
  • Fixed zombie that can be deleted by admin or zombie owner
  • Fixed server hanging on quit command because of active RCON connection
  • Fixed CD and VHS tapes possibly being different for each client.
  • Fixed GlobalModData.save() not being called on the server.
  • Fixed ZomboidRadio.Save() not being called when other things are saved on the server. It was called every 10 game-world minutes, however.
  • Fixed Lua error in ISPlayerStatsManageInvUI after calling the /additem command in multiplayer.
  • Fixed issues with the Stitch packet.
  • Fixed repeated exceptions in GameClient.sendAddedRemovedItems() when a container object is null for some reason.
  • Fixed adding items to or removing items from containers not being synced in multiplayer if the player teleports before the changes are reported to the server. This was one cause of the issue fixed above.


SOUND




  • Updated Windows and Linux FMOD to 2.02.05.
  • Added error checking and logging when initializing FMOD. The sound system is disabled when errors occur.


FORAGING



Added Search Focus system for foraging



  • focus is set in the investigate area window
  • only one focus may be active at a time
  • increases chance to find certain categories of item when searching
  • player must be skilled enough to identify the item category to focus on it
  • focus effectiveness is determined by player skill and category
  • hidden item categories will not be rerolled (rare find protection)
  • square must be valid to roll the item type (cannot be used to find plants on roads)



  • Fixed duplicate clothing effect displayed in ZoneDisplay tooltip
  • Fixed missing per player render flag in ISBaseIcon
  • Tidied spriteAffinities definitions
  • General tidying and alignment of tables
  • Removed stone/firewood identify category skill requirement
  • Added translations for search focus functions
  • Added controller support for search focus
  • Fixed medicinal herbs requirement check for recipe instead of trait "Herbalist"
  • Fixed tooltips flickering in Zone Display
  • Added tooltip to make long tips easier to read without scrolling
  • Added zone display tip for using search focus


BALANCE




  • Fixed Axeman not applying bonus for swing speed
  • Added correct adjustment of exercise fatigue.
  • Updated community translations.


FIXES




  • Fixed car dashboard delay when taking damage
  • Fixed doors missing their glass, and the triangle-shaped floors_exterior_natural_01 dirt tile.
  • Fixed disassembling player-built floors resulting in two floor tiles after reloading, an auto-generated wood floor plus a dirt tile.

41.66 RELEASED

Server operators will find .zip files with their server backups, should they need to revert. 5 cycling incremental backups each server run, and a special backup per version change. It can also be configured to backup periodically while the server is running, but you may expect a few seconds of lag if you do this.

This update pushes 41.66 to the stable branch.

Full 41.66 Changelog on our forums:
https://theindiestone.com/forums/index.php?/topic/49523-4166-released/

Or Pastebin:
https://pastebin.com/pKp2puZ9


Changes since 41.66 Unstable:


  • Fixed double-door opening and closing not being synced properly in multiplayer.
  • Fixed desync when a player heals via "godmode" at the same time as a character dies.
  • Fixed SafetyToggle timer speed and SafetyCooldown logic.

  • Increased speed of mouse-wheel scrolling in the Survival Guide.
  • Added several new items, mostly flavour. Plushies (friends for Spiffo), Boardgames, Poker Chips. etc. Some of them do not have 3D models attached to them yet.
  • Updated max values for HoursForWorldItemRemoval and HoursForCorpseRemoval sandbox settings.

  • Fixed boxing gloves 'hole' on the back of the hand issue.
  • Fixed Poncho showing no legs by capping the bottom.
  • Fixed Bullet Vest clipping with some other clothing items.
  • First pass on fixing underlying mesh on female, clipping Leather Jackets.

  • Fixed ClothingItemExtra script property not working for items that aren't in the Base module.*
  • Fixed double "Place Item" options for: Radio, Battery Charger, PortaDisc.
  • Fixed not being able to interact with a Radio that was placed as a 3D item.
  • Fixed "Investigate Area" tooltips being displayed at the mouse pointer position when using a controller.
  • Fixed player character holding a Newspaper model in hand when reading the in-game map.
  • Fixed possible exception due to a vehicle not having an Engine part but the engine is running.
  • Fixed cases where a player would be able to start the game before "Click to Start" appeared, causing errors.
  • Fixed a case where players were able to grab items through closed/barricaded windows.
  • Fixed a bug with the mediadata converter that caused all tapes to have incorrect colored text colours.
  • Fixed the LootRespawn and SeenHoursPreventLootRespawn sandbox options not being displayed in the single-player sandbox settings UI.
  • Fixed the SeenHoursPreventLootRespawn sandbox option not being displayed in the single-player and multiplayer sandbox settings UIs.
  • Fixed missing food types in Evolved Recipe items.
  • Fixed Search Mode / Foraging being usable in the Tutorial scenario.
  • Fixed "Foraging has changed" warning from right-click context menu still being there.


Build 41.66 - UNSTABLE test release

MAKE SURE TO BACK-UP before continuing a save.

This is an unstable ("I Will Back Up My Save) release and you can expect bugs.


Server operators will find .zip files with their server backups, should they need to revert. 5 cycling incremental backups each server run, and a special backup per version change. It can also be configured to backup periodically while the server is running, but you may expect a few seconds of lag if you do this.

Accessible via the "unstable" Steam branch, server and client.
Right-click PZ (or the Dedicated Server tool if you are hosting) in your Steam library, select "Properties" and navigate to the "Betas" tab. Then, select "unstable" from the dropdown menu.
 

MP CHANGES


<*>Increased experimental maximum player limit to 100. Default remains at 32. Servers with more than 32 players will likely result in poor map streaming and desync, so proceed with caution.
 <*>Optional Login Queue system for MP servers added. 
    - Players connecting to a full server will be placed in a login queue, connecting automatically once a slot freed up. The queue will advance after the client has finished loading the game.
   - LoginQueueConnectTimeout=60 server option determines for how long the server should wait for a connection of the client before they are timed out.
 <*>Added options for automatic server backups.<*>Several cheating security fixes to prevent unwanted admin access as well as unwanted actions performed by clients.
 <*>Several improvements and fixes for VOIP. Added Automatic Gain Control options.<*>Allow VOIP and text to travel to radios tuned into the same frequency.<*>Non-equipped stationary radios now two-way for text comms.
 <*>Added admin panel tool for creating custom safehouses/safezones<*>Added new PvP icons. Moved to the left hand side with the other UI icons. It will be moved up further before hitting the stable branch.<*>Servers now set a Steam server rule named "PVP" with a value of "1" or "0" depending on the value of the "PVP" server option. This can be used by server browsers to distinguish between pure PVE and PVP enabled servers.<*>Added a "SledgehammerOnlyInSafehouse" server option:
    - if AllowDestructionBySledgehammer is enabled, you can set SledgehammerOnlyInSafehouse to true to allow destroying stuff with sledge only in player's safehouse.
 <*>Added buildUtil.setHaveConstruction
    - This is a function to set the haveConstruction flag on a zone to prevent loot respawn if ConstructionPreventsLootRespawn is enabled in the server sandbox settings.
   - set haveConstruction on zone for building, movable, barricading events and when claiming a safehouse, so a home won't spawn loot after being claimed, even if a player hasn't built anything in them yet.
 <*>Updated /rainstart /rainstop and /thunder commands<*>Added /lightning /startstorm and /stopweather commands<*>Added providing optional reason in KickUserCommand<*>Added providing optional coordinates in AddVehicleCommand<*>Updated text for server commands<*>Updated ShowOptionsCommand to allow use by non admins<*>Disabled doubled-up commands AddAllToWhiteListCommand and AddUserToWhiteListCommand<*>Removed unnecessary server options.
 <*>Updated overhead username display
    - with only ShowFirstAndLastName enabled, show player nam
    - with only DisplayUserName enabled, show username
    - with both options enabled, show player name with username in brackets
 <*>Server .ini file now has the tooltips for the various options and settings attached as comments<*>Added limit for server public names to 64 characters and public descriptions to 256 characters<*>Disabled NightLengthModifier since it is currently non-functional. Will be reintroduced soon.<*>Added check and teleport for safehouse trespassing.
    - Fixes issue with players becoming trapped when a safehouse owner goes offline with DisableSafehouseWhenPlayerConnected enabled
    - Fixes issue with players intruding in safezone areas via movement exploits
 <*>Safehouse fixes:
admins and moderators can quit safehouse (if not owner)
admins and moderators can invite themselves to a safehouse
do not show the 'Quit Safehouse' button to admins who are not in this safehouse
 <*>Fixed non-relevant Lucky/Unlucky traits being usable in MP.<*>Fixed some duplication exploits.<*>Fixed being unable to access/change player inventory as admin.<*>Fixed Ping Limiter not working. <*>Fixed showing the "ADMIN POWER:" debug text in multiplayer.<*>Fixed some cases where crashes at low speeds cause fatal injuries.<*>Fixes for some instances where black boxing could still occur when players were passengers in vehicles.<*>Fixed an exploit that allowed bypassing container item limits.<*>Fixed non-members being able to perform moveables actions inside safehouses.<*>Fixed admins in ghost/invisible mode still making sounds.<*>Fixed "Medical check" on another char in a car causing chars to be stuck in a car<*>Fixed crawlers sometimes teleporting when trying to path to a player. They will now turn to the target.<*>Fixed, via removal, defunct server option "LogLocalChat".<*>Fixed kicks in relation to Safehouse creations.<*>Fixed being able to exit a vehicle when inside a safehouse without having appropriate permissions.<*>Fixed a bug that rendered passengers unable to leave a car.<*>Fixed death by bleeding while driving causing a kick from the server<*>Fixed not being able to die near other players until hp drops down, and not being able to move if char died while other players try to rescue.<*>Fixed looting animation stopping when another player attempts to grab the bag/container. 


NEW


<*>Added back the "Toggle Music" key binding, bound to nothing by default. It appears under the new "Audio" category near the bottom of the key-binding UI.<*>Players can now dismantle several player-built structures (floors, etc)<*>Corner pillars will now be built automatically when placing walls/fences etc.<*>Updated Kingsmouth and Studio maps. Room definitions, bed and foundation fixes, added video cameras, military equipment, and more.<*>Added tooltip information on what mod an item is from. Can be turned off in main options.<*>Added "Inventory Container Button Size" Display option to change the size of the buttons on the right-hand side of the inventory and loot windows.<*>Updated Survival Guide. Merged into a single window and also made to work with a controller<*>Added trait reset button to character creation screen.<*>Implemented the blue combination washer/dryer appliance. Use the context menu to switch between washer and dryer mode.<*>Context Menu is now usable in the loot panel backpack list.<*>Added more CDs and VHS tapes, including Dog Goblin sequels.<*>Updated ISCraftingUI and CraftTooltip to display multiple choice item counts, as well as heat requirements for recipe ingredients<*>Added AllowFrozenItem parameter to recipes and evolved recipes<*>Added Perogies, Peppermint, Potato Pancakes.<*>Added OnCreate item script property.


BALANCE


<*>Setting Cruise Control now starts at current speed when switched on<*>Attempting to sprint when the character is too exhausted to sprint will now make the character run as fast as they can instead of walking and having to press the "Run" key separately.<*>Fixed M16 still having its initial experimental values. No longer a death laser. MinDamage reduced to 0.8, MaxDamage reduced to 1.4.<*>Greased back hair now requires hair gel.<*>Frog legs and whole fish are now dangerous uncooked.<*>Military lockers and crates now movable. They'll also contain loot.<*>Unified spawn items and starter kit functions in SpawnItems.lua.<*>Fixed drinking directly from river/puddles not making characters sick. <*>Drinking tainted water now more merciful if character is already sick.<*>Added ability to use sheet ropes to create log stacks<*>Fixed players not becoming bored inside player-built rooms.<*>Agoraphobic and Claustrophobic traits fixed to work inside player-built rooms.<*>Added relevant tile properties (pick-up, rotate, water source etc) to: new farm dirt tile, washer-driers, dead farm plants, hay bales, red mobile tool cabinet, troughs, play castles, bird baths, sinks and more.
 <*>Spear charge fixes (MP and SP):<*>charge only zombies in front of the player<*>reset sprinting time when spear charge occurs
 

NOISEWORKS


<*>Added a volume automation for the hard of hearing trait in addition to the muffling we already had, additional -6db (needs some testing if this is okay)<*>Added EmptyPan sound for "Empty Frying Pan" and 2 other recipes.  The sound is a placeholder for now. <*>Added values MeleeHitSurface for per-weapon door-hitting sounds.<*>Added DoorSound=WoodShackDoor for new door sounds for wood-plank doors.<*>Added StoveTimer sound.<*>Added sounds played while constructing gravel-bag and sand-bag fences.<*>Added sounds for turning media devices on/off and muting/unmuting.<*>Added Dismantle sound for radios and televisions. <*>Added generator repair, connect and refuel sounds. <*>Added sounds for drinking and filling containers from water dispensers.<*>Added new climb sound for high finces.<*>Added bullet impact sounds.<*>Added the violin melee hit/whoosh sounds
 <*>Minor volume tweak to zombie voices when they're very close, they were a bit too loud<*>Added occlusion to vehicle engines, horn, sirens (needs some testing)<*>Slight adjustment to the bass of the footstomp<*>Play PourLiquidOnGround when emptying paint buckets and similar items.<*>Fixed playing DrinkingFromTap or GetWaterFromTap when drinking from a river sometimes.<*>Play the FallLight sound when tripping over a hedge/tree.
 

IN-GAME MAP


<*>Added a button to the in-game map to remove all annotations and forget map knowledge.<*>Hide the mini-map when the inventory and loot windows are visible when using a controller (so the mini-map doesn't overlap).<*>Display controller button prompts in the in-game map.<*>Play the MapOpen and MapClose sounds when viewing the in-game map.
 <*>Fixed the in-game map view not being centered on the player the first time it's displayed, when the mini-map is also used.<*>Fixed moving map symbols with the mouse.<*>The mini-map will be moved up a few pixels before hitting the Stable branch in order to not cover up the MP info.
 

KNOX EVENT MAP


<*>Export of current dev map - including some new locations and improvement of general landscape<*>Pylons and radio masts added to map<*>Various map fixes
 

FORAGING / SEARCH SYSTEM


<*>Added foraging tips system to investigate area window.<*>Added some fixes to make the system work with controllers.<*>Overlay radius now used instead of item radius for placing investigate arrow markers.<*>Restructured trait/profession multipliers - now uses definitions.<*>Added profession and trait category specialisations.
    - Big bonuses to spot categories for professions.
    - Small/medium bonuses to spot categories for traits.<*>Added functions for modders to add trait/profession definitions.<*>Added ammunition category to urban loot.<*>Added medical category to urban loot.<*>Added clothing items to urban loot.<*>Added some more misc items/fruits/veggies.<*>Added pinecones (only available from September to December).<*>Added pinecones can be used as campfire fuel.<*>Show spotting arrows immediately when the player notices something.<*>Force-find now reveals an item nearby for the player instead of just moving it closer.<*>New identifying items system - items can be identified if close enough or from afar with high skill.<*>Zone display now reveals exact categories when reaching high enough level (identifyCategoryLevel).<*>Set a minimum dark overlay value so the search radius is always visible even in bright daylight.<*>Categories can be more or less common (or not available) during rain or snow.<*>Items can be more or less common (or not available) at night or during the day.<*>Items and categories can be more or less common (or not available) after it has rained.<*>Items are moved to player inventory if a backpack goes over capacit - Yotherwise dropped onto the floor.<*>Refactored, bugfixed and documented many functions.<*>Fixed resetting itemTotal when fillZone is called.<*>Fixed inverted light level values when indoors.<*>Added foraging weather effect reduction for equipped umbrellas.<*>Increased darkness/weather effect reduction cap.<*>Resolved an issue with calculating foraging darkness/weather effect reduction.<*>Fixed issue causing item markers to disappear when looking away.<*>Added a chance to generate extra items on affinity sprites - more firewood in forests - more stones on roads.<*>Tweaked and tidied bonus item generation and syncing.<*>Added a flag to bonus icons for future management.<*>Set affinity check to occur after all icons are loaded.<*>Activate nearby zones inside radius.<*>Allow multiple categories per affinity sprite.<*>Show item ghost before spotting if in visible radius.<*>Added bonus vision definitions for all professions.<*>Place item marker arrows when inside item spotting radius if item is visible.<*>Cloud darkness and fog level visibility increased on zone display.<*>Added some variation to the zone display fog.<*>Added zone display vision effectiveness tooltip.<*>Updated search info tip.<*>Skip checking icons outside loaded cell.<*>Changed default itemDef value canBeOnTreeSquare to true.<*>Added more search radius/trait/profession bonus info to Investigate Area tooltip.<*>Added showing the poison skull on forage pins for mushrooms/berries if player has herbalist skill.<*>More categories visible on Investigate Area window tooltip with high skill.<*>Tidied up and documented ISSearchManager/ISBaseIcon.<*>Tweaked forageSystem penalty calculations.<*>Fixed icon arrows remaining on screen when sprinting.<*>Added short sighted foraging debuff can be removed by wearing glasses/reading glasses.<*>Added testFuncs to skill definitions.<*>Fix rerolling zone icons while sprinting.<*>Fix spotting icons while fast forwarding.<*>Vision radius calculations refactored and tidied.<*>Icon performance improvements.<*>Fixed icons recreating with incorrect conditions.<*>Reduced and capped stuttering caused by cell checks.<*>Fixed overlay toggling in vehicles.<*>Improved search radius transitions when toggling mode.<*>Improved forage zone activation, icon moving, bonus icon generation.<*>Fixed wild crop seed spawns.<*>Fixed using the wrong broccoli type for foraging.<*>Fixed issues in force find tracker.<*>Skip sprite affinity checks on squares with trees or attached data.<*>Fixed missing spaces in search window tooltips.<*>Fixed missing item texture on pins for floor items.<*>Fixed moved objects spawning bonus items.<*>Removed performance impact for ISSearchManager, ISZoneDisplay, ISSearchWindow when UI not visible.<*>Removed seasonal variances from medicinal plants<*>Added WildPlants category for seasonal wild foods<*>Updated ISSearchManager table resets to use table.wipe<*>Updated radius and modifiers in ISZoneDisplay vision tooltip<*>Tidied up some debug stuff in ISZoneDisplay<*>Added foraging profession and trait specialisations for WildPlants
Balance:
<*>Increased maximum possible spotting range further for specialised characters.<*>Reduced base XP rewards for foraging.<*>Tweaked icon density in zones.<*>Insects, mushrooms, herbs are now much more common at night.<*>Medicinal herbs are much easier to see.<*>Increased medicinal herb yields.<*>Herbs and mushrooms are more common in the rain and after it has rained.<*>Added disabling search mode if a zombie is very close (about 1 square away).<*>Reduced headwear vision penalties, added penalties for more types (not hats, never hats).<*>Increased chance of items to be on affinity sprites (stones on stones, etc).<*>Allow affinity icons to be moved again if they were not noticed before.<*>Malus for item size adjusted to a curve to be less punishing.<*>Rebalanced many item sizes with overrides for spotting (fruit trees, crops, etc).<*>Reduced berries poison level by a lot - not likely to be fatal.<*>Reduced mushroom toxicity range - still very risky to eat unidentified.<*>Added additional food sickness penalty for consuming poison berries and mushrooms.<*>Added a new increased minimum vision radius for well-lit squares.<*>Increased variance of medicinal herb yields.<*>Weather penalty calculation tweaked for snow cover.<*>Weather penalty maximum increased.<*>Overlay radius tweaked to use forageSystem min/max size values.<*>Stones more likely to be found in cracks in the road + rates increased on roads.<*>Removed skill requirements for some item categories.<*>Tweaked sprite affinity and bonus icon chances.<*>Tweaked sprite affinity/bonus icon chances.<*>Foraged drainable items roll for a remaining amount.<*>Increased zone icon density.<*>Additional variation for zone density.<*>Added more sprite affinities to trash, junk icons, and insects.<*>Reduced chance of finding rotten wild foods.<*>Increased chance of fresh wild foods with high skill.<*>Profession and trait vision modifiers also affect the overlay maximum vision radius.<*>Increased vision cap for extremely skilled and specialised characters.<*>Decreased vision cap for non specialised characters.<*>Ensure vision radius bonus always applies when aiming or sneaking.<*>Rebalanced profession and trait darkness effect modifiers.<*>Check darkness cap before placing item marker arrows.<*>Removed override item size for some small items.<*>Added more sprite affinities to categories.<*>Dead animals much more likely to be stale or rotten.<*>Aiming takes priority over crouching bonus in forageSystem.<*>Bonus vision effects apply to maximum radius.<*>Chance to find logs reduced.<*>Rebalanced vision radius/view distance for spotting.<*>Increased maximum hunger bonus for food items.<*>Tweaked vision penalties for clothing.<*>Increased base spotting speed and bonus spotting speed when aiming/sneaking.<*>Reduced snow cover and cloud penalty.<*>Umbrella rain penalty reduction increased and only applies to rain.<*>Minor zone item count balance tweak.<*>Added more sprite affinities for stones.<*>Adjusted profession vision bonuses.<*>Category chances tweaked to accommodate WildPlants.<*>Debug:<*>Added a new IsoMarker type for debugging icon vision radius.<*>Added icon vision radius + category info debug options.<*>Added debug option: "Show Icons Locations".
Splitscreen fixes:
<*>Fixed split screen icon syncing.<*>Fixed picking up forage icons with controller in split screen.<*>Moved forage icon pickup option to the top of right click context menu.<*>Increased range of back button wheel pickup option.<*>Back button wheel forage options now use item textures.<*>Added discard item option to back button wheel.<*>Tidied up changes for split screen icon syncing.<*>Fixed syncing of arrows/markers when an item is moved or removed.<*>Fixed removal of icons noticed by co-op player.<*>Added zone display split screen support.<*>Sync forage item poison values in splitscreen co-op.<*>Fixed a bug when co-op player simultaneously picks up items in ISForageAction
 

MODDING


<*>Added ISCarMechanicsOverlay.PartList[].vehicles tables to any parts that don't have them.<*>VehiclePart.setInventoryItem() no longer calls setModelVisible(true|false) for all models, because this interferes with some mods that choose different models based on which item is installed for a part. Instead, a new method VehiclePart.setAllModelsVisible(true|false) was added that is called from these Lua functions:
                Vehicles.Init.XXX
                Vehicles.InstallComplete.XXX
                Vehicles.UninstallComplete.XXX
    Mods that define "init", "install.complete" and/or "uninstall.complete" Lua functions can now choose to hide or show whichever models they want.
    Additionally, VehiclePart.repair() now calls the part's "init" Lua function (if it is defined) when creating a missing item.
    This allows the "init" function to hide or show models.
 <*>The game will look for mod texture-pack files named Pack2x.floor.pack (correct) and then Pack.floor2x.pack (incorrect) if the first file doesn't exist.<*>Added IsoGameCharacter.XP.setPerkBoost(Perk perk, int level). This is for mods that want to change an existing player's XP multiplier for a skill.<*>Added IsHidden parameter for recipes and evolved recipes
    - If true, this hides the recipe on the crafting menu
    - Hidden recipes are still able to be crafted via the right click menu
    - Evolved recipes are hidden unless a result item exists
         - This allows adding additional ingredients via the crafting menu
 

CONTROLLER


<*>Pressing and holding the left analogue stick displays a radial menu that allows toggling crouching, sitting on the ground, and auto-walking. A quick press of the left joystick button toggles crouch, the same as before.<*>Pressing the controller A button when a text entry has the focus displays the on-screen keyboard.
    - Left shoulder button changes focus between the text entry and keyboard.
    - D-pad navigates in the text entry.<*>Foraging / Search mode improved to work with controllers
 

FIXES


<*>Fixed a Lua error when trying to spawn a new character in game when the AllClothesUnlocked sandbox option or Character.CreateAllOutfits debug option is enabled.<*>Fixed the "Aim Outline" option default being "None" instead of "Ranged Weapons".<*>Fixed the volume controls not working in multiplayer.<*>Fixed Home VHS tapes switching from blank to not-blank after reloading sometimes.<*>Fixed some unique Home VHS tapes never being spawned. Now CDs and VHS tapes are randomized in ItemPickerJava.<*>Fixed translation files from required mods having priority over the mod that required it. If mod B requires mod A, then mod B's translation files will be loaded first so they override the same translation in mod A, if present.<*>Fixed sitting zombies facing random angles in multiplayer.<*>Fixed an IllegalArgumentException in IsoChunk.SafeRead() when reading an empty map_X_Y.bin file.<*>Fixed the mini-map displaying the game's map data in cells that have been overridden by mods.<*>Fixed some curved-road zones.<*>Fixed traffic jams on curved roads by implementing "traffjam / ParkingStall" and "rtrafficjam / ParkingStall" for polyline zones<*>Fixed exercises not starting when a two-handed weapon attached to the back is equipped in both hands.<*>Fixed a thread-synchronization bug with ZomboidFileSystem.getString() accessing RelativeMap. This led to walls not being cutaway due to failing to load the CircleStencil Shader.<*>Fixed Character.Debug.PlaySoundWhenInvisible default being true when it should be false.<*>Fixed a few cases where sounds from invisible players could be heard in multiplayer.<*>Fixed bug in world dictionary when an item similarly named to a base item but with different module would be removed. This was due to scriptmanager.getModule defaulting to 'base' when the module was not found.<*>Fixed scriptmanager.getModule testing for equals("Base") or startsWith("Base.") instead of startsWith("Base"). This would otherwise result in the same error happening still if one would name their module for example "BaseBuilding".<*>Fixed item loading when trying to create an item with the same name in a different module. When a mod adds "MyMod.Apple" this a new item that exists alongside "Base.Apple", when MyMod is removed the "MyMod.Apple" bytes in the saves should be skipped. However due to ItemFactory.CreateItem calling the same scriptmanager functions that default to "Base" when no module found, it would try and instance "Base.Apple".<*>Fixed bug in WorldDictionary ItemInfo where print debug would not print all lines.<*>Fixed GameLoadingState doing GameClient stuff in single player.<*>Fixed any exception that occurs when the "failed to create vehicles database" message is displayed not being printed.<*>Fixed spawned fish in shops and stories unable to be filleted.<*>Fixed getting extra materials when multiple players scrap an object.<*>Fixed being unable to construct objects or floors through an open window.<*>Fixed being unable to disassemble closed doors facing S and E.<*>Fixed "take pills" anim playing only once when the action is queued.<*>Fixed 'take pills' action being possible while running (it has no animation).<*>Fixed the resize behavior of the "Select Spawn Location" ui.<*>Fixed disallowed scrolling of map description in the "Select Spawn Location" ui using a controller.<*>Fixed some forest and vegetation zones near curved streets.<*>Fixed "ReceiveRemoveCorpse: incorrect square" messages on the client due to corpse rotting. These messages weren't errors.<*>Fixed incorrect looping in RandomizedZoneStoryBase.cleanAreaForStory().<*>Fixed multithreading issues on the server with the vehicles database. <*>Fixed radial menu for light sources only available for secondary item slot<*>Fixed double-clicking a watch runs an action but doesn't equip it.<*>Fixed adhesive bandages weighing too much.<*>Fixed mechanics books not being in SkillBook category.<*>Fixed missing Fishing.OnCreateFish function on server.<*>Fixed default name of a profession preset not being the name of the profession (has a number if there is already a preset with that name)<*>Fixed bowl of beans recipe not scaling to source can's hunger reduction.<*>Fixed two-tile table stories possibly spawning on two different tables, possibly with a wall in between.<*>Fixed trailers being detached on the client but attached on the server.<*>Fixed explosive traps not damaging zombies in singleplayer.<*>Fixed server soft-reset throwing errors.<*>Fixed "bare hands" checks which used translated item names.<*>Fixed lightbulbs breaking even if unpowered.<*>Fixed inability to plumb sinks in existing buildings if the water is still on.<*>Fixed zombies densities not affecting loot spawn in MP. This caused Sledgehammers and other items to be a lot rarer in MP than in SP.<*>Fixed not being able to climb over tall fences when a vehicle is nearby.<*>Fixed being able to get XP from VHS tapes again after relog.<*>Fixed TVs showing test screen (only happens 14 days after apocalypse and onward).<*>Fixed one TV screen not showing in the screen 'animation'.<*>Fixed the first channel not being properly loaded when radio loads its savefile.<*>Fixed, via disabling, zomboid radio debugger in mp client that was throwing errors due to stuff not being present on client<*>Fixed bug that caused the temperature panel to display all values as zero. (the call to PZMath.clamp in the panels would randomly pick the int or float overload between diff game boots). Also added Thermoregulator node debugger panel.<*>Fixed WAV sounds flickering between speakers when near the player's location.<*>Fixed some problems with clothing losing condition due to holes.<*>Fixed the client savefile not being deleted when the server savefile is soft-reset or recreated.<*>Fixed playing DrinkingFromTap or GetWaterFromTap when drinking from a river sometimes.<*>Fixed trap synchronization issues in multiplayer (including multiple explosion sounds).<*>Fixed noise-trap sound continuing after the trap is picked up.<*>Fixed farm-plant names not being translated in multiplayer.<*>Fixed missing translation for "Spent Rounds" in firearm tooltips.<*>Fixed Disassemble tooltips for movables showing the incorrect object name (and no icon)<*>Fixed unlimited maximum title and text entry for journals, notebooks, paper<*>Fixed impossible disassembly of tall fences south and west of player<*>Fixed missing radioInteraction codes for perks<*>Fixed bug in RadialProgressBar with texture offsets<*>Fixed bug in ISSafetyUI where second part of the radial cooldown would display incorrectly.<*>Fixed alarms being enabled in buildings the player spawns in (in MP).<*>Fixed NullPointerException in DeadPlayerPacket.set().<*>Fixed ability to have more than three saved splitscreen players in multiplayer.<*>Fixed issues managing saved splitscreen players in multiplayer.<*>Fixed SafeHouseRemovalTime greater than 596 removing safehouses.<*>Fixed player facing direction never getting set on the server.<*>Fixed Survival Guide error showing the guide when isShowFirstTimeSneakTutorial() is true.<*>Fixed the "Learned Recipe" text above the player's head when watching a VHS not being translated.<*>Fixed EvolvedRecipe.java using DecimalFormat (which uses the default locale) and instead use NumberFormat.getInstance(Locale.US) to try and fix rare crafting exceptions.<*>Fixed getting Fitness XP without exercising when starting exercises while aiming.<*>Fixed being able to dismantle carpentry window frames and door frames before removing the window or door.<*>Fixed Z location check in RecipeManager isNearItem<*>Fixed playing sound from the waist of zombies that are on the ground and instead play from their head.

42 Techdoid

Hey all, here’s a general update from TIS Towers on various things. We do hope this finds y’all well.

First off a quick heads-up on the forthcoming 41.66 patch. It’s now content locked, and is now receiving required fixes reported by our internal testers. We will look to put it out into a new unstable beta branch as soon as we can.

The full current changelist can be found here for those interested.

Next up, a few details on our Build 42 work.

As previously mentioned the core MP team will be sticking with Build 41 patches to improve life out on the servers for the immediate future, but work on the next big build has nevertheless now begun/continued in earnest.

Already announced for Build 42 was a major expansion of late game crafting and a major focus on game balance – details on which can be found here.

There are a few other irons in the fire for this build too though. As ever, no ETAs on any of this.

We are very much still in the early versions of this build, and indeed much of the late game crafting update is currently in the ‘pen and paper’ planning stage. More on this in future blogs.

Engine Tech Improvements


We have recently taken some time to get rid of a bunch of our longest standing issues with the game’s engine.

Whilst this is definitely not a b41-style level of disruption, we’re digging deep inside our renderer and looking for ways to get rid of the quite severe problems that have been baked into our engine for a long time in terms of both capabilities and performance.

Performance


Of course, the biggest issue our engine struggles with daily is the extreme CPU and GPU heavy requirements of having a map composed of so many unique tiles, shaders and other stuff without the ability to use a z-buffer to let us render in an optimized way like most 3D games.

Ironically the fact that its ‘a simpler looking 2D game’ is what works against using a lot of the power of the GPU to render the map fast. This results in large FPS drops, particularly when zooming out due to the mind meltingly inefficient draw method that the ISO perspective forces on us.

We’ve had a few rather bold ideas on how to solve this, using the caching of chunks that have already been rendered, which we hope will vastly increase the FPS in B42.

It’s early days, but looks promising. This tech requires heavier use of the GPU memory, however, so it may be that this optimization will only be able to benefit cards with a few gigs of free VRAM. We’ll have to see which generations of GPUs will be best able to leverage it when its dev time is a little further down the line.

Speaking of not being able to use a z-buffer to render things in an optimized way: in actual fact, we’ve also been working towards being able to use a z-buffer to render things in an optimized way.



This essentially frees us from having to slot the draws of zombies, vehicles or players in between the appropriate tile draws in ‘back to front’ order.

We’ll be able to simply draw all the characters and vehicles on-screen at the end, their pixels then discarded if they are deeper into the scene than an existing building object’s pixel.

This should massively optimize the rendering speed of zombies, and allow us to sort them by materials. It will free us to use cached chunks indefinitely, until the lighting or cutaways demand a change, rather than rendering all the tiles individually.

We have had some surprising FPS results in 4k on max zoom, however we also expect this will likely fall a lot in practice – once the work is complete and everything is drawing. Please excuse any visual glitches at the moment!

[previewyoutube="G6t5h0_Sfqc;full"]

Due to all this, in B42 it currently feels safe to assume that zooming out will have significantly lower performance penalty – and that higher resolutions will become more feasible for at least mid-range GPUs, and possibly lower end GPUs too.
 

Variable Chunk Heights


In the game, since our very earliest builds, we’ve been limited to 8 storey buildings. This was primarily because the height was global, and increasing this would incur a penalty to performance across the entire map even if that extra space was not used.

The other issue was simply performance when drawing those extra floors. If we’re struggling to render the amount of tiles we already have, adding extra tall buildings would be a big mistake.


Thirdly, there’s something to be said about less being more in terms of gameplay. However, this hard limit of 8 has long been a thorn in our mappers’ sides, as well as for our mod community.

Seeing as it looks like we’ll be able to solve the performance issues discussed above, we’ve now added a variable chunk height system which will allow each chunk of the map to define its own max height.

This means that in Build 42 it’s looking like a particular area could have floors up to 32 in height, should the mapper desire it.

Four way stairs


Currently, due to certain tech limitations, we only have stairs that rise in north or west directions.

This is annoying, and we’d like to get rid of this limitation for numerous reasons. We’ve done some mock-ups of how stairs would look in the other two directions, and think we’ve found a way to make it work.

They look a little odd, however functionally being able to have stairs in any of the four directions would give mappers and ourselves much more freedom in building design.

Map Coordinates


Another limitation that has been very longstanding is the fact that negative map coords (expanding out the map in the negative X and Y directions) is not possible in PZ – due primarily to some TIS naivety early on in development.

For the maths-minded out there: casting a player’s x, y, z location to an int to work out what tile they are standing on will return the wrong value if any of those coordinates are a negative value.

There were thousands of places where this occurred in the codebase, and they all needed changing from a static cast to a math.floor, so that they will work in negative dimensions.

Making negative map coordinates possible means that we, or modders, will feasibly be able to build northwards and westwards, and opens up a huge extra area of potential map area to expand to.

It likewise also puts other cool stuff (back) on the game dev table that we’ll discuss at a later date.

Light Propagation


We have also been updating our lighting system.

In the current B41 we have an ambient light level that’s inherent to every tile within the map – though slightly reduced indoors. Light sources are only capable of lighting the room that they are in.

Locking yourself in a cupboard with the door shut currently results in the same light level as you’d get in the living room with open curtains.

For B42 we are rejigging how lighting is calculated, to make a much more interesting and realistic light propagation system.

Now being in a room with no windows, even in broad daylight, will leave you in the darkness. The evening sunset glow will encroach through the window and bathe your room in a red tint, creeping back toward the window and dimming as the sun goes down.

Interiors of buildings will lighten and darken with the daylight based on how much exposure to the bounced light they will feasibly receive. Opening a door to a lit room will bathe the outside corridor in light, and so on.

This is all still development in progress, and it maybe requires tweaking of light intensities, colours and fall-off ranges.

Please also excuse any glitches you see, this is all still very much in the oven!

[previewyoutube="9_0TiPQ-JQA;full"]  

OTHER BIZNESS










This week’s flamingo funfrom Cute Cappuccino. A changelist of all our pre-release patches since the 41 beta began can be found here. The Block of Italicised Text would like to direct your attention to the PZ Wiki should you feel like editing or amending something, and the PZ Mailing List that can send you update notifications once builds get released. We also live on Twitter right here!
Our Discord is open for chat and hijinks too! And you can always find our bi-weekly blogs over here.