255,019 Commits over 3,990 Days - 2.66cph!
merge from coarse_grid_bounds_fix
pad CoarseQueryGrid bounds to handle offshore monuments properly
- world size is not inclusive of these, just terrain
Fix client server compile errors
Fix potential animation invalid state (animation stopped, but still playing)
Fix tiger potentially getting stuck out of navmesh
Pressing Attack2 will also cancel reload
Merge: from parallel_validatemove
* Modifies Full Server Demo recording to grab more data + timestamps per packet
* Adds editor-only "DemoServer" server backend that we can use in editor to play back full server demos. Switch editor to ServerMode and put path in GameSetup object
* New server-side batch-update of players routine - disabled by default as it's not validated yet. Controlled by `server.UsePlayerUpdateJobs`
* Added GamePhysics batch versions of OverlapCapsule and OverlapSphere
* Couple unit tests to check Water's batch queries against non-batched versions
Tests: A lot of server demos recorded and played back in the editor doing core activities (looting, harvesting, interacting). Made sure standalone server and client builds locally.
Merge: from main
Tests: none, no conflicts
DeathmatchDamageInfo defaults
Gluon gun uses damage proportional to how much time has actually passed relative to interval
Buff hornet projectile speed
Crank up gluon beam damage, do first inflict tick immediately
v_m700: added speed_reload and speed_ironsights float parameters
mauritia flexuosa - rest of the models and prefabs
v_mp5: added speed_reload and speed_ironsights float parameters
Discard ShootEffects if the player's already dead
Implement explicit damage types - crush, bullet, explosion, generic - so we can ragdoll and gib correctly
merge from ioentity_optims2
honeycomb world model
Meshlod, materials and textures
updated existing honeycomb prefabs accordingly
Smooth out initial tiger rotation when preparing to leap
RF broadcaster and receiver flag networking
merge from jungle_foliage
GenerateMipMaps shouldn't generate mips smaller than 1x1 (which might happen on textures with weird dimensions, e.g. 3x3)
UI: support border-radius shorthand transitions
v_spaghellim4: also change the condition to cycle-based if using b_reload while b_empty=true
bee grenade vm
- added new admire
- tweaked throw aim anim
- new animator
- set viewmodel prefab to use new animator
Fixed a crash when spawning certain vehicles
64bit versions of compile tools say that they are 64bit
So it's more clear what version is being used from logs alone
Merged Pull Requests
* TTT: Change holdtypes for consistency with viewmodels
* TTT: clarify Health Station usage hint text
* TTT: Update localization files
* Fixed tool sorting when some tools are missing localization strings
* Micro-optimize Workshop Mount VGUI
Rework how LZMA decompression works for BSP files
The existing code was awful. The new one is less wasteful.
Make util.TableToJSON output whole numbers without decimal point
Minor cleanups
Fixes towards MP3s hanging the game on first playback
* Fixed MP3s recaching 2 times sometimes in a row
* Fixed cache size not being able to exceed 65k
* Make MP3s skip the ID3 data immediately on cache, not on first playback. This makes loading a bit slower per-file, but makes it so we don't need to cache 400KB of useless data per MP3
* Increased amount of cached data for MP3s to satiate initial burst of data access by BASS (from 16K to 96k) This was preventing async load of the entire file
Merged Pull Requests
* Refactor sandbox hints
* Remove angular-ui, jquery-ui, jquery-color
v_spaghellim4: added speed_reload and speed_ironsights float parameters + make b_reload timings based on cycle progress instead of absolute time (which unfortunately does not get scaled by the speed node even though blend times do...?!)
https://files.facepunch.com/maxlebled/1b2011b1/2025-02-20%2014-26-16.mp4
Merge: from main
Tests: none
v_usp: added speed_reload and speed_ironsights float parameters
Clean: ServerDemo - fix up names of entities that get reported via errors
Tests: played back procgen demo
Admin playfund user list
Add Grid component
Fix PageAlert font size
Add StatCard component
User page has a monetization section
Inventory section in user profile
Use the payment rules
Move "edit" options to always be at the lower left
Added a bee swarm ai specific convar to disable them
- Made new convar to ensure AI weapons will also listen to AI settings 'ConVar.AI.effectaiweapons'
- Bee Swarm AI now listens to ignore players and think settings if effect ai weapons is enabled (off by default)
Storage monitor only network flags
Start to preemptively do some optimisation work on BeeSwarms
Bugfix: ServerDemoPlayer - invert the error reporting logic for DestroyEntity
Previously, we considered it an error if we couldn't find an entity that demo stream tried to destroy. But, if the server behaves correctly, then it should be already destroyed - so now we report an error when we do find an entity.
Tests: played back the complex demo from procgen - errors still present, but harmless
Bee Swarm:
- Increased particle size
- If a player has managed to get far away from somehow then give up
Setup Beeswarm death screen info
Ensure beehive natural colliders are synced up across client + server
added concrete_castinsitu_b material
https://sbox.game/facepunch/concretecastinsitub
Lights and ceiling lights network optims
Only network the flags, and only when necessary
Show scoreboard ping in ms
Update: FullServerDemo - wrap transient entity snapshotting in try-catch
- Also correctly clean up NetWrite
I've checked a bunch of code related to saving, and I'm 100% certain there are landmines that I haven't spotted. This way I've neutered the danger of recording the demo, and I'll be fixing up those cases as we discover them in the wild.
Tests: recorded a demo on Craggy
Fixed weird natural hive placement on oak_e
Update first_person_arms_adjustments.vsubgrph
v_m4a1: added speed_reload and speed_ironsights float parameters
https://files.facepunch.com/maxlebled/1b2011b1/2025-02-20%2013-13-54.mp4
Bugfix: FullServerDemo - use save for disk instead of network when snapshotting transient entities
- Also couple safety checks for BasePlayer.Save, since now I'm triggering a path that usually isn't triggered for a class of entities (NPCs)
Tests: while recording a server demo, on a procgen map in a local server did all basic activities (looting, harvesting, crafting and building) + drove a bike and attacked a ScientistNPC at outpost. Then was able to play back both demo chunks.
Tests: on local standalone server and procgen world, went to pier monument and descended to find aggressive NPCs - no more exceptions in server log