userDaniel Pcancel

1,841 Commits over 457 Days - 0.17cph!

2 Months Ago
Bugfix: ensure we update player eyes before we kick off various jobs Previously this would cause cached state to have stale eye positions. Tests: none, trivial change
2 Months Ago
Update: refactor ServerUpdateParallel to only contain high-level calls This should improve profiling view by clearly delineating logic Tests: 2p session on craggy with UsePlayerUpdateJobs 2
2 Months Ago
Clean: mark with comments when each player cache is last updated Tests: none, trivial change
2 Months Ago
Update: remove CachedState.IsValid - it was misleading and unnecessary Reimplemented logic that used to rely it to instead rely on nullable values Tests: editor compiles
2 Months Ago
Update: move CachedStates growth to ServerUpdateParallel - also using zeroed memory to have sensible defaults for users that haven't yet being processed Makes it clearer that they are in sync with playerCache Tests: none, trivial change
2 Months Ago
Merge: from main Tests: editor compiles
2 Months Ago
▉▅▉▇▇: █▍▉▍ ▌▌▅▇▌▆▇▅▇▌▆_▄▉▊▉▅ - ▍▌▆▇▅▋: ▍▋▋▋▄▅▋▇▆▌█▅▌▉▉▉▍▅█ ▅ ▍█▍ ▆▍▉▄ ▆█▊▊▆▌▄▍█▊ ▅▅▅█▄ ▉▇▊█▋: ▄▉▇▍▅ ▌▍▌█ ▌▉▋▉ ▅▉▍▉▅▆▆▌▉▅▍▌▍▇▋▍▌▉▉ ▉, ▋▄ ▊▄▋▉▇▌▅ ▉▊ ▅ ▇▉▍▌▅▍ ▅█ ▅▍█▇█▄▅▉
2 Months Ago
▍▌▌▅▍▊: ▉▄▌ █▅▇ ▋▇▉▊▋▋▋▌▍▆ █▅▄▇▍ ▊▄▇█ ▊▇▋█▄▇▄▅▊▅▅▉▋▍▋▆▍▄▇ ▄█▋ ▋▄▋▇▊▄▊ ▊▌▍▉▄: █▄▍▍█ ▇▊▉▅▋▋▋ ▋▅▇▄ ▄▊▋▇▍▍▊▊▋▊▊▍▉▄▆▅▄▋█ ▊, ▆▍▉▄▇ ▍▊▍▆▍▊ █▋▉ ▉ ▆▆▆▅▉█, ▆▆▌ ▊▋▄ ▄█▊▋▍▋▊ ▌▄ ▄▋▍ ▄▆▊█
2 Months Ago
Merge: from main
2 Months Ago
Optim: use cached pos to avoid transform access Tests: none, trivial change
2 Months Ago
Update: UsePlayerUpdateJobs server var is now a mode, not a bool - rolled in UsePlayerTasks Will make it easier to test new modes in the future and avoid weird servervar dependency mess Tests: compiles in editor
2 Months Ago
Bugfix: cache missing state player analytics when jobs are disabled Tests: none, trivial change
2 Months Ago
Update: take world pos out of CacheState This partially fixes cached state missing for players whos ticks weren't processed yet. Tests: 2p local session on craggy
2 Months Ago
Merge: from main Tests: none
2 Months Ago
Merge: from occlusion_rework - UsePlayerTasks runs occlusion checks using batched burst jobs - UsePlayerTasks - any visibility changes are processed using tasks distributed amongst worker threads - UsePlayerUpdateJobs - more use of CachedState Tests: a bunch of local 2 player sessions on Craggy
2 Months Ago
Update: move serial server occlusion update code to the relevant partial class file - Use ReadOnly interface for lists to avoid read-write access violations Tests: compiles in editor
2 Months Ago
Optim: avoid player's world transform querying and use cached pos instead Hoping it'll help reduce the 50% self time of ServerUpdateParallel on 200pop server Tests: none, trivial change
2 Months Ago
Optim: OcclusionCache store sorted pairs - Don't store SubGrids in the cache, just their indices - saves a bit of mem Allows to double the effective capacity of the cache Tests: 2 player session in editor with occlusion behind the hill
2 Months Ago
Clean: Move all of the player server occlusion logic to it's own file - Removed now resolved TODOs Now that it has both task and serial modes of operation, it takes too much space in server partition file. Tests: compiles in CLIENT+SERVER editor
2 Months Ago
Update: use ConcurrentDictionary for BasePlayer.lastPlayerVisibility Trying the simplest approach first, lets see how it scales on release pop. Tests: 2 player local session with occlusion culling de-/spawning player
2 Months Ago
Update: early out from running occlusion checks if no players to process Tests: none, trivial change
2 Months Ago
Bugfix: use cached network time of one player to avoid worker thread calls to script api Tests: none, one more to fix
2 Months Ago
Clean: wrap Task.Wait into a named lambda This will make it appear in server snapshots Tests: none, trivial change
2 Months Ago
Update: main thread now participates in occlusion task processing Tests: none, as I need to adapt more code to make it friendly to running on workers
3 Months Ago
Update: work-in-progress task splitting for server's occlusion checks Rewrote the high level code to be able to run PlayerFound/Lost in batches on worker threads - need to confirm if it's legal Tests: none
3 Months Ago
Update: reimplement how occlusion treats overrides - this is a reimplementation of 118512 Allows to further simplify OcclusionLineOfSight code - enables removal of OcclusionPlayerFound/Lost Tests: on craggy with 2 players, ran behind the hill, disappeared, turned on occlusion override - player appeared
3 Months Ago
Update: plug in batched occlusion logic - fix early-disposed container Need to figure out how to factor out the OnPlayerFound/Lost, but getting close Tests: 2p on craggy in editor - walked behind the mountain and disappeared
3 Months Ago
Update: plug in new batched server occlusion job Tests: none, need to hook up the calling code
3 Months Ago
Update: extract algorithm from ServerOcclusionJobs.CalculatePathBetweenGridsJob Tests: inspected asssembly
3 Months Ago
Update: batched OcclusionLineOfsight skeleton Tests: none, not engaged yet
3 Months Ago
Update: refactor server occlusion job to take out grid definition Prep for adding a batch version Tests: on craggy in editor with 2 players, ran behind the hill and got despawned
3 Months Ago
Update: refactor occlusion loop to be friendly for batching Need to simplify BasePlayer.OcclusionLineOfSight before I can start working on batched job Tests: none, no functional changes for now
3 Months Ago
UPdate: move serverocclusion caching logic a level higher Goal is to get rid of OcclusionPlayerFound/Lost in the query, so this is first baby step Tests: none, trivial change
3 Months Ago
Update: Don't step players that have been kicked by antihack Tests: none, trivial change
3 Months Ago
Bugfix: avoid scripting API when sending EventRecords from RunAnalyticsJob task - EventRecord.New now can be created on worker threads Tests: hacked code to enable analytics in editor, then ran around on craggy
3 Months Ago
Bugfix: avoid scripting API in EACServer.LogPlayerTick - cache more of player state on main thread Tests: hacked code to run EAC in editor and activated player tasks - no more exceptions
3 Months Ago
Update: add "Server.UsePlayerTasks" feature switch - also submitting updated ResetStaticFields Tests: turned it on and off in the editor and validated in profiler
3 Months Ago
Update: experimenting with offloading tick analytics for players to worker thread In editor delays are pretty small, should win us 0.7ms on 200pop server, but tasks library is al-locating cosntantly - still investigating alternatives. Tests: ran around in editor on craggy, checked profiler
3 Months Ago
Clean: dead variable Tests: none, trivial change
3 Months Ago
Clean: fix code formatting Tests: none, trivial change
3 Months Ago
Merge: from benchmarking_update - Log results after single scene run - Fix extra timers in results - Fix scene load exception for no longer existing effects benchmark Tests: ran benchmarks in editor
3 Months Ago
Update: different approach to skipping persistent BenchmarkTimers Old way didn't work because of pauses between benchmark runs (global systems would step and recreate them). Tests: ran in editor, confirmed output didn't contain specific timers
3 Months Ago
Update: log results when running benchmarks in single scene mode Tests: checked logs after running the scene
3 Months Ago
Clean: remove EFfectsBenchmark from the list I've removed it in the past, but apparantly forgot to remove it from this list as well Tests: none, trivial change
3 Months Ago
Update: BaseRaidBench - clean up custom timers from tracking Otherwise they end up in results with their generic names Tests: none, trivial change
3 Months Ago
Merge: from main
3 Months Ago
Merge: from camerarenderer_leak - Fixes memory leaks related to Rust+'s camera renderer and Nexus mugshot savings Tests: print_arraypool when connected to turret - before ProtocolParser 16KB set would grow, now stays constant
3 Months Ago
Bugfix: properly recycle mugshot data pooled array on nexus servers Tests: none, same type of change as previous
3 Months Ago
Bugfix: properly recycle pooled array for camerarenderer Tests: connected to a turret, printed array pool - before ProtocolParser 16KB pool would grow, now stays constant
3 Months Ago
Update: rewrite print_arraypool to support multiple array pool output - also added logic to take into account T size Useful to validate we're not leeking across pools Tests: used in editor, both text and json options