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

17 Minutes Ago
merge from maintainables_fixes
18 Minutes Ago
frog fixes
25 Minutes Ago
russian roulette; - optim pass on game models - updated prefab table collision rotation
26 Minutes Ago
Few more pipe acess fixes / prevented trees from spawning in the middle of the pipes / smoother terrain transition near the pipes
51 Minutes Ago
merge from sleeper_safezone_fix_2
53 Minutes Ago
Fixed typo causing sleepers to never be killed in safezones after server restart, regression from last month
1 Hour Ago
Paintball Gun - added ammo to LOD3 to reduce popping
1 Hour Ago
fixed blowpipe world model material order so it can be converted to meshLOD
1 Hour Ago
russian roulette; - textures updated
2 Hours Ago
merge from ddraw_demo_fix
2 Hours Ago
Fixed ddraw objects showing up in demos even if ddraw.hideddrawduringdemo is true Before: https://files.facepunch.com/raul/2026/August/31_13-18-FirebrickDromedary.mp4 After: https://files.facepunch.com/raul/2026/August/31_13-19-GrizzledSteer.mp4
3 Hours Ago
Paintball Gun - replaced rigged mesh in worldmodel with static one, updated hopper shader to fix self sorting issues
3 Hours Ago
Disabled skin viewer viewmodel inspection for the crystal AR, SSR just cant work in the skin viewer so it looked terrible
3 Hours Ago
merge from main
4 Hours Ago
Ornate horse mask WM LOD fix
5 Hours Ago
Fix a scale override on large rig monument blocker, causing collision issues Add a few missing vent cages S2P large and small oilrig
5 Hours Ago
WaterStandardCore light intensity correction
Rin
5 Hours Ago
Reduce radius of all new crate gib sounds Apply elite-crate-gib sound to crate_tools
Today
Setup oxygen RRP postfx volume and overlay
Today
Merge from hands_preview_workflow (includes changes from main)
Today
Add back filename check
Today
Cleaned up some edge cases Added a toggle to the animation inspector itself and added a text readout of what meshes were detected and loaded
Today
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
Today
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)
Today
Merge from heavy_helmet_audio
Today
In game player voices are now also muffled by heavy plate helmet Increased volume reduction (was 2400, now 1800)
Today
Merge from main
Today
Merge from glass_ar
Today
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
Yesterday
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
Yesterday
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