userDaniel Pcancel
reporust_rebootcancel

2,052 Commits over 518 Days - 0.17cph!

35 Minutes Ago
Tests: reduce ray count for Perf.TestTraceRay/-s to 2k 8k is too much, hangs serial rays. 2k is already very bad (3.4s avg per run for serial, 7.1ms for batched) Tests: reran tests
1 Hour Ago
Tests: Add TraceRay/-s perf tests The numbers of serial vs batched are a bit too crazy(128 rays: 7.5ms vs 0.3ms; 1024: 716ms vs 2.2ms), but looks like managed sort is too costly. Need to investigate the 8k batched hang(5min+ ) Tests: ran the perf tests
3 Days Ago
Tests: add perf tests for TraceRaysUnsorted and TraceAllUnordered(radius == 0) At 128 rays perf is same, at 8k we get 25% faster without water checks/41% faster with water. Need to profile deeper if we get more wins Tests: ran the new tests
3 Days Ago
Clean: reorganize GamePhysics tests into Unit child class Prep for Perf unit tests. Tests: ran all relevant tests, discovered we forgot to implement 1 fully - chasing up separately
3 Days Ago
Update: made GamePhysics.TraceRays return guaranteed nearest hits - added fast path for TraceRays with maxHits == 1 - Added tests for TraceRaysUnordered, rewrote test for TraceRays to be more thorough Tests: ran unit tests
4 Days Ago
Update: started on ShouldParentEntitiesJobs (incorrect name) - Simplified ShouldParentEntities (also incorrectly named) Converted CheckForObjUnderFeet to burst jobs, need to do IsClipping internals next (needs a bunch more on the GamePhysics side) Tests: none, not ready
4 Days Ago
Update: GamePhysics.TraceRays now supports ignore entities - Added TraceRealmRays (not unit tested, will do that tomorrow) - Added unit tests for TraceRays - TraceRays skips sorting if maxHitsPerTrace is less than 2 Tests: unit tests
5 Days Ago
Update: hook up PersistentObjectQueue as well - consolidate work scheduling to AddTo-/RemoveFromActiveTriggers - fixed an exception when unity sends 2 OnTriggerEnter for 1 entity (not sure how, but TriggerBase handled it already) Just the most complicated version left - custom queue with jobs Tests: jumped on and off from moving boat
5 Days Ago
Update: hooked up the crude queue, added server var - partial codegen (Grid<T> borkage) - Fixed a couple bugs with invalid tracking on TriggerParents in StableObjectCache Can move on to other queue impls Tests: craggy, toggled default and batched mode
5 Days Ago
Merge: from main
6 Days Ago
WIP: TriggerParent managed queue, no batching, no burst Still need to implement using PersistentObjectWorkQueue and experiment with batched-burst queries and compare all, as this version should have a bit more overhead due to bookkeeping. Tests: none, not plugged in
6 Days Ago
Merge: from main
7 Days Ago
Merge: from networkcache_stalegroup - Bugfix for vanishing child entities (l-ike drybox on rhib) Tests: spawned rhib, teleported far then back after pause, paused again - all parts stayed in place
7 Days Ago
Bugfix: fix missing child entities (like drybox on rhib) by invalidating network cache on netgroup change Previously if parent moved it would update the network group of the hierarchy, but only parent would have it's cache invalidated. This meant that it was possible for child to be with a netgroup outside of network range, while parent is in network range. Tests: on Craggy, took rhib and drove it from E4 to a row above E0, teleported back to E4, waited for boat to stream out, teleported to boat and waited a bit - it stayed in place (previously drybox would disappear)
10 Days Ago
Merge: from randomize_junkpile_checkempty - minor optim to load balance JunkPile::CheckEmpty Tests: looted one on craggy, saw it disappear
10 Days Ago
Update: JunkPile.CheckEmpty now have a 5 second randomness Tests: looted a junkpile on craggy, flew away, waited and got back - it was gone
10 Days Ago
Merge: from procpop_debug - Bugfix: fix DensitySpawnPopulation prefab pool being starved out, resulting in failed spawn attempts - Optim: DensitySpawnPopulation early exits if it reached prefab population target isntead of continuing to try to spawn - New: spawn.report now contains info about failed iterations and how many entities it recently spawned - New: spawn.dump_map <pop> [count] which simulates spawns and generates pngs indicating general spawn area and attempted spawns. Pngs in <server_ident>/debug. Tests: 4.5k procgen in editor - server started with full junkpile pop, simulated spawn gave better numbers
10 Days Ago
Update: dump_map exports to identity/debug/ folder - client buildfixes Tests: built all modes in editor, ran dump_map on craggy
10 Days Ago
Merge: from main
10 Days Ago
Optim: DensitySpawnPopulation - stop trying to spawn prefabs when used up available prefabs This eliminates a lot of wastefull attempts Tests: while at full population, ran dump_map with 1000 items to fill - reported 0 attempts
10 Days Ago
Bugfix: DensitySpawnPopulation - avoid weighted prefab pool starvation Bug from 2022 - we never checked if prefab instantiation ever failed, as it has it's own internal checks Tests: ran spawn.report - saw that junkpiles population was full after boot. deleted junkpiles pop then immediately simulated spawning - saw green pixels, got the count
10 Days Ago
Update: spawn.dump_map - also report how many spawned and how many attempts were taken Looking at the texture it's hard to believe it has 800 green pixels, but apparantly it does. Tests: used dump_map right after delete_populations
10 Days Ago
Update: differentiate SpawnPosOverride and Density errors Noticed a bug that can cause random prefab picking starvation (we don't return prefabs if instantiating a prefab fails), will fix in a separate CL to confirm via debug maps Tests: ran dump_map junkpiles 1000 on 4.5k procgen
10 Days Ago
Update: refactor SpawnPopulationBase to work with ISpawnHandler - got rid of SimulateSubFill, consolidated logic - changed dump_map default simulation count to 100 (to avoid iteration explosion) - added more fail reasons This both reduces code duplication and makes sure we run exactly the same SubFill logic when simulating to generate debug maps Tests: ran it on 4.5k procgen with dump_map junkpiles 1000 - found why they don't spawn
11 Days Ago
Bugfix: fix spawn ticks counting non-max pop as a fail, instead of requested spawn count Tests: none, trivial change
11 Days Ago
Update: add ability to dump pngs of simulated spawning of a population Tests: used locally
11 Days Ago
Update: spawn.report now also reports failed tick and how much were spawned recently on average when failing Can use this as a further estimate which population is costing us when trying to spawn full pop Tests: used in editor
11 Days Ago
Update: spawn.report now outputs max attempts it can do for next tick Helps quickly spot what's the worst contributor to spawn overhead Tests: used in editor on Craggy
12 Days Ago
▆▅▇▍▇: █▌▋▄ ▋▊▌▊▆_▉▋▍█▊▆ - ▌▆▉▉▊▍▍▅▊▊▋▋▄ ▊█▆▊▉▉ - ▅▉▉▋▍▅ ▊▋▊ ▉▍▉ █▆ ▆▌▄▊▋▇ ▇▉▊▅▇▍▌▌▄ ▋▇ ▅█▌▉▊▆█▉█▍▅▆▊▊▅▆█▋▌█▉▌▅▅ ▉▌██▄: ▆▌▋▌, ▆▌▄▊▋▊▉ ▉▅▇▇▆▇
12 Days Ago
▋▌▊▋▌▊: █▆▍ ▇▌▄▄▋▌ ▅▉▌ ▊▌ ▊▍▇▆▉▆ ▄▉▇▌▇ █▊▊▅▆▋▌▇ ▉▌ ▆▅▌▊ ▋▇▊█ ▌ █▄▉▄ ▊▋▉█▅: ▉▉▌▌, ▄▍▇█▇▉▊ ▇▋█▄▄▇
12 Days Ago
Merge: from triggerparentdelayedexit_optim - Optim: sped up noclip check via OOB broadphase + reduced tick count + added BaseEntity caching Tests: hopped around the boat
12 Days Ago
Merge: from opt_triggerparent_timeslice - Optim: reduced component accesses and added support for triggerparent.ontick timeslicing Tests: jumped around the boat
12 Days Ago
▅▍▌▉▊: ▋▋▄▅▇ ▍▅▄█▌▆▆▊ ▆▌ █▋▇▇▌▇██▅▄▇▇▇.▊▆▆▆▋▍ ▋▍▌ ▊▋▆▌▍▅ ▌▋▌ ▍▆█▉ - █▊▉▋▆▇▇▌▄▄▊▌▇▆▊▍█▊▉▌▉▄▉▄ ▍█ ▇▉█ ▆█▄▌ ▄▌▊ ▋▄▋▇▊▄▉▋▉▄ ▉▍, ▆▋▇▇▊▉▄▇▄█ ▋▌▍ ▋▇▌▊▊▄▇▇▍▆█▌▅▆▉▉▌▉▍▌█▇▋▌.▄▇▆▄█_▉▇▇▍_█▍▊▊▄▍▄▆(▉▆▉▍██▇ █▌▆▌) ▋▄▉ ▇▊▍▉_▆▋▆▌_▇▌▄▍▋▇▌(▌▋▉▍▉▌▅ ▅.▍) ▊▌▍▉▊: ▇█▊▌▌▉ ▄ ▋▉▋▆ ▄▊▌▊ ▌█▋ ▄▊▄█▇ ▋█▊▆ █▍ ▌▇▋▊▆, ▄██▄▌▋▋▄▅▋ ▋▉▆▆▉▅ ▆▅ ▍▍▊ ▍▄▌█▆▇ - ▊▋▋ ██▇█▌▆▇▇▌▆ ▌▍ ▆▉▄ ▌█▄▌, ▌▊▅ ▌▋▉▄▇▊▊ ▊█▄ ▇█ ▇▆▅▋▇ ▇▌▌▇▋▄▋▊█▋ (▉▌▆-▋▍▄▆▊▊▌▋ ▌▊▋▆▋). ▌▉▋▆▌▋▊▊ ▉ ▍▌▌▅▊▌ ▇▍▌▄▋.
12 Days Ago
Update: reorder clipping entities check to fast-exit on corpses Tests: none, trivial change
12 Days Ago
Clean: remove duplicate IsDestroyed check It's already checked as part of ToBaseEntity and our caching Entity Tests: none, trivial change
12 Days Ago
Optim: TriggerParent - cache ToBaseEntity calls Best case they cost us a hash-lookup + alive checks, worst case - hierarchy traversal. We can make do with alive checks only. Tests: built a boat and rode it, put it in edit and reconstructed a foundation
12 Days Ago
Update: don't requiry parent exclusion trigger Tests: none, trivial change
12 Days Ago
Merge: from main
14 Days Ago
Merge: from invis_phantom - Bugfix: old ServerOcclusion logic could spawn a phantom player on the client for invis players Tests: on a fresh server tried to come into range of invis player - phantom no longer spawns. Validated UsePlayerUpdateJobs 0, 1, 2
14 Days Ago
▍▄▊▇▇█: ▇▊▊'▆ ▅█▌█ ▆▌▆▉▅ ▅▅▌▆▇ ▌▆ ▉▊▆█▍▄▌▉▇ ▊▊▋▋▌'▄ ▄ ▉▋▉▄▊▍ ▍▌▆▄▊ ▇▆▄▌(▇▉▅▍▊▇▆▆▄.▊▆▄▉▅▉▌▇▅▄▇█ ▋▋▉▉▊'█ ▅▌██▇▆ ▌▇▅▊▍▇▋▇▉███▌█▊), ▋▆▇ ▅▅▋▇ ▉▌▉▇▄▍ ▄▇▉▅ ▍▋▊▌ ▇▅▇ ▌▇▄ ▍▆▇ ▅▊ ▆▋█▉ ▅▆▅▉▉▋▇▄. ▉▆▌▆▅: ▍▇█▄▌▌ ▇▅▍▇ ▌▋▇▆▉█▊▋ ▅▊▋ █▌ ▋▆▄ ▄▄▄ ▌▉█ ▋▋▇▍, ▊▊█▌ ▄█▆▍▇▌▅ █▋▊▌█▊▊▇██ - ▊▌▋▌▆▄▅▌▇▍ ▊▍▉▋▄ ▇▇▉ ▇▆▍█▇▍▉ ▆█▍▄▌▅ █▍▉▍▋▊▄▋-█▄▅▍▌▉▉▆ ▍▋ ▅▇▄▄
14 Days Ago
Bugfix: ServerOcclusion - don't send out initial snapshot if other player is invisible/spectating UsePlayerUpdateJobs 0 & 1 only issue. Fallout from my invis rewrite Tests: on playground, went invis and flew away from spawn. p2 connected then flew to p1 - no more phantom. Repeated 3x. Tested UsePlayerUpdateJobs 0, 1, 2
17 Days Ago
Merge: from spectate_3p_fix - Bugfix for spectating yourself causing a client crash Tests: tried to spectate via F1 menu - no longer possible
17 Days Ago
Clean: fix formatting for PlayerInfo Tests: none, trivial change
17 Days Ago
Update: Block Spectate button in F1 Server menu when selected player is local player - updated engineui.serveradmin.playerinfo.prefab to link up the button Tests: Opened Server tab, selected self in list - button was not interactible
17 Days Ago
Bugfix: Spectating - prevent server accepting spectating yourself Tests: Used F1 Server tab to spectate myself - no crash
17 Days Ago
Merge: from spectate_3p_fix - Bugfix: fixes 3rd person spectate camera not following spectated player Tests: spectated target in 3rd person while original body was in a box - camera orbitted target as expected
17 Days Ago
Bugfix: Spectating - when in 3rd person mode, run overshoot checks relative to target entity, rather than current Used to work previously because current entity was part of parent - but since recent changes that's not the case Tests: 2p session on craggy - put spectator into the white box the started spectating. when switching to 3rd person, camera no longer stuck in box and is orbiting around target player
17 Days Ago
Merge: from jobs_noclip_mask_fix - Bugfix for UsePlayerUpdateJobs > 0 NoClip checks incorrectly using vehicle layer mask - Updated unit test to check for above case Tests: ran unit test, tried to push against modular vehicles on craggy
17 Days Ago
Bugfix: AreNoClipping - fix vehicle layer inclusion logic actually excluding the layer from the mask - Also uncommented one test that I accidentally submitted as commented Tests: ran unit tests - they now pass
17 Days Ago
Tests: TestNoClipConsistency - add vehicle detail colliders to catch inconsistency - also don't reinvent the wheel with permutation combinations, just use [Values] instead as before Tests: unit test fails (expected, will fix next)