159,048 Commits over 4,566 Days - 1.45cph!
▊▍▊▉▋▆▊ ▆▉▉█▌█ ▌▆▆▇ ▇▌▇█▍▊█ ▆▊▅
Initial setup of different ADS and recoil settings for weapon stock being deployed/collapsed
merge from analytics_biofuel_generator
Add resource consumption/production events for the biofuel generator
pt_boat_rewrite -> turret_viewmodels
main -> pt_boat_turret_rewrite
Only send turret targets rather than every single turret movement
We are effectively predicting the turret movement on the client with the server reconcilling it
1.83 -> 0.20 aim messages/s per idle turret
~46 -> ~7 B/s per turret per player
On a 122 player server: roughly ~105 KB/s less outbound (~9GB a day). 6% reduction of all outbound game data
first pass on tattoo layering
- 2 layers, 1 "base" layer which is fixed onto the player model, 1 which is edited during a painting session
- tattoo compositor merges the editing layer onto the base layer when exiting the menu or saving
- fade is applied to base layer, and baked into the png when merging downwards
- rads add fade to the base layer visually with a parameter, which is only baked in during a merge
- reworked to accomodate a separate player sending the tattoo edits to the other for saving (bc tattoo chair eventually)
- moved more code to serverside to allow for direct painting communication between 2 clients
Refactor and optimize LookAtIOEnt, avoid various allocs when wiring or updating battery info, avoid physics query every frame for turret interference
merge from gunfiring_optims
Fixed holding a gun searching the whole inventory every frame for reload ammo types
Holding a gun with a full inventory: 0.06ms -> ~0.01ms
Initial pass, helper scene/player model guide prefab for easier balancing
merge from hackable_crate_icon
Updated hackable crate map icon
merge from gunfiring_optims
Fixed issues from the far shot and shell replay changes
Wallpaper health was included with every building block, even those without wallpaper
Saves 10 B per building block
Optimize LookAtPlant and LookAtPlanter, only rebuild if data changed
Stop muzzle flash light casting any shadows past 60 meters cause it's wasteful
Added MaxShadowDistance to LightLOD, default 0 so existing lights aren't changed
Fix head jitter when playing turn in place anims
Pack the tree billboard lists sent to joining players
Each cell now sends its prefabs once, ids as deltas from the previous tree and positions as raw halves instead of a nested message per tree
~30 -> ~16 bytes per tree, roughly 1.8 MB -> 0.9 MB per player join on a full map
▍ ▄▍▉▆▌ ▌██▉ ▊▌▍▉▇▉▋█▌▍▉▄▄▅▌▇█▄▌▍▌▇
▋ ▆▋▇▉▊▅█ ▊▇▆▆▋█▅▋▆ ▊▊▉ ▋▊▄▄▇▉▆▆ ▅▄ ▊▌▍▋ ▍▇ ▉▉█▇▄▅▆▉ ▌▅▄▇█ ▇▋▄ ▍▉▇ ▅▆▋▄▄▇▌▇▉ ▋█▆▄▉▌▆▊▆▆▉ ▊█▉▅▆▉ ▌▌▋▇ ▉ ▌▇▇ ▋▄▋▉▇▄
Reviewed the 3P gun effects we spawn for distant shots:
- Muzzle particles don't emit past 60m anymore, you only get the muzzle light and the sound
- Shells aren't spawned past 15m
Unchanged when using scopes and binoculars, the distances are stretched based on zoom scale
Item icon, delete some unused uzi fbx files at the root of the assets folder
merge from snowmobile_wheel_fix
Fixed snowmobile wheels jittering at standstill due to physics noise
Before: https://files.facepunch.com/raul/2026/October/13_14-12-FrailCobra.mp4
After: https://files.facepunch.com/raul/2026/October/13_14-14-RedBlacknorwegianelkhound.mp4
Send animal look direction in an RPC rather than with SendNetworkUpdate
Animals with look animators were running network updates crazy often rather than just sending the look over
This was especially bad with cows, wolfs, sheep and bulls
Worst offender is cow at ~144 bytes per look update (network update).
~350 B/s per cow per player -> ~60 B/s
Set all the gun firing effects warmed up amount accordingly
Estimated +21MB vs main, still around -29MB overall after removing the 3900 useless thrown projectiles
Release pad run/crouch toggles when keyboard/mouse is used, so a pad latch can't carry into keyboard play
Stop SpaceLR and M15 mags sticking to the bone
Gun attack effects can now be recycled before their tail sound finishes, means we only have to warm up half the amount we'd need to
Skip the gamepad vehicle action set lookup when no Steam Input controller is active
Only send waterwheel network updates when its actually changed (at low speed)
Saves ~76 B per skipped update per nearby player
Clear potential stale gamepad inventory cursors in edit mode
Added replayInPlace to EffectRecycle, lets us flag effects that can be replayed in place instead of popping and retiring a pooled copy every time
Applied to AK first and 3rd person shell eject effects for now, ~0.13ms -> ~0.04ms per shot
Also means we'll only have to prewarm a handful of shell particle prefabs for all the guns
Adding dweller mace viewmodel rig