313 Commits over 730 Days - 0.02cph!
Merge: from mt_snapshot_saving
- Bugfix for exception when saving ApartmentRooms in Jobs 4 mode
Tests: rented a room in Jobs 4 mode, verified with debugger that code was hit and no exception produced
Merge: from benchmark_fixes
- fixes all-bar-one NREs happening when running `benchmark` command
Tests: ran benchmark in editor
Merge: from mt_snapshot_saving
- Bugfix for invalid-api exception when trying to save attackheli turret with ammo/gun
Tests: spawned one, loaded it up and shot all while in Jobs 4 mode
Merge: from fix_skipinit_error
- Buildfix(editor) - replace unsupported intrinsic
Tests: no errors in editor on script compile, checked asm
Merge: from pool_leak_experiments
- Optim: replace FuzzyPool with LPRQ segment - it can be up to 20% faster and doesn't leak/spill sporadically
Tests: unit + perf tests, loaded 2.5k procgen map, checked print_memory - no spills
Update(editor): SaveViewer - add a size check when loading a save
- also emit what was the last prefab loaded (if there was one) to help track down protobuf/save without save protocol update
Tests: used to load a borked save, didn't get stuck in an infinite loop
Merge: from fix_app_turretcontrol
- No changes, just plastic history graph cleanup
Merge: from fix_app_turretcontrol
- Bugfix for frozen turret view in Rust+ app
Tests: controlled turret in Rust+ app
Merge: from codeanalyzer_getwrapperattrib
- Update Rust.CodeAnalyzer for PoolAnalyzerGetWrapperAttribute support
- Bugfix 4 pool leaks from above attrib
Tests: compiler simulator passes
Merge: from fix_unitask_taskpool
- Bugfix for not-thread-safe taskpool
Tests: unit tests + booted into craggy with Jobs 4
Bugfix(editor): WhatUsesThis - don't require a whitespace after m_EditorClassIdentifier
- wrap the serach into a try-catch-throw block so we can quickly check if there's anything wrong with the prefab
Whitespace got lost in the prefab asset, causing the tool to trip up
Tests: ran it, got results
Merge: from mt_snapshot_saving
- Bugfix for duplicate field serialization
- Bugfix for unsafe Time access on worker thread
Tests: Booted into craggy
Merge: from mt_snapshot_saving
- Bugfix for ExactArrayPool not being thread-safe
Tests: TestMTSave
Merge: from mt_snapshot_saving
- Optim: in UsePlayerUpdateJobs 4 entitiy saving for network is done in parallel. Use server.ParallelNetworkQueueBatchSize to tweak number of tasks
Tests: 2k procgen, built a base and a boat, rode vehicle, heli, zipline, boat, horse, fly across the world. ran all TestMTSave unit tests
Merge: from remove_jobs2
- Bugfix for exceptions when server gets more than 32 players
Tests: compiles
Merge: from remove_jobs2
- Removal of UsePlayerUpdateJobs 2 supporting code, setting it lower will run at least mode 3
- Bugfix for potentially invalid buffer usage when fetching WaterInfos
- Moved more BasePlayer state to NativeArrays
Tests: ran unit tests, ran around on craggy
Merge: from culling_falsepos_improve
- Update: restore culling.debugshowstats functionality
Tests: built debug client standalone, used the command in editor
Merge: from culling_falsepos_improv
- Bugfix for NRE blocking connection to the server
Tests: none, trivial change
Merge: from culling_falsepos_improv
- Update(debug): added a bunch of editor only debug tools to be available in standalone, in culling clientvar group
- Update(debug): improved output of some of these tools
Tests: used these tools on craggy and apartment
Remerge of before due to submit race
Merge: from renderbatch_meshlod_improv
- Update: reimplementation of previous bugfix to be cheaper
Tests: pasted a boat, flew out and back - props were there
Bugfix: from renderbatch_meshlod_improv
- Bugfix for disappearing props on boats
Tests: paste a boat, flew out of range and back - all props present
Merge: from furniture_occlusion_fix
- Reimplement previous bugfix to retain furniture culling
Tests: rendeted and tried to run in and out, abused noclip, triggered bug once
Merge: from renderbatch_meshlod_improv
- Bugfix for basement doors not rendering
Tests: booted into apartments island, checked all floors for doors not rendering. Checked room 101 - stuff was rendering
Merge: from renderbatch_meshlod_improv
- Bugfix: opening doors should no longer cause them/others to disappear
Tests: pasted many doors paste and opened door, flew back and to - all was in place
Merge: from jobs3_as_default
- Update: UsePlayerJobs is set to 3 by default
Tests: booted craggy and verified server var
Merge: from renderbatch_meshlod_improv
- Optim: allow culling to work on MeshLods if they have invalid RenderBatch setups
- Optim: Avoid creating batches-of-1-mesh, as that inhibits Unity batching
Tests: ran around apartment complex, didn't see rendering artifacts. compared standalone builds, shows 20% fps improvement on my setup
Merge: from unity_frame_dump
- New(editor): frame debugger dump utility(https://github.com/sputnicyoji/unity-frame-dump) to help analyze what is rendered
Tests: used it to dump out a couple passes
Merge: from cargoship_bot_replication_fix
- Buildfix: expose setter for NetworkPosTickCallback
Tests: editor compiles
Merge: from cargoship_bot_replication_fix
- Bugfix: fix bots/sleepers disappearing from cargoship
Tests: spawned cargoship event, spawned bot, followed them for a couple mins - no houdini
Merge: from dropspectators_nre_fix
- Bugfix: fix for NRE that happens when multiple spectators watch a player being banned
Tests: 2 players spectated 3rd, banned them - no NRE
Merge: from alloc_clean_july2026
- Optim: avoid ~15 separate allocations related to scheduling/cancelling invokes
Tests: none, trivial changes
Merge: from fullserverdemo_removal
- Clean: Remove FullServerDemo implementation (RustRelay will take us to the promised land)
Tests: compiles, recorded client and server demos and was able to play them back
Resave TimeManager
Tests: nothing specific, but have been running with this changed for a couple days
Merge: from waterlevel_deepsea_sample_fix
- Bugfix for water level queries incorrectly mixing deep sea and overworld states
- Bugfix for deep sea ocean sim using overworld heightmap
- Simplified TerrainHeightMap API
Tests: ran unit tests, booted into craggy, explored deep sea and swam around
Merge: from servercacheplayerinfo_optim
- Optim: reduce the amount of state we recache every frame
- Bugfix: fix some state being out of date by half-a-frame
Tests: unit tests + playing on craggy
Merge: from server_player_refreshcolliders_optim (previously jobs3_...)
- Optim: avoid water queries when refreshing connected player colliders
Tests: On Craggy, ran around, sawm and crouched - could see gizmo size change
Merge: from pool_mt
- Bugfix: avoid extensive spills/misses with new Pool
- Clean: UseMutexPool is now correctly showing 2 entries in console autocomplete
Tests: unit tests, booted into Playground and Procgen 2k worlds and checked print_memory
Merge: from relax_stringview
Merge to cleanup plastic branch view, no actual files changed
Merge: from playervoice_allocs
- Optim: PlayerVoice processing no longer requires allocations
- Clean: removed most deprecated or generic ClientRPC/ServerRPC calls, now relying fully on our RPC source generator
- Update: Rust.SourceGenerator supports ReadOnlySpan and similar types
Tests: unit tests, 2p session on Craggy with voice going both ways
Merge: from tovector3_parse_format_fix
- Bugfix: fixes another edge case of weirdly formatted vec3 using StringView.ToVec3
Tests: unit tests
Merge: from tovector3_parse_format_fix
- Bugfix: fixes ToVector3 parsing bugs for various spacing configurations of Vec3, added unit tests to cover it
Tests: ran unit tests, checked F3 modes camera offset is correct and spawned entities appear where expecte
Merge: from player_benchmark_improvements
- Bugfix for PlayerModelBenchmark scene missing from builds
Tests: none, trivial change
Merge: from alloc_clean_june2026
- Optim: amortise or remove 19 allocation sources
Tests: on craggy, gathered resources, built a mini base
Merge: from buildcommand_allocs
- Bugfix for enable_marker_teleport teleporting to wrong Z
Tests: unit tests + enable_marker_teleport
Clean: add root-level *.slnx to plastic ignore list
Tests: plastic doesn't show it as a new file
Merge: from player_benchmark_improvements
- New: added PlayerModelBenchmark scene that tracks rendering cost of new player model
Tests: ran benchmark a couple times
Merge: from jobs3_skip_preallocnetwrites
- Optim: Jobs 3 - move netwrite pooling to all threads
Tests: ran around craggy with Jobs 3
Merge: from buildcommand_allocs
- Optim: reduce alloc count from building Arg commands from 20+ to 2 on average
- Update: expanded StringView API,
Tests: unit tests and running a bunch of different console commands
Merge: from pool_mt
- Bugfix: implemented missing Pool.Reset and ResetMaxCounterUsage
Tests: booted into craggy couple times with Skip Domain Reload active - no NYI exceptions