userDaniel Pcancel

2,038 Commits over 518 Days - 0.16cph!

Today
Merge: from randomize_junkpile_checkempty - minor optim to load balance JunkPile::CheckEmpty Tests: looted one on craggy, saw it disappear
Today
Update: JunkPile.CheckEmpty now have a 5 second randomness Tests: looted a junkpile on craggy, flew away, waited and got back - it was gone
Today
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
Today
Update: dump_map exports to identity/debug/ folder - client buildfixes Tests: built all modes in editor, ran dump_map on craggy
Today
Merge: from main
Today
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
Today
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
Today
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
Yesterday
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
Yesterday
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
Yesterday
Bugfix: fix spawn ticks counting non-max pop as a fail, instead of requested spawn count Tests: none, trivial change
Yesterday
Update: add ability to dump pngs of simulated spawning of a population Tests: used locally
Yesterday
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
Yesterday
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
3 Days Ago
▆▅▇▍▇: █▌▋▄ ▋▊▌▊▆_▉▋▍█▊▆ - ▌▆▉▉▊▍▍▅▊▊▋▋▄ ▊█▆▊▉▉ - ▅▉▉▋▍▅ ▊▋▊ ▉▍▉ █▆ ▆▌▄▊▋▇ ▇▉▊▅▇▍▌▌▄ ▋▇ ▅█▌▉▊▆█▉█▍▅▆▊▊▅▆█▋▌█▉▌▅▅ ▉▌██▄: ▆▌▋▌, ▆▌▄▊▋▊▉ ▉▅▇▇▆▇
3 Days Ago
▋▌▊▋▌▊: █▆▍ ▇▌▄▄▋▌ ▅▉▌ ▊▌ ▊▍▇▆▉▆ ▄▉▇▌▇ █▊▊▅▆▋▌▇ ▉▌ ▆▅▌▊ ▋▇▊█ ▌ █▄▉▄ ▊▋▉█▅: ▉▉▌▌, ▄▍▇█▇▉▊ ▇▋█▄▄▇
3 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
3 Days Ago
Merge: from opt_triggerparent_timeslice - Optim: reduced component accesses and added support for triggerparent.ontick timeslicing Tests: jumped around the boat
3 Days Ago
▅▍▌▉▊: ▋▋▄▅▇ ▍▅▄█▌▆▆▊ ▆▌ █▋▇▇▌▇██▅▄▇▇▇.▊▆▆▆▋▍ ▋▍▌ ▊▋▆▌▍▅ ▌▋▌ ▍▆█▉ - █▊▉▋▆▇▇▌▄▄▊▌▇▆▊▍█▊▉▌▉▄▉▄ ▍█ ▇▉█ ▆█▄▌ ▄▌▊ ▋▄▋▇▊▄▉▋▉▄ ▉▍, ▆▋▇▇▊▉▄▇▄█ ▋▌▍ ▋▇▌▊▊▄▇▇▍▆█▌▅▆▉▉▌▉▍▌█▇▋▌.▄▇▆▄█_▉▇▇▍_█▍▊▊▄▍▄▆(▉▆▉▍██▇ █▌▆▌) ▋▄▉ ▇▊▍▉_▆▋▆▌_▇▌▄▍▋▇▌(▌▋▉▍▉▌▅ ▅.▍) ▊▌▍▉▊: ▇█▊▌▌▉ ▄ ▋▉▋▆ ▄▊▌▊ ▌█▋ ▄▊▄█▇ ▋█▊▆ █▍ ▌▇▋▊▆, ▄██▄▌▋▋▄▅▋ ▋▉▆▆▉▅ ▆▅ ▍▍▊ ▍▄▌█▆▇ - ▊▋▋ ██▇█▌▆▇▇▌▆ ▌▍ ▆▉▄ ▌█▄▌, ▌▊▅ ▌▋▉▄▇▊▊ ▊█▄ ▇█ ▇▆▅▋▇ ▇▌▌▇▋▄▋▊█▋ (▉▌▆-▋▍▄▆▊▊▌▋ ▌▊▋▆▋). ▌▉▋▆▌▋▊▊ ▉ ▍▌▌▅▊▌ ▇▍▌▄▋.
3 Days Ago
Update: reorder clipping entities check to fast-exit on corpses Tests: none, trivial change
3 Days Ago
Clean: remove duplicate IsDestroyed check It's already checked as part of ToBaseEntity and our caching Entity Tests: none, trivial change
3 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
3 Days Ago
Update: don't requiry parent exclusion trigger Tests: none, trivial change
3 Days Ago
Merge: from main
5 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
5 Days Ago
▍▄▊▇▇█: ▇▊▊'▆ ▅█▌█ ▆▌▆▉▅ ▅▅▌▆▇ ▌▆ ▉▊▆█▍▄▌▉▇ ▊▊▋▋▌'▄ ▄ ▉▋▉▄▊▍ ▍▌▆▄▊ ▇▆▄▌(▇▉▅▍▊▇▆▆▄.▊▆▄▉▅▉▌▇▅▄▇█ ▋▋▉▉▊'█ ▅▌██▇▆ ▌▇▅▊▍▇▋▇▉███▌█▊), ▋▆▇ ▅▅▋▇ ▉▌▉▇▄▍ ▄▇▉▅ ▍▋▊▌ ▇▅▇ ▌▇▄ ▍▆▇ ▅▊ ▆▋█▉ ▅▆▅▉▉▋▇▄. ▉▆▌▆▅: ▍▇█▄▌▌ ▇▅▍▇ ▌▋▇▆▉█▊▋ ▅▊▋ █▌ ▋▆▄ ▄▄▄ ▌▉█ ▋▋▇▍, ▊▊█▌ ▄█▆▍▇▌▅ █▋▊▌█▊▊▇██ - ▊▌▋▌▆▄▅▌▇▍ ▊▍▉▋▄ ▇▇▉ ▇▆▍█▇▍▉ ▆█▍▄▌▅ █▍▉▍▋▊▄▋-█▄▅▍▌▉▉▆ ▍▋ ▅▇▄▄
5 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
8 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
8 Days Ago
Clean: fix formatting for PlayerInfo Tests: none, trivial change
8 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
8 Days Ago
Bugfix: Spectating - prevent server accepting spectating yourself Tests: Used F1 Server tab to spectate myself - no crash
8 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
8 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
8 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
8 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
8 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)
8 Days Ago
Tests: Amend TestNoClipConsistency to generate players permutations with non-zero vehiclePauseTime alongside forceCastTime This should trigger a slightly different code path for noclip checks. Still need to generate relevant physics colliders to validate this path. Tests: ran TestNoClipConsistency
8 Days Ago
Merge: from jobs_coarsedist_crashfix - Bugfix: fixes crash when players connect to a fresh server with UsePlayerUpdateJobs > 0 Tests: local C+S with UsePlayerUpdateJobs 2 enabled from the start - no more exceptions by height and shoredist jobs
8 Days Ago
Bugfix: UsePlayerUpdateJobs - fix GatherWavesIndicesJobIndirect returning invalid count of deepsea players - Also fixed invalid index usage for acessing positions Tests: local C+S with UsePlayerUpdateJobs 2 enabled from the start - no more exceptions by height and shoredist jobs
9 Days Ago
Merge: from main - Bugfix: Removes client-side network group setting when updating parents - fixes phantom entities on cargoship and other global network entities Tests: flew around craggy, was able to pick up items, chop trees, kill animals. spawned cargoship and dropped items on it, spawned dressed player & killed him, then deleted them using console cmd - they got cleaned up as expected
9 Days Ago
Update: BaseEntity.UpdateParenting no longer tries to update network group - When client receives an entity snapshot, allow it to update the network group if it's out of sync We already get network group change messages - there's no need to try to "guess" on the client and potentially desync. Tests: flew around craggy, was able to pick up items, chop trees, kill animals. spawned cargoship and dropped items on it, spawned dressed player & killed him, then deleted them using console cmd - they got cleaned up as expected
9 Days Ago
Bugfix: Run same network-group-inheritance checks on client when recieving snapshots This resovles a scenario where dropped items/players on a cargoship/crane/etc have local net group, but client resolves global net group. Tests: Spawned cargo ship, spawned NPC, player - killed both. dropped items. flew away, destroyed them via console, flew back - they were gone
9 Days Ago
Merge: from main
9 Days Ago
Bugfix: handle spawn groups on non-baseentity gameobjects Tests: procgen 2.5k in editor
9 Days Ago
Merge: from navmeshsurface_optim - Optim: Ghostships now use a static, detached navmesh, saving us on navmesh re-integration every physics step - New scientists adapted to work with detached navmesh - In C+S editor, we now automatically exclude client-scene entities from dynamic navmesh gen Tests: spawned all ghost ships, observed scientists patrolling, dogfighting, sprinting
9 Days Ago
Clean: remove obsolete TODOs Tests: none, trivial change
9 Days Ago
Clean: remove test code that offset the baked navmesh Prepping to merge back Tests: spawned all variations of ghostship, engaged scientists - didn't spot any weirdness
9 Days Ago
Merge: from main
9 Days Ago
Bugfix: LimitedTurnNavAgent - when path following, ensure facing direction is applied in world space Previously it was done in navmesh space, causing scientists to look in the sky during dogfight Tests: observed scientists dogfighting and chasing behaviors - they either looked in direction of run or me
10 Days Ago
Bugfix: Ensure NavAgent properly initialzied when trying to spawn on a detached navmesh Tests: spawned ghost ship, AI started patrolling and running around to shoot me when spotted