1. Project Zomboid
  2. News

Project Zomboid News

Project Zomboid build 42 will allow spooky basements and sewers

One of the most surprising things about Project Zomboid is how genuinely frightening it can be, despite the outwardly friendly visuals. Developer The Indie Stone is planning on making things quite a bit scarier, however - with some upcoming changes to the survival game's underlying technology, soon we'll be faced with exploring subterranean levels like basements and sewers. And they're going to be very, very dark.


Read the rest of the story...


RELATED LINKS:

Project Zomboid Build 42 will make the map a lot bigger

Project Zomboid update 41.73 lets you store gas in bottles

Project Zomboid is getting "realistic bleach-drinking"

Upstairs Downstairs



Now then, survivors. Let’s do the thing.

[h3]NEXT[/h3]
This week we released version 41.77 into our Unstable beta. This is primarily aimed at fixing the Linux crashes that have been plaguing server hosts, and so far seems to be a mission success in that regard.

It also improves client to server connections by preferring a direct connection to the server. Servers now have two ports for clients to connect to, configurable through the server options. The game port (UDP 16261 by default) is used to handle Steam queries. The additional port (UDP 16262 by default) is used to handle the direct connection.

We’ve had a successful wider test of 41.77 with more than 30 people on a server without any crashes, and we’ve tested a modded setup afterwards as well.

Upon release there were servers running mods with 41.77 just fine, but unfortunately it seemed that some mod setup constellations caused conflicts that resulted in black screens for some servers.

We have just pushed a hotfix we believe will resolve this.

If, however, you run a 41.77 server and you are still experiencing players unable to log on (only seeing a black screen) then please send us: the list of ModIDs (specifically the “Mods=” line from their server.ini, the workshop= line, and your server logs.

Posting these in the forum release thread or in our Discord techsupport channel would probably be best.

Likewise, any reports of ongoing server instability or general misbehaviour – please let us know ASAP.


[h3]THEN[/h3]
We’re still adding tweaks and polish to our final B41 patch that we’ll put out once the current network improvements are fully tested, released and stable.

This is the current changelist, with notable additions in the past few weeks on show here if you already read up on what was incoming in our last blog.


[h3]OOH, 42[/h3]
Build 42 will be a very big update, and it will appear a sizable amount of time after Build 41 is fully wrapped. We’ve announced most of the things that we currently have brewing for it, but there’s one thing we’ve only hinted at so far – and which is very likely to feature.

As regular readers may remember, a while ago we wrote a blog called Techdoid that detailed some of the big engine improvements we have slated for 42.

Amongst them is a new rendering pipeline which allows for entire chunks to be cached with a depth buffer, which will afford us MASSIVE rendering and scene construction improvements and should rid us of all the performance issues we’ve been plagued with due to the isometric draw order over the years.

[previewyoutube][/previewyoutube]

There’s also a new light propagation system, which allows for light to naturally leak through doors and windows, providing much more atmospheric and believable lighting

[previewyoutube][/previewyoutube]

We also got rid of the 8 storey limit on chunks: specifically we allowed each chunk to have its own unique defined height up to 32 levels.

Finally, we discussed that we’d fixed the many areas of the codebase that used static casts to round the player’s position to determine what chunk or tile they were on to using Math.floors instead. This method allows for negative coordinates to work where prior the calculations would have failed if the player was stood on a tile with a negative coordinate.

This in theory will allow for us, or modders, to build north or west to the same extents as we currently build to the east and south, effectively quadrupling the maximum size the map could be extended to and open up a great deal of extra land to populate should we need to in future.

Whilst all these features are gamechangers in themselves, they were also done in service of another very specific feature we’ve had planned for a long time, which required each of them to be made feasible in any way.

The current in-game lighting system means that the indoor ambience levels are defined solely by the time of day. If it’s daytime, the ambient light levels inside a building are above zero, giving just sub-daylight levels, even if there are no sources of natural light that should fall on a tile just by virtue of it being day. That wouldn’t work very well if we were wanting to do… a certain other feature.

The previous eight level hard limit and high rendering cost of multiple levels was rather restrictive if we were to… want to do a certain something.

The lack of support for negative coordinates for character positions? Well that was IMMENSELY restrictive if we… were to want to do a certain something.

A few people may have been able to read between the lines of what all these lead toward. Many more will have just watched the video already.

[previewyoutube][/previewyoutube]

The plan we have for basements and sub-levels is an interesting one, as it will provide a lot more replayability to the game map, which is otherwise completely static at the moment.

Essentially in 42 we, or modders, can list positions on the map (along with staircase orientation) that have the space for a basement and can be allocated the potential to have one. However, no basements are placed within the map itself.

When an area is streamed in for the first time, an appropriate basement ‘building’ created in the building editor and exported as a binary file is selected randomly from the list of all possible basements and will be injected into the map as it is loaded.

We could add tags to make it pick an appropriate category of basement to fit the specific house, though right now the code has it set as completely random. Each basement has stairs leading up from its ‘top’ floor and these stairs will be aligned to the correct position when it is injected into the map.

This means that despite the map being static, any areas with basements will yield surprises in every playthrough. This will also, clearly, cause the least disruption to the existing map development, modded maps and everything else.

Whilst most of the basements will be modest basement rooms, that will have their own unique layout and lootable containers and will change on every new world and be populated with our own collection as well as any collections of mod basements that are subscribed to.

There may be a few, however, which are more extensive, the player could happen upon a super rare and extensive underground complex. We have 32 levels to work with that can be distributed in any way above or below ground per chunk as required, so there’ll be few limits particularly in what modders can do with this.

We can also hardcode some specific basement levels, so we could say provide key buildings within the map with bespoke basement levels that fit that particular building and will always be the same on every map.

Also, with the new light propagation system, you better bring a torch – because unless there are light switches, its gonna be dark even if it’s daytime!

We’re also considering the possibility of other sub-surface structures, such as sewers for locations like Louisville. We’re still researching what would be appropriate and sufficiently realistic for this, however, and it’s not certain what could/would appear in b42 beyond what’s discussed above at this stage.

 
[h3]SPIFFO: BEYOND[/h3]
If you are a Terraria player then right now you are likely enjoying the amazing Labor of Love update, and maybe you’ve even discovered a certain someone has made the jump into another game – heralding the beginning of some sort of Spiffo Cinematic Universe.

Our endless thanks to everyone at Re-Logic for letting our little dude spread his wings (or spin his tail, I guess) and treating him so well.

[previewyoutube][/previewyoutube]

This week’s stunning outdoor scene from Citro. 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. Experienced games dev and want to work with us, especially if you’re an Animations Engineer as Christ alive that would be handy? Details here.

41.77 UNSTABLE Released




[h3]Hotfix#3 October 3rd:[/h3]

- Fixed the timed-action progress bar position not being updated during actions without a fixed duration.
- Fixed the animation speed of the timed-action progress bar at different framerates.


[h3]Hotfix #2 September 29th:[/h3]

- Fixed black screen issues with certain mod constellations.
- Improved ConnectionManager logs.
- Increased kick delay for CRC differences.


[h3]Hotfix #1 September 29th[/h3]
- Improved Type5 and Type22 Anti-Cheat behaviour to reduce false positives.
- Extended checksum logs for debugging CRC differences.
- Fixed Type21 black screen at connection stage when Type21 anti-cheat check is disabled.
- Fixed the character model always using media/textures/Body/Masks instead a clothing item's UnderlayMasks folder.


[h2]Original Patch[/h2]
[h3]MP[/h3]
- Improved client connection.
Important for server providers: Servers now have two ports for clients to connect to.
The game port (UDP 16261 by default) is used to handle Steam queries. The additional port (UDP 16262 by default) is used to handle the direct connection. These ports can be configured through the server options.
Clients will first try to use a direct connection. If direct connection fails, clients will try to connect via Steam.
The non-Steam version works as usual.
UPnP rules were changed accordingly (UPnP is used in cases to prevent manual port-forwarding).
The client will show the warning message "WARNING: SERVER HAS PORT %1 CLOSED. PERFORMANCE MAY BE SEVERELY AFFECTED" if the client can't connect through direct connection.

- ZNet libraries rebuilt for Windows, Linux, and Mac.
- ZNet, Connection, and Kick logs are improved.

- Additional logs were added.

- Fixed kicks after disabling VOIP.
- Fixed connecting to host after disconnection from a dedicated server.
- Fixed infinite connection attempt to non-steam server when it's not up.
- Fixed the client displaying "Disconnected" instead of "Wrong username or password".
- Fixed players being able to change their saved password for an already created account in some instances.


[h3]NEW[/h3]
- Added a looping progress bar for timed actions that have no defined end. This is mainly a stopgap "fix" for entering cars, to visualize that there is an ongoing unfinished action until we can have visually open doors, etc.
Specifically added for the scenarios where players reported being bitten through the car door after they had entered a car and interrupted the "enter car" action before it could finish (e.g. by opening the map, etc), i.e. before the door was "closed".
This bar extends to other "infinite" actions like Walk To.


[h3]MODELS[/h3]
- Added new body locations: Jacket_Bulky, JacketHat_Bulky, TorsoExtraVest, and JacketSuit.
- Assigned new body locations to existing clothing items to avoid clipping.
- Tweaked and added many clothing masks to avoid clipping through each other.
- Adjusted several clothing models and bone weighting to improve clipping.
- Removed Bowling shirt model from Bowling shirt definitions and made Bowling Shirt a texture. The model was left in the files in case mods use it.
- Improved base Body mask to help with clipping.
- Re-exported ALICE packs as some straps were missing.

The Good Life



Hello everyone.

[h3]NEXT[/h3]
The situation with Linux server instability remains ongoing, with the MP team working on another update to the Unstable beta – and an internal test of their work tonight.

The good news from the Unstable release of 41.76 was that overall network and connection speeds were improved, and will be beneficial to all online players once fully released, but the far more pressing issue was that residual errors in our zombienet library carried over server instability. Getting this, finally, sorted is currently the team’s number one priority.

This issue doesn’t impact all our players, but we recognise how frustrating it must be for those who play regularly on Linux servers – and above all those who operate them. We can only apologise for the continued outage and ongoing work, and recognise that patience has been running understandably thin.

In our travels fixing the issues, the networking has been changed so as to more directly communicate between server and client. The server now has 2 ports to connect to. The game port (16261 by default) is used to handle Steam queries. The additional port (16262 by default) is used to handle the direct connection, and thus circumnavigate the data travelling through the steam network which was impacting latency and throughput significantly. These ports can be configured through the server options.

We’re aware this may cause a bit of disruption when we first release this to stable. However, the positive impact this will have on server performance, reducing lag and improving syncing of the game is too great to ignore, and should be just an additional port for server operators to be aware of and shouldn’t affect the vast majority of players connecting. The non-Steam version, meanwhile, will just work as usual.


[h3]THEN[/h3]
Most of the non-MP team are now fully on B42 development, but we do have a few brave soldiers working on the final 41 patch that’s currently backlogged behind the aforementioned MP fixes.

The intention of this patch is to be as non-disruptive as possible, and to leave 41 in the best possible condition during the next period of extensive Build 42 development.

As such it’s primarily fix-based and polish, but there are also some expanded sandbox options. You can see the topline of new changes in the screenshot below.



You can thankfully also view the full current changelist by following this hotlink.

This build will go into the unstable beta once MP servers are fully patched up and stable.


[h3]42[/h3]
We’ve got a couple of videos from RJ this week to show his current work on domestic animals. They are fairly self-explanatory when you watch them, but PLEASE NOTE everything you see is heavily WIP.

RJ is working in something of a development debug sandbox here, and as such everything will have rough edges – and likewise some player actions will have more appropriate animations, animal sizes will be improved, sound effects, further polished UI etc. etc.

[previewyoutube][/previewyoutube]

[previewyoutube][/previewyoutube]

Finally, just to give you the shivers, here’s a sample of the Sound Team’s latest work on sprinter screams. Don’t have nightmares.

[previewyoutube][/previewyoutube]

This week’s book club from Kawri. 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. Experienced games dev and want to work with us, especially if you’re an Animations Engineer as Christ alive that would be handy? Details here.
 

41.76 UNSTABLE Released



We skipped public testing for 41.75.

The TL;DR of the changes from 41.74 to 41.76 is that the Steam Networking API implementation was improved; Linux crashes should be fixed and overall networking performance has been improved alongside connection stability in internal tests.
In essence, the game will now also use direct communication with dedicated servers, instead of going entirely through Steam’s own networking API, improving performance and stability for dedicated servers.


[h3]MP[/h3]
- Improved Steam Networking API implementation.
- Selected game data is no longer transmitted through the Steam P2P API but through UDP instead.

- Adjusted Anti-Cheat Types 21-24 to result in fewer false positives.

A note that if you do not run a public server (i.e. a server exclusively for you and your family & friends without the worry of griefing and cheating), you can entirely circumvent any sort of frustration with false positives by disabling all AntiCheat protections in the servers .ini file.

- Split the large ConnectionDetails packet into several smaller packets with one of the ConnectionDetailsPacket.State enum values indicating which data is requested.
- Improved algorithm for the transmission of large files while playing.

- Loading screen now shows the download status of large files when connecting to a server.

- ZNet library was rebuilt on all platforms.

- Fixed ObjectModData packets not being sent while the server was in the FastForward state.
- Fixed bug in world dictionary when an item in a different module but with a similar name as an vanilla item was removed.
- Fixed a new stubble Beard getting added to remote players after each appearance change, which resulted in receivePlayerZombieDescriptors errors.