141,810 Commits over 4,505 Days - 1.31cph!

14 Minutes Ago
Proof of concept of an automated editor utility that inserts the viewmodel hands mesh into the animation inspector preview window if no hands mesh is present Allows us to still use the animation preview window once the hand mesh has been removed from the rig file Uses some naming semantics to try and resolve what the actual mesh that should be displayed should be, this is probably where we'll feel some pain for this system If the animation file ends in _anim it will check for a file ending in _rig, then fall back to looking for a file without the _anim suffix So v_bow_anims.fbx will look for v_bow_rig.fbx, failing that it will look for v_bow.fbx The preview window will then load that fbx and the hands model if needed, combine them and feed it into the preview window
1 Hour Ago
Added new ViewmodelClothingRandomiser component Allows us to mirror the randomisation applied to a Wearable to it's viewmodel in case that randomisation affects the arms Component has a groups array like the Random section of the Wearable, when used the group count needs to match (as we'll just copy over which "group" was activated)
4 Hours Ago
Merge from heavy_helmet_audio
4 Hours Ago
In game player voices are now also muffled by heavy plate helmet Increased volume reduction (was 2400, now 1800)
5 Hours Ago
Merge from main
5 Hours Ago
Merge from glass_ar
5 Hours Ago
Add new HideLods and ShowLods animation events, same as Show/Hide but will iterate over lods 0-4 of the object provided eg. Called with w_ar_glass_mag_full_LOD0, this will also show/hide LOD0,1,2,3 if they exist All showing/hiding events now uses a lazily loaded cached renderer list so we pay slightly more the first time an animation event is fired but subsequent calls are faster and allocation free (was allocating 40b each animation event) Updated glass ak reload to use new events
Today
Merge from deepsea_terrain_everywhere
Today
Swap the ocean colour as well
Today
Animal AO caps: croc/stag/bears/panther/shark/wolf/chicken -> 1024/512, a further 17.5MB VRAM saved
Today
Clothing AO pass: capped 57 maps 2048 -> 512/1024, ~120MB VRAM saved with no visual difference also hooked up Cocoknight legs/torso AO which was never bound to its materials
Today
merge from automated_testing
Today
Reduce network range of glass ak Delete unused anim event Switch drop mag particle to use LOD1 (already has RW enabled) Enable custom local folder on the animation events so the build doesnt change the path, mag drop works Testlist, all tests pass
Today
Split MinidumpUploader into multiple .cs files as it got a little unwieldy
Made the pipe hole mesh smaller and tweaked anchor setup to prevent terrain gaps
Today
merge from main
Today
Improvements
Today
Merge from main
Today
Medieval AK gem material tweak: fixed refraction scale 75cm -> 2cm, corundum IOR, proper transmittance - reads as gemstone instead of grey glass https://files.facepunch.com/pilgrim/2026/August/30_10-00-InsubstantialManta.mp4
Today
Medieval AK worldmodel: baked 6 materials / 3 texture sets down to one 1024 atlas material 6 draws -> 1 per LOD; re-UV'd mesh, rebuilt LOD chain, gems baked opaque arguably looks better than before for the gems especially as i can't justify 6 materials just for a world model of this scale. https://files.facepunch.com/pilgrim/2026/August/30_09-27-CoralBighornedsheep.mp4
Yesterday
flamethrower world model optimisation combined the two parts into one mesh per LOD in engine, converted to a MeshLOD renderers 6 -> 1, highlight draws 2 -> 1, culls at 35m, triangles unchanged
Yesterday
assault rifle world model optimisation - combined the 4 part FBXs into one model and converted the LOD group to a MeshLOD - renderers 12 -> 1, highlight draws 4 -> 1, triangles unchanged, culls at 35m - combined the ak47u's 4 part FBXs and the medieval's rifle+mag into single models - converted the ak47u, medieval and jungle world models from LOD groups to MeshLODs - removed the medieval's 23.6k tri LOD0 - its chain is now 13k/5.3k/2.1k - renderers: ak47u 12 -> 1, medieval 8 -> 1, jungle 3 -> 1; highlight draws all down to 1
Yesterday
boat building station optimisation its 7 buoys were embedded pre-merge copies of the ocean wreck buoy optimisation i did on changeset 162514 - replaced their 280 seaweed/mussel renderers with the buoy merge's existing combined meshes combined the remaining seaweed clumps in the station and platform prefabs (6 -> 1 and 5 -> 1) with wind origins baked into UV2 none of the seaweed was ever batching at runtime renderers 340 -> 65, prefab 1.4mb -> 296kb, seaweed is now 9 draw calls instead of 263!
Yesterday
satellite crash remains optimisation combined the 32 loose debris pieces into a single mesh with a MeshLOD - shadows now turn off past 25m for these, and it culls at 100m (previously it drew at every distance) converted the dish from a LODGroup to a RendererLOD with the same switch distances, and zeroed the LOD child offsets so it collapses to a single renderer at runtime both the dish and debris now register as occludees, so terrain and buildings can occlusion cull them - the LODGroup never could renderers 44 -> 13, debris draw calls 32 -> 1
Yesterday
Improve navmesh doors perf, doors now remember which polys are theirs instead of searching the navmesh on every open/close
Yesterday
Reduce network overhead of powered igniter, tesla coil and strobe lights Every Hurt broadcasts a full entity update, self damage is now applied every so often to reduce overhead (time to die unchanged)
Yesterday
merge from main
Yesterday
merge from improved_event_saveloading
Yesterday
Fix all non-puzzle crate and barrels spawns being set to never respawn on both oil rigs (happened because "Process" context menu messes them up) S2P
Yesterday
merge from main
Yesterday
Standardize navmesh door benchmark to follow same conventions as agent path following benchmark
Yesterday
merge from monument_blocker_explosive_ammo_fix
Yesterday
Fix explosive ammo not dealing any damage to monument blockers
Yesterday
merge from skin_pooling_fix
Yesterday
Fix pooling bug causing random skins to appear on deployables
Yesterday
merge from glass_ar
Yesterday
Fix siege towers doors, better behaviour for NPCs when door is slammed on them
Yesterday
fix annoying high freq metal clink in one heavy plate footstep
Yesterday
tweak gib phys materials on some monument blockers so they play better destruction sounds add thin metal destruction sound for trolley and vent cage gib stages
Yesterday
flashlight refresh sounds
2 Days Ago
large medkit sounds
2 Days Ago
heavy plate armor movement sounds
2 Days Ago
loot crate refresh gib sounds
2 Days Ago
glass ak sounds
2 Days Ago
slightly improved the quality of the vending machine texture & improved the cable faceting. Re-implemented the internal shadow box to fake the interior depth but this time merged it to the vending machine geometry, reducing a draw, and also allows me to change the culling mode on the vending machine material from 'off' to 'Back'. This means that the Vending machine no longer renders every triangle twice. This would have also affected the gibs too that inherit the same material.
2 Days Ago
Rewrite some navmesh door bug repro test that passed even without its fix
2 Days Ago
some additonal settings to carry over
2 Days Ago
chinook locked crate optimisation crates + cage combined into one mesh with a single MeshLOD (1/5/15/25, cull 150) chainlink merged into one mesh renderers 16 > 9 LOD components 11 > 4 objects 48 > 40 draw calls 10 > 4 up close, 3 past 20m fence tris 1,000 > 10 tris at 25m 4,064 > 1,032
2 Days Ago
merge from render_pipeline_testing
2 Days Ago
oops client guard