159,084 Commits over 4,566 Days - 1.45cph!
Add uploading of signs / sculptures / voicemails to our backend
- simple retry: try 1x per minute, give up after 5x attempts
Apply the same hierarchy flattening from S2P on all prefabs in PrefabPreProcess (only at bundle time, skipped in editor by default)
Fix some edge cases in the hierarchy flattening logic
▍ ▍▉▉█▇▌▉▄▌▍▍▉▌▆▍█▇▍█▇▋▍ ▌▍ ▅▅▌▌
▆ ▆▆▊ ▇█ ▌▄▍▉▆▍█▆ ▍▇▊▋ ▊▍▅
▋ ▄▉▇▍ ▊▇▉▌▅ ▉▅▋ ▊▆ ▋▆▅ ▊▉▄▇▆▇▍ ▋▉▊▅▆▉▉ ▍▅▆▋ ▇▉ ██▊▊ ▋▅█▇ ▆▉ ▍▇▇▅ ▍█ ▄█▋ ▅ █▆▄▋▇▉
Improved panel unregistration performance
Lets try ignoring UV adjustments in surface.DrawTexturedRectUV
* So the function's UV arguments work like expected, without the "sub pixel adjustment" stuff, which seems unnecessary?
* Only the Lua binding is affected
Refine DImage subrect support and KeepAspect features
Minor cleanups
Remove leftover debug panel from Paint tool, KeepAspect the icons
▉▊▍▊▇▊ ▋█▌▆▊▍▆▉▊ ▋▌▅██ ▍ ▇▍▉▅▉▊ ▊▍▌▊█▊▍█▇▋▄▅▍▉█▅▆▆▇▉ █▆ ▇█▉▅ ▌█▆▋▇▉▋ ▍▅▉ ▄▊▆ ▆▇▅▆▄▋▄ ▉▌▉▅▊▇▌ ▍▆ █▉ ▇▄▆▌ █▆ ▊▇▉▇ ▍█▌ ▅▊▄ ▄▆▇▍▇▊ █▊▍▍▄▄▄ ▊▋▋ ▊▄ ▊▉▍▇▌▌ ▉▊▆ ▋▉█▊▄▍▇▋▋▌ █▆▊▉▉▍▉ ▆▊▆ ▌▉▆▋▌█▅▄ ▊██▇▊ █▋ ▄█▇▍ ▄▋▌▄▌▅▋ ▄▍██▆ ▊▍▇▇▅ ▇▊▋▊▌▇▄▆▇▄▉▅
merge from fix_cookable_created_alloc -> main
Fix ItemModCookable allocating a new delegate every time an item is created
█ ▌▋█▊▇ ▄█ ▅▄▆▆▄ ██▍▇ █▆▅▅▌▍█ ▉▋▉▍▆▍█ ▌▆ ▋▇▅▋▍▄▉▍▌▋▊ ▄▄▉▇▊▉▋ ▌▌ ▉▆▉▍▆▌▍▌ ▅▆ ▅▊▇▍▇▄▇▆▇ ▇▋▅▇▅▇▇▉ ▅▅▇▋▆ ▉▄▊ ▉▋▅█▅▅▊▌▉▉ ▍▊▄▅▆▇▇██▄ █▌▇▊▌▆▋▊▌▉▍▄▇▆▌▆▅▋▅▆▅▇▋▉▇▋ █▍▌▄▇▋▄▍▆▊ ▇ ▉▉▌█▍ ▍▄▊ ▍▇▋▇▄▅▉ ▆▆ ▍▄▄▌ ▇▅▌ ▋▌▌▅▅ ▍▇▄▅▌▊▅▇▋▅▇ ▋▌▇▇▋▉▌ ▌▌ ▉▌▄▆▊▉▆ ▇▄ ▊▅ ▅▍▉▍▍▋▆▅▉█▍█ ▋▊▇▍▍▋▄ ▅▍▍▆▉▄▇▌▉▇▇▋▆▄▄▆▋▆▇█▄▇▋ ▆█▉ ▇▇▉▆▉ ▇▊▍▉▅▅ ▊▍ ▌▉▍▊▋ ▅▊▋ █▊█▉ ▊▉▇▄▌▅▋▌ ▄▋ ▍▆▆▋ ▄▅▆▉▌ ▄▅ ▇▉ ▌▄▊ ▍▄▋▌▍▊▄ ▋▍▋ ▇▍▋ ▄█▋▍▅ ▊▊█▄ ▄██▌▌▇█ ▇▄█▍▅▆▊
Fixed CommunityEntity.AllUi list accumulating endlessly and only clearing when reconnecting to a server; it now validates the list and removes null entries on panel destruction
Added admin-only `communityentity.print_alluis` for debugging, codegen
Before: https://files.facepunch.com/raul/2026/October/13_20-59-InsistentSiamesecat.mp4
After: https://files.facepunch.com/raul/2026/October/13_21-14-GlamorousBalloonfish.mp4
first pass on restore tool
- old tattoos that are faded can be painted with this tool to restore their colour to full without needing to be fully redrawn
Fix some weird/stuck crosshairs on the rear turret
another fix for third person crouch anim playing when dropping off ledges
S2P tropical island 1, 2, 3 and 4.
Removed the coconuts from the big palm trees. Its really difficult to see the coconuts + the taller trees visually sway a lot more and currently the coconuts do not sway with the tree so it looks terrible.
merge from hitchtrough_save_fix
▇▇▊▉▌▅███▄ ▇▇██▆▆▍▍ ▄▆▄▊▅█ ▄▅▍█▉ ▍█▋▋▊▆▅▊▊ ▆▇ ▊▄█▇▌▉ ▌▊▅██▅▇▆ ▄ ▋ ▆▆▉ ▋▆▄▌█ ▊▊▉▌▆▅▊▇▋ ▊▊▄▅▋▉ ▉▆ ▇▇▄▉▇▇▉▉█▌█▅ █▅▉▅▍▋▆▍ ▄ █▄▌▄▇ ▋▉ ▍▊█▊▍█ ▌▋▋▍▇▆▄▆▋▆▅▆▆ █▄▌▆▍ ▇▉▆ ▌▆▆█▍▊▄▉▌█▌▅▄▇▌█▍ █▍▍▋▋▌▋ ▌▄▆█▅▇█▆ ▇▆▍█▉▉ ▇▊ ▍ ▊▌▋▇▄▆▅▅█ ▇▉█▊█▅█▉ ▉▌▇ ▉█▉▍▉▋▋▇█▌█▄▆▍▄▌▄▇▋▌▄▆▊▄▍▌▋▋▋▍▄▍▉▇█▅▇▌▋▇▉▌▋▊▌█▆▊█▇█▅▌▄▆▆▌█▍▋▍▍▉█▌▉▉▌▉▌█▅▊█▇
merge from buildingprivilege_cache
Fixed blocks registering with a 0 net id on the server when placed with the building plan
Make sure to also rebuild plant info when new quality data comes in via rpc without a network update
replaced soundpooling for a readonly struct modulator, avoids all allocs and doesn't change any of the usage
Auto adjust jobs thread count when changing CPU affinity
added dryfire wip anims, stock updates, set up animator to correctly choose correct fire and dryfire anims based on state
fixed jenkinsfile using wrong param name for slack channels
merge from sendmouseevents_optim
tattoo fixes
- clamp tattoo brush size 1.0-5.0, doesnt use painting convar
- zoom scaling clamp, so you cant get as far out but can also go closer than usual for fine detail
- brushes now scale independent of zoom in tattooing, this does make performance a little worse, but fixes when the paint stamp doesnt cover enough of the uv and becomes spotty. WIP still
- uv buffer now samples some of the uv pixels around the current target to try to smooth out and match seams where the uv resolutions dont match (like where the head meets torso etc..)
Optimized PreUpdate.SendMouseEvents by clearing the main camera event mask, nothing uses OnMouse events
Saves up to 0.08ms a frame in builds
▊▍▊▉▋▆▊ ▆▉▉█▌█ ▌▆▆▇ ▇▌▇█▍▊█ ▆▊▅
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