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.
Feb 25, 2022
Project Zomboid - lemmy101
Server operators will find .zip files with their server backups, should they need to revert. 5 cycling incremental backups each server run, and a special backup per version change. It can also be configured to backup periodically while the server is running, but you may expect a few seconds of lag if you do this.

This update pushes 41.66 to the stable branch.

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

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


Changes since 41.66 Unstable:


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

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

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

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

Feb 3, 2022
Project Zomboid - nasKo
Hey all, here’s a general update from TIS Towers on various things. We do hope this finds y’all well.

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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



Due to all this, in B42 it currently feels safe to assume that zooming out will have significantly lower performance penalty – and that higher resolutions will become more feasible for at least mid-range GPUs, and possibly lower end GPUs too.
 
Variable Chunk Heights
In the game, since our very earliest builds, we’ve been limited to 8 storey buildings. This was primarily because the height was global, and increasing this would incur a penalty to performance across the entire map even if that extra space was not used.

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


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

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

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

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

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

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

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

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

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

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

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

Light Propagation
We have also been updating our lighting system.

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

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

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

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

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

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

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

 

OTHER BIZNESS
  • The map team continue their awesomeness, with lots of map polish currently going into the current Knox Event map – including electricity pylons and cool new locations like this.
  • The Noiseworks gang continue with their improvements of the PZ soundscape, with their current mission being to provide background sounds that provide different ambiance for times when the electricity and water are on, for when they are off, and an audible change to signal the exact moment when the turn-off happens in-game.
  • Currently awaiting integration are also 14 new music CDs, 14 movie VHS tapes, 20 new TV show tapes and 44 home recorded tapes too. You will be delighted to hear that these include several new sequels in the much-lauded Dog Goblin horror franchise. Our thanks to Brat Pen for these.
  • The curator of the online PZ map project, Blindcoder, wants to let you know that he’s on the case with updates – and apologises for delays caused by Covid and irl fun/games. His blog here. Our thanks to him for all his amazing work also.

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

...