Jun 9, 2022
Project Zomboid - nasKo


Hey all, here’s a quick update on what we are all up to.

Our initial plan was to release our next 41.72 patch to the Unstable beta today, but annoyingly last night’s internal playtest had too many niggles with vehicle gameplay for us to comfortably let you loose on it.

This is slightly annoying in terms of today’s blog, but probably not quite as annoying as you happily downloading the new version only for MP passengers to be stuck revving on the tarmac while their drivers whizz off towards Louisville.

Still, once the MP Strike Force have checked everything out and we’ve had another (more successful) test then this is some of the stuff that will be punted out for you to try out:

  • As mentioned in the last blog, the opt-in ability to see fellow MP players in your faction or safehouse on your in-game map.
  • A huge range of new and improved admin powers that should breathe a little more life into online play. First and foremost of these is a brush tool that will allow admins to create tiles, walls, fire, smoke, water etc. in-game.

    There’s also the ability to easily trigger thunder, a more synced health panel, improved spawning of vehicles and trailers and the ability to change player weights. Also, also are more zombie-attracting options, improved zed spawns and some powers over whether doors are locked or not.

    Here’s a quick video Aiteron has made to show it all off:
  • Another more minor, but quite pleasant all the same, addition from Aiteron is the possibility of adding icons to the context menu. As seen here.

  • New loot maps. Previously we didn’t have any loot maps for Louisville, but Tim has now integrated a bunch from the hand of Pat_Bren into the loot table. There are nine different maps in all, which means that as well as the usual ‘treasure map’ aspects you will be able to reveal a ninth of the Louisville map upon reading them.
  • Also of note in .72 is an improvement to the way in which mod errors are reported. We have added a list of mods to the pause menu, and if one of them is causing errors and ‘the red box of doom’ then the culprit will be highlighted within the list.
  • Perhaps of greater import to mod authors and our tech support team, however, is the improved lua error log that goes with the above: this will show if any files reported in call stacks are overridden by mods. We hope that this will allow modders, players and our own community liaison peeps to easier find mod conflicts and other issues.


SWEAT THE SMALL STUFF
While it’s not exactly excitement dynamite, we know, this week we hit a point at which our internal tasklist board got a bit… silly. When you have been making a game for as long as we have there is a tendency for minor tasks, small bug fixes and ‘easy win’ suggestions to stack up, and up, and up…

The boards were just clogged, and it was hard to see the wood for the trees – and as such we pulled some coders from their features to blitz through and give our testing and production staff some temporary relief. Not sexy: we know, but also necessary for the sanity of some of our team.

This sort of stuff:


Having made a sizable dent in this sort of bug, everyone is now back at their usual post – but ‘Enforced Small Task Clearance Week’ also culminated in an event that will hopefully mean that we don’t have to have one of these mandated periods again in future.

Prolific modder Blair Algol has joined the team, and his role will be clearing out as many of the remaining hundreds (!) of these minor (but sometimes time-consuming) issues as he can.

Blair’s many mods touch so many different areas of the game that it seemed like a very natural fit for such a duty, while he also, of course, comes packaged with many ideas of how to make modding life easier for others in the community too.

Once the boards have been cleared, and Blair has a firmer grip on the codebase, it’s also our hope that he will be able to bring some of his own ideas and ingenuity into the game proper.


SOUND PHASE III
Much like the Marvel movies, our soundscape improvement operations have worked in phases – and we recently had the meeting that kicked off Phase 3. The following are Noiseworks/Formosa’s next primary missions:

  • Improvements to how the sound system deals with multiplayer characters and sound priorities. Primary work here is to try and solve the issues where sounds drop out due to clashes in sound priorities and limits when multiple players are around.
  • Expand the reactive music beyond action moments. The ultimate goal is to allow the other non-action tracks to evolve and change: triggered by walking into buildings, looting a container, or any other little action that may trigger a change in the track that’s playing. Likewise making sure that they all also blend more organically between each other.
  • Gameplay related sound effects, like modelling the realistic effects of using firearms in enclosed spaces without ear protectors. Also: improved noises for large crowds of zeds, sprinters and bullet world impacts if the coding team can provide their support for implementation.


OTHER STUFF
We are currently debating whether to release the map team’s current work (fixes, polish, improved farm buildings and agricultural areas, more defined Louisville upper class suburbs) in a 41 patch, or whether to outright say that the next export will be for 42 later down the line – alongside some sizable planned expansion into other towns and conurbations that would be beyond the edges of our current area. More on that, and where we are taking the Knox Event location-wise, in future blogs.

As we mentioned last time, we’re coming off the back of Turbo’s serious illness currently – so it’s been something of a month of consolidation rather than massive exciting strides ahead.

That said, sometimes strides ahead come in the form of things that will pay off in the far-flung future. Ever since the success of the 41 release we have had a lot more resources at our command, and have been able to invest it in both middleware that could bring PZ to new heights – and the talent to integrate it with our codebase.

As we all know, one of the weakest things about PZ is the UI. We all get on with it fine, but let’s face it: it aint a looker, and it can be a bit clunky, fiddly and slow. We’ve always said we’d give it an overhaul, but it’s always been a daunting prospect.

Since March, alongside our friends at General Arcade, we have been experimenting with some super fancy AAA high-end UI tech middleware that will make this process easier, and will make the end result better.

For the past few months we’ve been making sure that it’s compatible with the game, doesn’t negatively impact performance and will still allow for lua UI for our modders – and it has been this week that we feel comfortable enough to say out loud to each other that it’s going to work, and is safe to proceed.

So next time you see someone moaning that the PZ UI isn’t exactly glamorous – just tell them ‘they know, and it’ll take a while – but they’re working on it’. It’ll be some considerable time till we talk about this again, but we just wanted to let you know that this is another iron that we have in the fire.


Today’s pile-up campfire from Mr.Crab763. 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. Want to work with us? Details here.
May 26, 2022
Project Zomboid - nasKo


Hey all, here’s a Thursday round-up. We released version 41.71 last Thursday. We’re big on Thursdays around here.
41.71 contained a huge range of stuff, but topline features included: new and improved dynamic action music, a raft of improvements for Steam Deck players, new items, scarecrows, less wobbly and less performance-costly 3D items on your safehouse floor, loads of MP improvements under the hood, the fabled one-watch VHS video fix, new ambient and shutdown noises, modding improvements and tons more.

Better to read the forum release post than a long paragraph in the blog, I guess, if you are in need of a catch-up.

Since last week we hotfixed some issues with sound cut-outs on busy servers and with rapid-fire weapons, and so now we find ourselves moving onto…


41.72
Seeing as we already have a fair amount of MP changes, fixes and balance in the pot for .72 at the moment it feels like it won’t be too long until we move it into the Unstable beta – unless of course a more disruptive feature comes to the boil over the next week or so and requires added internal testing.

The current changelist for what we have in this patch can be seen here if you are interested.

Primary items of note involve a lot of fixes and polish to radio use in-game, improvements to the representation of weapon-part upgrades in 3D models, and various issues with generators and batteries.

Also in the patch will be the opt-in ability for fellow faction and safehouse members to be visible on your in-game map.



And also some support for our colour-blind survivors, who will now be able to choose their favoured new text colours instead of BAD RED and GOOD GREEN. Thanks to Fox for this one.





BEYOND
There are many advantages of having a tight small team when making a game like PZ. However, one of the biggest disadvantages is that when serious ‘irl’ stuff happens to any of us it makes aspects of development difficult. We’ve never really mentioned it before, and still won’t go into any detail, but this was one of the reasons that Build 41 itself took a long time to come to complete fruition.

The reason we are bringing this up is because one of the primary architects of the revamped B42 crafting system, Turbo, has been very ill (and often hospitalized) for much of the last three-four months.

Turbs said it was okay to let you all know this, as it clearly has meant that while RJ’s work on domestic animals and some roaming beasts has been rocketing on ahead – Turbo’s own work on the post-apoc crafting, tech-trees and recipes has had to be on hold.

We are so, so relieved and happy that Turbo’s treatment led up to an operation and a complete return to health – to the extent that he has been back working with us again this week. It’s been awesome having him about the place again.

We don’t yet know how much this will impact on build content, timings etc, and will be working out what’s what in the week or two ahead – tho B43 stuff is being worked on in parallel, so it hasn’t been detrimental to that.

Sorry if this has been a bit of a ‘too much info’ update, it’s probably not something you’d catch in a Call of Duty blog, but with Turbo’s permission, we thought it would give everyone a more accurate insight into where we’re at with things.

We also hope that everyone will join us in wishing Turbs continued good health – a phrase for which the Dutch probably have their own term for and that we will google later on.

To circle back around to more developmental matters-at-hand, here’s an image from RJ and Tim’s work on ways in which our non-domestic animals will roam the map. These are AnimalZone paths that share points, and allow for both long paths that cross cell boundaries and branching paths too.




MAPPING
We love seeing the maps our community produces – each with their own flavours, design and challenge. To support all our mappers today we are releasing almost 1500 buildings and associated assets of our own in-game housing, garages, sheds and patio sets for use in community maps.

These should help map-builders flesh out their worlds without having to rely purely on their own constructed (and shared community) houses, flats and outbuildings.

If you are a mapper then you can find the released assets here.

We are not releasing ‘special’ and governmental/military buildings – but there are many, many houses, apartments, sheds, shacks, shops and restaurants here for folks to use in their own apocalyptic zombie nightmares.

In terms of our own future map improvement and expansion, meanwhile, check out what Ayrton has been doing to our Louisville rich districts.

“To bring more diversity to some locations of Louisville, I am converting some streets or blocks into Victorian-style districts, it should enable us to add a new layer of complexity to the urban plan with areas that are more/less wealthy, ancient, etc. Those new tiles are also being added across existing relevant buildings.”




Elsewhere Aiteron is playing around with his improved fishing system to mix in some added ‘fun quota’ alongside the improved anims/visuals we showed last time round. Long-term work on server-side items and timed actions for MP continues, and the Noiseworks/Formosa soundscape revolution continues with their next missions due to be discussed in the coming week.

Pat_Bren is also, meanwhile, crafting a bunch more annotated survivor maps to bolster our current stock – and also to cover Louisville and other newer areas of the Knox Event map.


JOB AD AGAIN
Following the success of Build 41, we 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.

This week’s touching crime scene from https://steamcommunity.com/sharedfiles/filedetails/?id=2810248547. 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.
May 22, 2022
Project Zomboid - nasKo
41.71 compiled changelist

(Includes changes from builds 41.69 to 41.71 from the unstable branch.)


NEW
  • New action music system
    Instead of switching between tracks mid-combat, the music is reactive and can increase and decrease in intensity during combat and other dramatic moments.

  • Added "Stubble" checkboxes to the Hair and Beard sections in the character-creation ui.
  • Added new items + updated 3D models
  • Added new forage items

  • Added the skeleton mannequin and scarecrow.
  • Added additional item categories and addressed some blunders
  • Added compilation of new hair types
  • Added option to "add all" to partially full Thread, Duct Tape, Twine etc
  • Added media/scripts/mannequins.txt which describes the model/texture/animation/etc for different mannequins.
  • Added BackupsOnVersionChange server option.

  • Added a second set of translations to the Survival Guide that are displayed when using a controller.
  • Added <JOYPAD:XXX> formatting to rich text, where XXX is the name of a Joypad.Texture.XXX texture.
  • Device options can now be opened when radio is on floor, in loot window or when radio just dropped from inventory

  • Added methods Texture.saveToCurrentSavefileDirectory(filename) and Texture.saveToZomboidDirectory(filename).
    The filename may contain folder names, but not "..", to prevent saving to arbitrary locations.
    These methods replace the broken Texture.save(filename) method.

  • Clicking and holding the left mouse button when placing items now locks the item to the clicked square.

  • Added XBOX_Menu.png and XBOX_View.png controller icons.
  • Added autouse new sack of gravel/sand/etc when pouring it on ground
  • Renamed Skill books so that they are easier to categorise.
  • ISClothingExtraAction now sets the item's job type to "Wear" and displays the progress of the action in the inventory window.
  • Updated credits
  • Updated community translations.

  • 3D items now shown as textures instead of models. They shouldn't slide around as much when the player moves.
    This helps a lot with framerates when there are 100 nails on the ground, for example.
    In debug mode, holding the HOME key will disable the item atlas and render models as before.
  • Added IsoSprite.ItemHeight and IsoSprite.Surface debug options to display a rectangle around surfaces that items can be placed on.
  • Changed some ItemHeight and Surface tile properties.
  • Added a title bar to the mini-map window which allows the mini-map to be repositioned. The title bar and bottom row of buttons are hidden unless the mouse is over the mini-map.
  • Changed setHaveConstruction to apply only when constructing and placing objects


    MODELS/ANIMS
  • Changed Diamond Pattern Sweater Vest and V-neck Sweater Vest to use Sweater body location
  • Changed High Viz vest to use Sweater body location
  • Added a different animation played when destroying floors with a sledgehammer.


    MP
  • Removed vehicle physics from server (not client) to address some of the vehicular weirdness sometimes seen online
  • do not apply impulses to static / kinematic vehicles
  • limit changes of linear and angular velocities
  • Passengers no longer allowed to exit the car while moving

  • Enable packet processing on the server
  • MultiplayerSeeNonPvpZones debug only option is added

  • Local admin check is delayed after set-access-level command
  • Player update replay is commented out
  • Check for local admin kick is improved
  • Turn on player teleport logs on the server
  • Admin is not kickable from safehouse

  • Burnt or smashed vehicle check is added for dismantle vehicle command
  • Car wreck is removed via new "dismantle" vehicle command
  • Only admin can delete vehicle via "remove" vehicle command
  • Add vehicle UI allows creation of burnt and smashed car wrecks

  • Anti-cheat: fixed kick local admin issue
  • Cancel auth ticket on client shutdown

  • Toggle timer is disabled in non-pvp area

  • MultiplayerLightAmbient debug option is removed

  • Refactored SafetySystem
  • Server option process cycles for SafetySystemManager are simplified
  • PVP safety is now set to true when PVP is disabled on server
  • Set the default Host server memory to 4GB on 64-bit systems. This is the value displayed in the "Server memory" combobox which is saved in Zomboid/Lua/host.ini.
  • Don't create a backup of the server savefile in Zomboid/backups/version if BackupsOnStart=false. This backup is created when a new version of the game is released, but only for the first server that is launched.
  • Hide the black overlay when the sleeping players are killed

    Improvements to how the MP game handles dead player bodies
  • DeadBody creation is moved to the server
  • DeadBody ID is added (World version 192)
  • Client does not allocate dead body ID

  • Fixed player death animations
  • Fixed desaturation being set for dead player
  • Fixed reanimation delay timer starting immediately without 10 seconds delay
  • Fixed reanimation delay of 0-30 seconds
  • Fixed player death final animation
  • Fixed possible null point exception when zombie bites dead player
  • Fixed dead body grabbing breaking reanimation
  • Fixed dead body id not changing when added to world
  • Fixed desync of safety cooldown timer
  • Fixed sleeping player not being woken up in case of kick from safehouse
  • Fixed PVP icon being located over the map
  • Fixed players who could be kicked when admin removes that player from safehouse
  • Fixed when a non-owner player quits a safe house, other players also getting kicked.
  • Fixed when safehouse owner goes offline, the non-safehouse-members get teleported immediately
  • Fixed PVP button becoming inactive for each player across the map if Admin shot\got shot by a player"
  • Fixed player being kicked when admin creates or removes PVP zone
  • Fixed SyncNonPvpZone packet send/receive loop
  • Fixed newly connected player not having all the non PVP zones
  • Fixed possible nullpointer in checkForNearbyRadios
  • Fixed zed texture 4 being used for player texture 5 instead of random index
  • Fixed reanimated player corpse disappearing
  • Fixed being able to turn pvp on when server option PVP set to false.
  • Fixed BufferUnderflowException on the server in SneezeCough packet processing
  • Fixed possible NullPointerException in ClientPlayerDB.getAllSavedPlayers().
  • Fixed player appearance sync in multiplayer with greater than 32 connections.
  • Fixed erosion growth not being suppressed when building floors or digging graves in multiplayer.
  • Fixed radio sync in MP
  • Fixed players outside the Non-PVP zone being able to kill a player with a bomb located in that zone
  • Fixed player being able to remove PVP button cooldown in non-PVP zone
  • Fixed unexpected anti-cheat kick just after leaving non-PVP zone
  • Fixed being able to turn pvp on when server option PVP is set to false.
  • Fixed player being able to remove PVP button cooldown when in a non-PVP zone. (Safety cooldown timer is now stored/restored when player enters/leaves non-pvp-zone)

    VHS Fix
  • Fixed listened-to media lines being saved globally instead of for each player. This could add over 200KB to each player's saved data if every line is listened to.
  • Fixed ClientPlayerDB handling of WorldVersion.
  • Transfer known media lines from recorded_media.bin to the player on the first load.
  • Check for null arguments to RecordedMedia.hasListenedToAll(). A mod seems to pass null for the IsoPlayer argument, which was ok when listened-to lines were stored globally instead of per-player.
    The mod file is es.info.books.main.lua.

    MODDER WARNING: This could break any mods that modify ISRadioInteractions.lua or are using the OnDeviceText event (which gained a new parameter).


    MODDING
  • Fixed mod animations not being loaded if they aren't in a subdirectory of anims_X, or aren't in a subdirectory registered in animations_meshes.txt. Any such animations are added to the MaleBody model by default.

    Item tagging changes

    MODDERS: PLEASE READ ADDENDUM DOCUMENTATION FOR INFO


  • Added new tags to some items: BlowTorch, Fork, GasMask, Glue, HazmatSuit, Knife, Razor, Scissors, Sledgehammer, Spoon, StartFire, WeldingMask. These tags are used in multiple places instead of looking for specific item types.
  • Added methods ItemContainer.getBestConditionEvalArg() and ItemContainer.getBestConditionEvalArgRecurse().

  • Script properties item.staticModel and item.worldStaticModel are set to the fully-qualified "module.type" after loading scripts. This is to fix mod items not finding "model" scripts that aren't in the Base module.

  • Added a new item-script property ReplaceTypes which supersedes ReplaceOnUseOn (which is still supported).
    The format is "ReplaceTypes=Key1 Type1;Key2 Type2;..." where each key is some string (such as WaterSource) and each type is an item type.
    ReplaceTypes allows specifying different replacement item types for different uses of an item, for example, filling an empty item with water and/or with gasoline.
    It is used for the same thing as ReplaceOnUseOn, but allows multiple key/type mappings instead of only one.
    These new methods were added to both Item and InventoryItem classes:
    String getReplaceType()
    HashMap<String,String> getReplaceTypes()
    String getReplaceType(String key)
    boolean hasReplaceType(String key)
    The existing ReplaceOnUseOn lines in items.txt add a new value to the item's ReplaceTypes HashMap.


    SOUND CHANGES
  • Added global parameters Electricity, RoomType, and Water.
  • Added a new tile property named "AmbientSound" to support custom ambient sounds from objects. Current values assigned to some tiles are:
    FactoryMachineAmbiance
    HotdogMachineAmbiance
    PayPhoneAmbiance
    StreetLightAmbiance
    NeonLightAmbiance
    NeonSignAmbiance
    JukeboxAmbiance
    ControlStationAmbiance
    ClockAmbiance
    GasPumpAmbiance
    LightBulbAmbiance

  • The FMOD global parameter "Electricity" is set to 0.0 when the new WorldEventElectricityShutdown event passes the "ElectricityOff" timeline marker.
  • Added FMOD parameter value RoomType=Factory.
  • Changed debugSetRoomType() to accept an integer instead of the name of an enum value.

  • Added sounds:
    ArcadeMachineAmbiance
    CanisterAddFuelFromGasPump
    CanisterAddFuelSiphon
    VehicleAddFuelFromCanister
    VehicleAddFuelFromGasPump
    VehicleHeadlightsOn
    VehicleHeadlightsOff
    VehicleWindowHandleOpen
    VehicleWindowHandleClose
    VehicleWindowElectricOpen
    VehicleWindowElectricClose

  • Synchronize room lights and other objects losing power with the ElectricityOff timeline marker.
  • Added PlaceOneSound and PlaceMultipleSound item script properties.
    These are played when placing items using the "Place Item" command.
    The default sound played if these aren't defined is PutItemInBag (the same sound played when dropping items).

  • Added BoxOfRoundsOpenOne and BoxOfShellsOpenOne sounds to some recipes.
    Increased the time of these recipes to allow the sound to play. The time is still quite short (was 5 ticks, now 15 ticks). Probably nobody will die waiting.

  • Added FountainBigAmbiance sound played to the multi-tile water fountain.
    The sound doesn't seem to loop and stops after several seconds.

  • Added RepairWithWrench sound played when plumbing sinks and for the moveables Wrench tool sound.
  • Added value MetalGate to the FenceTypeLow and TripObstacleType parameters.

  • Added sounds:
    BBQPropaneTankInsert
    BBQPropaneTankRemove
    BBQPropaneRunning
    BBQRegularAddFuel
    BBQRegularLight
    BBQRegularRunning
    CampfireAddFuel
    CampfireRunning
    CampfireLight
    CampfireBuild
    FireplaceAddFuel
    FireplaceRunning
    FireplaceLight
    ZombieTrip
    ZombieThumpGarageDoor

  • Added EquippedBaggageContainer FMOD parameter.
  • Added "SoundParameter = Name Value" item-script property.
  • Added FMOD parameter SinkType=Generic|Ceramic|Metallic which affects the WaterDrip sound.

  • Hitting trees with weapons and bare hands plays the weapon's HitSound instead of ChopTree.
  • A melee weapon's SwingSound is now played via animation events instead of at the start of SwipeStatePlayer.
    This allows using different sounds for different attack animations.
    Currently this is used to play a different sound for spear stab versus spear slash attacks.

  • Play the WorldEventElectricityShutdown event from the nearest square in a building when outdoors.
  • Set the FMOD parameter "RoomType" using RoomType objects added in WorldEd.

  • Changed how ambient sounds are played from doors and windows.
    Instead of choosing random objects, only the nearest exterior objects will play sound.
    Different sounds are played depending on whether the door or window is open or closed.
    This will be used for playing rain and wind sounds when the player is inside.

  • Fixed the BurningFlesh sound not stopping in multiplayer after a player dies.
  • Fixed the barbecue and fireplace extinguish sounds stopping instead of being triggered to fade out.
  • Play an animation when turning a propane barbecue on and off.
  • Fixed crouching when extinguishing a charcoal barbecue.
  • Fixed SFX and music cutting out in busy situations (often seen on MP servers)
  • Reimplemented ZombieVocalsManager to limit zombie voice events to the nearest 20 zombies.
  • Optimized sorting objects in DoorAndWindowEmitters and ZombieVocalsManager.
  • Changed handling of object ambient sounds so they only play from the nearest 20 objects. This includes doors, fridges, trees, windows and any sprite with the AmbientSound property set.
  • Removed DoorAndWindowEmitters. This is combined with ObjectAmbientEmitters.
  • Fixed ZombieVocalsManager not actually stopping vocal events when one of the 20 slots was reassigned to a different zombie.



    CONTROLLER / STEAMDECK IMPROVEMENTS
  • ProjectZomboid64.exe will disable the -XX:+UseZGC option if a required function is undefined in Kernel32.dll.
    Steam Proton does not define the MapViewOfFile3() function, which prevents the Windows version of the game starting on the Steam Deck.
    Conveniently, MapViewOfFile3() is only available on Windows 10 1803, the same version ZGC requires.
  • When options.ini doesn't exist on startup, set the display to fullscreen desktop resolution.
  • When options.ini doesn't exist on startup on Steam Deck, call Core.setOptionActiveController() to enable the controller.

  • Allow precise positioning when placing items using a controller. This is done by holding the Y button and using either D-pad or the left joystick to move the item around the square. When there is more than one surface, it can be changed by pressing the right shoulder button while the Y button is held down.

  • Enabled the on-screen keyboard in CoopUserName.lua.
  • Leave room for two lines of tooltip text at the bottom of the character-creation profession ui.
  • Several panels in the main menu can be scrolled using the right joystick.

  • The Start/Menu button will display the main menu in single-player, or resume normal game speed.
    This is instead of pressing once to pause the game and double-pressing to display the main menu.
    The game can still be paused using the Back/View button radial menu.

  • Added controller navigation in the Workshop ui (for submitting Workshop items). NOTE: The controller doesn't work in the Steam overlay, which some buttons display.
  • Allow mouse clicks etc in the inventory and loot windows when a controller is active.
  • Added controller navigation to the Temperature tab of the character info window.
  • Made the selection in the Health panel easier to see.
  • Made the character-info window more opaque.
  • Made CharacterCreationMain wider at lower resolutions to avoid overlap.
  • Added a button to the on-screen keyboard to hide and show password text.
  • Enabled controller navigation in the server browser ui.
  • Enabled controller navigation in the server-settings editor.
  • Put the inventory and loot windows in their default positions if the controller is disconnected and "Use Keyboard and Mouse" is selected.

  • When placing items, the inventory and loot windows are collapsed if they aren't pinned open.
  • When placing items, mouse clicks on world objects are ignored to prevent the loot window popping open.
  • Set the width of ISEquippedItem to match its buttons. This fixes the wider invisible area blocking mouse clicks.
  • Set the texture compression option to be on by default.

  • Fixed navigation in the Multiplayer tab in the options.
  • Fixed editing server spawn regions with a controller.
  • Fixed the filter checkboxes going outside the ui on small screens.
  • Fixed being unable to navigate to the filter checkboxes and some other buttons.
  • Fixed controller focus when creating a splitscreen player.
  • Fixed toggling the mod under the mouse pointer when pressing the controller A button.
  • Fixed several cases of improper controller focus after clicking buttons with the mouse.
  • Fixed Lua error in MapSpawnSelect when the filename entry is hidden.
  • Fixed LoadingQueueState disconnecting immediately due to the A button being pressed, after pressing it in the last character-creation panel.
  • Fixed ISGameLoadingUI not receiving the controller focus when an unexpected error occurred while loading.
  • Fixed BootstrapConnectPopup, ServerConnectPopup and ServerWorkshopItemScreen not working with a controller.
  • Fixed Build 41 popup and DebugScenarios ui appearing overtop BootstrapConnectPopup.
  • Fixed cancellation in ServerWorkshopItemScreen throwing an exception in ConnectToServerState due to GameClient.connection being null.
  • Fixed using the controller X button to "Toggle Vision Info" in the foraging ui.
  • Fixed rendering the post-death ui for split-screen players 3 and 4 in the top half of the screen.
  • Fixed a Lua error pressing the Y button when moving furniture when the player isn't on a square.


    BALANCE
  • Added BedType property to the Pizza-Whirled seats which fixes pizza spawning on them.
  • Added amount of bait items to Fishing UI
  • Added dismantling cameras for scrap/skill points
  • Plastic bags and paper money can now be used as tinder.
  • Doors broken by zombies now give unusable wood instead of planks.
  • Container items now grouped together into their type in the context menu, so you can 'fill all' of a certain container.
  • Players now able to stack and unstack logs on the ground
  • Cars now remember their cruise control setting
  • Breaking vehicle windows now produces broken glass
  • Decrease zed attraction volume of “remove broken glass action"
  • Updated and fixed item categorizations
  • Updated evolvedrecipes.txt and items_food.txt.
  • Removed Cookable:true from the Burger evolved recipe.
  • Added the "|Cooked" flag to Burger ingredients in farming.txt.
  • Updated distributions Lua files
  • Muffins produced by the "Get 6 Muffins" recipe have the name of the ingredient added to the muffins, if any, such as "Apple Muffin".
  • Muffins produced by the "Get 6 Muffins" recipe are marked "Cooked", so the hunger-reduction bonus due to being cooked is applied.
  • Fixed adding a spice to a stale Taco increases boredom and unhappiness.
  • Added new methods to the Food class (to fix the above issue):
    getBoredomChangeUnmodified()
    getEnduranceChangeUnmodified()
    getStressChangeUnmodified()
    getThirstChangeUnmodified()
    getUnhappyChangeUnmodified()
  • Higher level carpentry crates now have more space.
  • Can now move empty composter.
  • Can now move military crates.



    DEBUG
  • Updated Debug context menu.
  • Updated Debug Menu UI.
  • Added Z param to teleport.
  • Added change vehicle skin option to debug.
  • Added Sync for changing color, blood and skin of vehicles.

  • Refactored "Remove Item"-tool UI.

  • Added option to the F11 UI: Disable Welcome message (Works only in debug mode).
  • Added Reload Lua button to main screen (only in debug mode).
  • Added Cheats Panel in debug menu. Updated cheat list (merged in options from Admin and F11 menu).
  • Added fast move cheat (Controls: Arrow keys, Page Up/Down) (Debug and Admin panel).
  • Added Admin context menu options (some options from debug).
  • Added cheat Spawn Key door

  • Added LootZed tool
  • Added LootZed tool cheat (Check what can spawn in a container with what chance)
  • Added remove items tools
  • Added Remove items tools in Debug mode (Option for remove items from container menu and option in Debug UI for remove items in area)
  • Added options to the "[DEBUG] Objects" menu to:
    1) Change a mannequin's script.
    2) Create a Moveable item in the player's inventory for a chosen mannequin script.

  • Changes to the debug Items List UI:
  • Don't recreate the ui each time it is displayed, because it's slow.
  • Keyboard focus is set to the "Type" text-entry box each time the ui is displayed.
  • Pressing the Tab key switches focus between the "Type" and "Name" text-entry boxes when either one has the focus.



    FIXES
  • Fixed the player's head being semi-transparent where hair and beard stubble appears. This also fixes semi-transparency that has always been there around the edges of holes in clothing.
  • Fixed the controller tooltip text in the character-creation profession ui not displaying.
  • Fixed the overly-long delay before changing the volume of a cd player or television when using a controller.
  • Fixed spam messages about CDplayer's invalid world sprite.
  • Fixed the player not running when moving too slowly to sprint.
  • Fixed the character-creation Add Trait button being covered by the controller tooltip text.
  • Fixed placing multiple items locking the items to the first square that is clicked.
  • Fixed controller focus not being set to the "Check back cover" ui.
  • Fixed exploit holding down the Escape key before starting certain actions.
  • Fixed taking damage when walking down stairs while faster-forwarding.
  • Fixed a NullPointerException in InventoryItem.update() when an item's ReplaceOnUseOn refers to an invalid item type.
  • Fixed the post-death ui appearing in the main menu in multiplayer, if the player dies while the main menu is displayed.
  • Fixed use of an undefined variable in SPlantGlobalObject.stateToIsoObject().
  • Fixed buggy player rendering in the in-game map when the player is attacked.
  • Fixed "Decaying Corpse Health Impact" health reduction for "Low" and "High" both being less than "Normal".
  • Fixed some duplications and formatting in MainCreationMethods.lua.
  • Fixed custom Sandbox floats displaying too many decimals in the tooltip.
  • Fixed walls in Fire station in LV remaining cutaway for no reason.
  • Fixed character being able to rest on seats seen through some windows.
  • Fixed siren and light bar shutting off once you get a certain distance away from the vehicle. Now even when you go over 1000 blocks away and come back, the lights and sirens on cars are still going off.
  • Fixed not being able to attach sheet ropes at certain locations.
  • Fixed cars not remembering their cruise control setting.
  • Fixed "Place item on ground" ignoring item's favourite status when placing items.
  • Fixed being able to interact with rain collectors through the wall.
  • Fixed player-built doors inside houses being transparent at any angle of view.
  • Fixed Walkie-Talkies not showing new "equipped" weight when equipped.
  • Fixed Metalwork locker container name being "Crate" in the loot window.
  • Fixed a spawned bowl of pasta or rice not being edible.
  • Fixed Painted Crates becoming white after Pick up / Place down.
  • Fixed Rotten food showing in right click menu as (Fresh) when newly spawned.
  • Fixed Applying Disinfectant to an un-infected wound making that body part immune to infection.
  • Fixed player-built walls cutting away completely when built inside of another building.
  • Fixed typo in AdjacentFreeTileFinder.lua.
  • Fixed "Cake Preparation" not spawning rotten in 6 Months Later scenario.
  • Fixed Dish Towel having option to "dry self" even if char is dry.
  • Fixed Hair/Beard types grow back to their dyed colour, instead of their natural colour.
  • Fixed Coffee / coffee beverage fatigue reduction values not saving on quit / restart.
  • Fixed replacing disassembled floors with dirt tiles above ground level.
  • Fixed clock Size option not being changable while in game.
  • Fixed nil variable in ISWorldObjectContextMenu.doSleepOption() when tired enough to sleep on the ground.
  • Fixed disassmbling floors playing the standing animation instead of crouching.
  • Fixed saved Radio Stations being removed when a radio is removed and reinstalled.
  • Fixed Foundation Makeup requiring a mirror when it already comes with one.
  • Fixed characters not using a Knive that was equipped or in main inventory when crafting while a better Knive was in a nearby container.
  • Fixed ISPaintMenu error when near a placed radio.
  • Fixed weirdness installing and uninstalling radios in vehicles.
  • Fixed NullPointerException in ParameterInside.
  • Fixed Composters not having a container icon and title.
  • Fixed blank VHS Home tapes spawning. They are now replaced with a random Retail VHS when spawning loot.
  • Fixed an occasional exception in ISInventoryPane.sortItemsByTypeAndWeight() caused by a bad item-sorting comparison function.
  • Fixed parts of weather effects not being rendered sometimes. This resulted in some clouds not being rendered at different zoom levels, causing the scene color to change when zooming in/out, for example.
  • Fixed items replaced by their ReplaceOnCooked type not being synced in multiplayer correctly.
  • Fixed Lua error when the mini-map doesn't exist.
  • Fixed jumbo item-atlas textures being drawn the first time models are loaded.
  • Fixed mannequins that spawn in containers being invisible when placing them the first time.
  • Fixed being unable to transfer the same item between containers until a timeout expires, if the first attempt was interrupted. This happened in multiplayer only.
  • Fixed item models being drawn jumbo-sized for one frame when they are still loading, when using the old way of rendering 3D items.
  • Fixed item-atlas textures being drawn in the incorrect position sometimes.
  • Fixed items floating in air or remaining on the ground after removing or placing furniture.
  • Fixed items on furniture being visible through walls. Item alpha is set to match that of the furniture it is placed on.
  • Fixed not setting the keyboard focus on the debug Items List ui the first time it is displayed.
  • Fixed the character-creation profession screen displaying controller icons after activating mods in the New Game ui, when no controller is active.
  • Fixed building Wallframe using two planks but giving three when disassembled
  • Fixed cooking an egg showing the progress bar twice
  • Fixed shirts and other clothing items getting auto-removed from the world when they shouldn't be.
  • Fixed the character-creation profession screen displaying controller icons after activating mods in the New Game ui, when no controller is active.
  • Fixed ISMap.canWrite() and ISMap:canErase() not using the Write and Eraser tags.
  • Fixed support pillars for stairs not being created on the server or other clients.
  • Fixed inability to burn corpses in MP
  • Fixed Millipede and Millepede2 in forageDefinitions.lua both using type=Base.Centipede.
  • Fixed forageSystem.modifyItemDef() incorrect use of _itemDef.type.
  • Fixed forageSystem.removeItemDef() possibly using a nil _itemDef variable when printing a warning.
  • Fixed HumanVisual.naturalBeardColor possibly being uninitialized before being copied in HumanVisual.copyFrom().
  • Fixed OldBrake1 VehicleType being 3 instead of 1.
  • Fixed the "Enable left joystick radial menu" option not being saved.
  • Fixed a Lua error pressing the Toggle Search Mode key before starting a game.
  • Fixed the Toggle Search Mode key getting in the way when the game is paused.
  • Fixed crafted radios getting less maximum range at higher Electricity levels.
  • Fixed crafted Ham Radios weighing 1.5-3 pounds instead of 20.



    AND MORE
    Changes to food and balancing can be read on our forums, since they would have this post hit the character limit.
    https://theindiestone.com/forums/index.php?/topic/54121-4171-released/
May 12, 2022
Project Zomboid - nasKo


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.
Project Zomboid - nasKo


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.
Apr 14, 2022
Project Zomboid - nasKo


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!

Mar 31, 2022
Project Zomboid - nasKo


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:

  • New items and 3D models
  • New foraging discoveries.
  • Many improvements for controller and Steamdeck play
  • Many improvements to the MP experience in areas such as: the sometimes weird vehicle physics, the PvP safety system, the PvP cooldown timer, safehouse bugs, sleeping and radio/VHS sync.


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.

  • New tiles to improve the appearance of existing locations.



  • Some older, and very distinguished, buildings for the richfolk of the area.




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!
  • All animals are defined in lua definition tables, which will allow for maximum modding possibilities: it’s via these definitions that you can essentially adjust animal behaviour.
  • When in their pen farm animals will wander around, ‘emote’ by flapping wings or rootling for food on the ground, sit, rest, lie down etc.
  • Relevant animals can graze grass, which then regrows after an appropriate amount of time –  which can be defined in a new sandbox option.
  • Animals will eat from a trough, which is something you’ll either construct or loot from a farm.

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

  • Animals all have different growth stages – for example calves become cows/bulls, and grow in size. Their growth will be guided by various parameters – like their hunger, thirst, general health and the size of their enclosure.
  • Baby animals will stick by their mother’s side, and even take milk directly from the udder.
  • The bigger the animal size, the more meat it will produce when it is butchered.
  • There will be various breeds in-game – so you could have a “meat breed” (Angus) or a “milk” breed (Holstein) – and maybe even something in between like a Simmental.
  • Growth rates will be realistic, so a cow will take two full years to be at its full size, but this will be modifiable via sandbox options.
  • Cows will generate milk for a certain period after delivering a calf. The more you continue to milk the cow, the more milk you’ll get each day. Leaving a cow with a full udder, however, will cause issues and a decrease in lactation.
  • Sheep grow wool that you can retrieve with a shear, and also have a milking system if you enjoy sheep milk.

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

  • Hens can lay eggs. If a henhouse is present they’ll lay eggs in it, otherwise they’ll do it on the ground. They can be fertilized by a rooster, so if left for a time can hatch out chicks.
  • You will need to shut the door to the henhouse every night, and open it back up every morning, or will you risk visits from Mister Fox – and see the resulting bloodstains to boot.

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.
Mar 14, 2022
Project Zomboid - nasKo
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::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.
  • Fixed split-screen players, except the last, being unable to drive vehicles in multiplayer.
  • Fixed unnecessary pause when starting in debug
Project Zomboid - EnigmaGrey
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.

HOTFIX Thursday, March 10th

Now preparing for a release - so please let us know if anything weird is cropping up out there in server-land.

NEW

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

MODDING

- Forbid mod tiledef file numbers outside the range 100 to 8190. 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.

FIXES

- Fixed split-screen players, except the last, being unable to drive vehicles in multiplayer.
- Fixed unnecessary pause when starting in debug
Project Zomboid - EnigmaGrey
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.
...