userDaniel Pcancel

1,968 Commits over 488 Days - 0.17cph!

2 Months Ago
Debug: ServerOcclusion - for player_occlusion_subgrids, show cached info as well This shows the reason why it's possible to see through terrain at specific angles - our "narrow passages" approach get into hollow terrain Tests: used above to fly around and inspect the world
2 Months Ago
Debug: ServerOcclusion - add occlusion_blocked_cells and custom_occlusion_query editor convars - occlusion_blocked_cells visualizes all blocked cells nearby - custom_occlusion_query allows to setup a query via 2 gameobjects in the editor(in play mode) - restored player_occlusion_subgrids Tests: used the commands
2 Months Ago
Bugfix: ServerOcclusion - don't block visibility if there's one blocked string passage This fixes edge-cases around hills, but there's still an issue of being able to see through hill - investigating Tests: used player_occlusion_subgrids to test a bunch of paths
2 Months Ago
Debug: changed up player_occlusion_subgrids to render results from ServerOcclusion.Algorithm.Gather - Gather now also marks if it used the neighbour passage or direct path or was blocked - Gather respects various convars Think I see what the problem is - my recent algo changes have a bug with neighbour passages. Investigating further Tests: used above server var to visualize paths
2 Months Ago
Bugfix: LoadMapFile - assign Terrain layer to created terrain Required for server occlusion Tests: recreated the scene, now server occlusion cache generation works
2 Months Ago
Debug: ServerOcclusion - use manually controlled points to define a query in server-editor during playmode - don't use cache, use phys queries directly (for what-ever reason cache is borked on this custom map, will investigate later) Written as throwaway, will clean up at the end Tests: visualized the path of one of the poppin cases
2 Months Ago
Redo of Update: LoadMapFile - allow to optionally spawn prefabs only within user provided bounds This stop my pc from exploding Tests: used to spawn a small area around bug location
2 Months Ago
Undo of previous CL - too many files snuck in
2 Months Ago
Update: LoadMapFile - allow to optionally spawn prefabs only within user provided bounds This stop my pc from exploding Tests: used to spawn a small area around bug location
2 Months Ago
Update: augment serverocclusiondebug command to draw the path of occlusion query Written as throw-away code, will clean-up later Tests: used the command to debug, works with disabled ddraw instancing, but the data it displays looks wrong - investigating
2 Months Ago
Optim: Get rid of allocs in BradleyAPC::DoPhysicsMove Tests: loaded monument island with a launch site, verified bradley spans and rides around. in profiler DoPhysicsMove had 0 allocs
2 Months Ago
Optim: get rid of allocs in BuildingPrivlidge::IsAuthed Tests: set up TC on Craggy, was able to auth/deauth
2 Months Ago
Bugfix: ensure entities are subscribed to switched-to group before we transition it's children to new group - This resolves an issue when moving around fast with an item in hands, and it suddenly gets re-equipped Caused by backup of player subscription queue, which can "desync" player - they'll move to a new group they're not yet subscribed to. Tests: flew around at 100-speed noclip and monitored subscription queue size. despite backup, it no longer re-equipped my gun
2 Months Ago
Merge: from main
2 Months Ago
Clean: comments, spans and names Tests: none, trivial changes
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - merge partially ordered chains of snapshots - This reduces allocations (since we create less tasks), and should help with parallelization (reducing task scheduling overhead), but requires preprocess cost Tests: on craggy with UsePlayerUpdateJbos 2, flew out of bounds and respawned(this causes 500+ entity snapshots to be sent) 10 times in a row - no exceptions, disconnects and all entities seemed to be present
2 Months Ago
Bugfix: fix a missing profile scope in FoliageGrid Tests: used the profiler in editor, no more errors
2 Months Ago
Bugfix: UsePlayerUpdateJobs 2 - maintain partial ordering of snapshots when sending to player using tasks - This fixes rare parenting desync that can manifest as a weapon attachment world model not hiding (or something much worse) Need to optimize it by merging tasks, as this can create too many tasks for the server to process Tests: flew around on Craggy with fast noclip - attachments didn't "duplicate". Shot animals, switched active items. Tested occlusion with 2p and geared guns
2 Months Ago
Optim: UsePlayerUpdateJobs - limit duplicate snapshot check to per-player only Snapshot queues can grow up to 1k per player, so this should reduce the lookup overhead a smidge. Tests: 2p session on Craggy with UsePlayerUpdateJobs 2
2 Months Ago
Merge: from baseplayer_serverupdateparallel - Bugfix/Update: don't use parallel snapshot sending in UsePlayerUpdateJobs 1 (it's a level 2 feature) Tests: used both modes in Craggy, confirmed things are working
2 Months Ago
Merge: from main
2 Months Ago
Update: gate parallel snapshot queue behind UsePlayerUpdateJobs 2 All other parts have separation of no tasks under UsePlayerUpdateJobs 1 and tasks allowed under 2, but this slipped my net Tests: used both in local session on Craggy
2 Months Ago
Merge: from baseplayer_serverupdateparallel - Bugfix for frequently disabling UsePlayerUpdateJobs leading to player cache desync Tests: wrote a unit test that confirms the bug and confirms the fix
2 Months Ago
Merge: from main
2 Months Ago
Update: move OcclusionCache reset to always happen for disabled UsePlayerUpdateJobs Don't think this fixes anything, but helps avoid invalid emergency shutdown fallout if it happens in the future. Tests: none, trivial change
2 Months Ago
Bugfix: StableObjectCache - properly drop references when clearing - PlayerCache emergency shutdown logic inspects internal buffer, which tripped up. Change also allows GC - Added a unit test that validates Clear call. Tests: Ran the new unit test - it was borked before the fix, gud afterwards
2 Months Ago
Merge: from baseplayer_serverupdateparallel - Bugfix: PlayerCache can no longer desync when disabling UsePlayerUpdateJobs - Optim: removed couple extra allocs in UsePlayerUpdateJobs 2 Tests: ran unit tests + bunch of disable-enable of UsePlayerUpdateJobs in local session
2 Months Ago
Merge: from main
2 Months Ago
Bugfix: invalidate all non-null managed objects - Previously it allowed for UnityNull objects to be skipped, leading to desync of StableObjectCache Tests: ran PlayerCacheTests.StressTest - it now passes
2 Months Ago
Update: ammend PlayerCacheTests.StressTest to trigger cleanup causing desync with StableObjectCache Tests: ran test, failing as expected
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - get rid of ExecutionContext copies when aggregating tasks in SendEntitySnapshots and -WithChildren Tests: none, trivial change
2 Months Ago
Merge: from sleepignbag_assign_to_friend_bug - Bugfixes for sleeping bag friend assignation, making private and "make bed" action not replicating to the new owner fully - Added sleepingbag.assigntoplayer <bag entity id> and clearfromplayer <bag entity id> server vars for testing Tests: spawned sleeping bag and bed and used above functionaility while assigning/clearing from self - was visible on map when expected.
2 Months Ago
Bugfix: fix Make Bed and Set Public bed interactions Tests: spawned a bed_deployed, assigned to self, made public (visible on map), cleared from self (no longer visible), used make bed (visible). Made private - still visible on map
2 Months Ago
Bugfix: SleepingBag.AssignToFriend now correctly replicates updated spawn options for new owner player - added sleepingbag.assigntoplayer and sleepingbag.clearfromplayer server vars Tests: deployed an unassigned bag, used above command to assign to self - it was visible on minimap
2 Months Ago
Merge: from steamworks_posix_fix - Bugfix for mods not beign able to work with Steamworks.Linux.dll - we go back to shipping Posix.dll Tests: Built server standalone for Windows and Linux from Windows
2 Months Ago
Bugfix: don't ship Steamworks.Linux, go back to shipping Posix for both OSX and Linux - this unblocks modders. - Linux got renamed to LinxuEditor and is only loaded for editor This takes us back to only shipping Posix.dll for both platforms, while enabling to wwork with the project in Linux editor. In theory, builds Linux -> Linux and Linux -> OSX should work as well, but not tested. Tests: Built Server Standalone for Windows and Linux from Windows. Confirmed in both cases LinuxEditor.dll doesn't get deployed, and in Linux case Posix.dll is.
2 Months Ago
Merge: from baseplayer_serverupdateparallel - Optim: reducing allocs for UsePlayerUpdateJobs 2 codepath as much as possible(I think) Tests: a bunch of 2p session on Craggy with UsePlayerUpdateJobs 2 and various interactions(occlusion, shooting, connect-disconnect)
2 Months Ago
Merge: from main
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - BasePlayer.WaitForTasks no longer allocs Could be slower to wait like this, but I doubtr we'll have more than 30 tasks at sync points even on high-pop servers, so it doesn't matter Tests: 2p on Craggy with UsePlayerUpdateJobs 2
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - reduce garbage generation of BasePlayer.ApplyChangesParallel Can't eliminate it fully till we get UniTask, but this should make a dent Tests: couldn't test thoroughly as missing credentials, but it runs(and doesn't send) under UsePlayerUpdateJobs 2. Profiler confirmed less allocs
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - stop constantly resizing array, only grow it if needed Tests: 1p on Craggy with UsePlayerUpdateJobs 2
2 Months Ago
Optim: UsePlayerUpdateJobs 2 - cache continuation actions Prevents allocs when no batches are sent, while also makes it cheaper to send when we do have batches. Tests: craggy with UsePlayerUpdateJobs 2 in editor + checked IL
2 Months Ago
Merge: from baseplayer_serverupdateparallel - Bugfix for slow metabolism and slow hostile timer accumulation on drawn weapon Tests: compared healing rates of large medkit between UsePlayerUpdateJobs 0 and 2
2 Months Ago
Merge: from main
2 Months Ago
Bugfix: UsePlayerUpdateJobs 1/2 - fix metabolism being slow - Fixed by using correct delta times - use tick time length instead of deltaTime (as we accumulate deltaTime until we have a whole tick's worth, then step tick's duration) - Also fixed marking player hostile if weapon drawn for long enough - same fix as above Noticed same issue with another bit of code, but this one's wrong in vanilla flow as well - so leaving it as is till later. Tests: compared rate of healing with log.level Combat 2 after using large medkit on UsePlayerUpdateJobs 0 and 2
2 Months Ago
Clean: extra "can kick" annotation Tests: none, trivial change
2 Months Ago
Clean: fix formatting in BasePlayerr-Server.cs after merges Tests: none, trivial change
3 Months Ago
Merge from baseplayer_serverupdateparallel - Optim: reduce GC allocs by 60% when creating tasks for UsePlayerUpdateJobs 2 - Optim: skip occlusion queries for pairs of same players (affects all modes) Tests: 2p tests on Craggy + 2k procgen with UsePlayerUpdateJobs 0/1/2 (covered spawning, sleeping, killing and occlusion kicking in)
3 Months Ago
Merge: from main
3 Months Ago
Optim: skip running server occlusion between a pair of same players Saves us a bunch of extra dictionary entries, running extra occlusion jobs Tests: 2p sessions with UsePlayerUpdateJobs 0/1/2 on Craggy (with reconnects, kills, occlusion culling)