144,768 Commits over 4,413 Days - 1.37cph!
Added ESPCanvas nameplate distance-based auto sizing
https://files.facepunch.com/raul/1b1711b1/17_01-03-SpotlessCowbird.mp4
Fix texture analyzer incorrectly flagging assets as having compression disabled that are NPOT + mipmaps that are part of texture atlases
Fix primitive servers logging an error when trying to spawn sharks in divesites since the divesite prefabs use empty prefabs to control shark spawn chances
Finer scale
Flip degree min/max
https://files.facepunch.com/Rin/2026/05/hsxOAUTTY4.png
Tool crate loot pool. Double spawn
Lake only spawns
https://files.facepunch.com/Rin/2026/05/Unity_qRVXOzMqS6.mp4
Fixed incomplete &/or cancelled map downloads writing empty maps to disk, causing reconnecting to break
Download the map as a temporary file in the same folder then rename it once complete
Additional cleanup on map download failure / cancellation
Before: https://files.facepunch.com/raul/1b1611b1/16_16-43-LateGallinule.mp4
After: https://files.facepunch.com/raul/1b1611b1/16_16-52-SwelteringDunnart.mp4
fix missing shader parameter used by post process effects
No allocations when running the flood fill when rebuilding circuits
Updated all SimpleLight prefabs to use the HasPower flag instead of On
Updated cinematic controller, fixed existed talking anims and added new sets (generic and host)
Simple light don't switch the ON flag anymore, we can just use HasPower and save a setflag when turning a light on/off (they're batched but that saves some overhead)
Added a max flag flip per tick per circuit budget too (too many flag changes can stall the client)
Circuit budgeting: all circuits share a 0.25ms budget per frame to evaluate. When the budget is depleted mid circuit, we save where we stopped and continue later. The starting circuit is never the same so a single circuit can't eat the whole budget and clog everything
Also moved the drain pass to the 1hz battery tick, it doesnt have to run on every tick
Optimised the evaluation pass. we now starts from the dirty components specifically instead of evaluating the entire circuit from start to finish
When evaluating, if a component output didnt change, we stop there
added hanging ivy (hedera helix variegata) models, materials, textures. created 3 decor plant variants
FPV drone UI WIP & related files.
switch out batched packet send storage for HashSet to avoid multiple sends from an entity within a circuit tick
Use Azure Artifact Signing
▅ ▄▆▆▊█▆ ▉▍▄▅▋ ▊▇▌ ▊▊▆▋▄▊▅▅▌ ▆██▆▍
Another consistency pass for resource files
* Remove the word "Launcher" from launcher file descriptions - I thought task manager would show "Product Name" field, not "File description" field.
* Make all resource files provide a single language ID (was previously US or UK english, sometimes German and Canadian English?)
* Updated tool icon slightly
* Add icons & version info to all compiled .exe files by our build system
Build 64bit gmad/publish, add icons/version, fix some compile warnings
Disable Steam Error Reporting as it is apparently EOL'd by Steam
* Crash dumps are now generated by the game, not Steam
* Moved crash dumps to crashes/ folder.
Resolve 64bit tools not loading
Build Hammer 64bit
Fixed a bunch of Hammer 64bit runtime crashes
merge from /main/hackweek_parented_ddraw
merge from /main/hackweek_parented_ddraw
Assigning the duration of a ddraw shape / text to -1 will now make them never expire, unless user / server runs ddraw.clear, ddraw.clearid or client reconnects
underwater post effect initial
▊ ▍▉▄▌█ ██▄▅█▄▅▌▄▊▉▇▄▋ █▆▄█▌▍▌▇▇▆ ▌▆ ▄▉▆▉▉ ▉▋▇▇▅ ▉▉ ▊▉▊▊▄ ▆▌▉▅ ▋▊█ ▌▄▆▌▊ ▄▅▋▇▆▍▉▊▉▅▄▉▋ ▇▇▊▉▌▆▇▆▇▄ █▆▅▆▌▌▊ █▆▍▋▆▄▋▅█ ▊▅ ▍▉▅▋▍█▇▇▋▇ ▆▍██▋▄▇ ▅▄▊▊ ▌▌▊▋▉▄▅▆▍▇▇▊
▅ ▊▌▌▇▉ ▄▍▌▌▋▆█▇ ▇▄▅▋ ▄▇▇▍▍ ▅▋▇ ▍▋▄██ ▄▊▉▍▉▊▌
Kamikaze FPV Drone - Added gibs
Added optional ddraw shape / text identifiers (so they can be individually cleared with the new ddraw.clearid command)
https://files.facepunch.com/raul/1b1511b1/15_19-42-FixedSnowdog.mp4
updated lr300 sprint pose to anim loop
bone knife deploy animation update
illuminated pressure pad;
- Gibs added
- fixed bug on pad stacking on itself
Update(tests): even more edge case unit tests
- escaped double quotes
- split escaped double quotes
Tests: ran tests
▌▋▌▋▌▌ ▉▍▊▅▇█▉▅▇▋▍▉▋█▄▉▆▊ ▋▍ ▇▉▇ ▇▋▇ ▊▆█▄█▄
▇█▅▉▇▍ ▄█▉▋▊▊▌▊▊▅▉▌▋ ▄▌▆▄ ▆▊▆ ▉▍▄▉▇▅▆ ▆▄▄▉ ▇▋▉▅▌ ▊▆▇▄▉█ ▌▋ █▅█▇ ▆▄▇▌▌▅█▅ █▍ ▇▉█▉▉▊ ▉▅▅▆▍▄▉ ▌▍▊▋ ▄▄ ▇▅▆▊▍▍
Update(tests): add a couple more edge case unit tests
- torn nested string
- single quotes nested
- torn single quote nested
- Added a whitespace to first nested string in all tests to validate trimming
Tests: ran unit tests
Salvaged icepick anim update
- New PoolCueViewModel setup - strip off rotational changes
- Update viewmodel rotation based on mountable
- New setup for the viewmodel
Ensure mountable is killed (again)
Add(tests): add StringExtensionTests
Currently only covers SplitQuotesStrings. Baseline allocs - 33allocs, 1.8KB
Tests: ran tests
illuminated pressure pad;
- Lods created
- Prefab updated
Fixed transforms on playground assets and prefabbed up
Optim: fully remove function temporary
Saves 1 alloc (63 allocs, 3.9KB)
Tests: ran tests