userDaniel Pcancel

2,602 Commits over 639 Days - 0.17cph!

Today
Merge: from fix_boat_no_sail - Bugfix for boats and vehicles getting stuck in open areas, effects not playing, building appearing slow Tests: unit and perf tests, built and sailed a boat on craggy
Today
Bugfix: fix player boats getting stuck while sailing (and other weird bugs) - Network subscription now creates discovered cells Was caused by overly aggressive network group lazy creation. If they are created within player subscription range, player doesn't get subscribed to them automatically, which caused all kinds of issues. This'll hurt perf over time, but no worse than current perf on Release - I'll optimize this later Tests: unit tests, perf tests and built a boat and sailed across craggy
Today
Merge: from stableobjectcache_taa_nulls - Update: Replaced StableObjectCache with StableObjectArray, updated TriggerParent, Projectiel batching and server player processing to use it - Bugfix: fix for "Adding null to TransformAccessArray" warning Tests: unit tests, 2p session on Craggy with jumping on boat, shooting, conencting-disconnecting
Today
Merge: from main
Today
Update(tests): add validation of StableIndexLookup to StressTest Tests: ran unit tests
Today
Clean: delete StableObjectCache, no longer in use - fixed up const references that I missed Tests: compiles
Today
Update: add missing NativeDisableParallelForRestriction to BasePlayerJobs.RecacheTransforms Tests: none, trivial change
Today
Update: rewrite projectile batching to use StableObjectArray instead of StableObjectCache - internal statics are now initialized and cleaned up on client connect/disconenct (+ scripts reload) - had to sprinkle container access checks due to indirection This was the last user of StableObjectCache, will rip it out next Tests: ran unit tests, 2p craggy test with shooting (confirmed fly by effects, ricoches still happen)
Today
Update: rewriten TriggerParent to use StableObjectArray instead of StableArrayCache - ran codegen - made DisposeInternalState run on assembly reload Tests: built a boat, jumped on off - no issues (except the boat not moving, but a separate bug)
Today
Bugfix: ensure PlayerTransformsAccess stays in sync with PlayerCache when players are removed - also removed safety if as it's obsolete after recent change to cleanup player before shutting down the server Tests: had 2nd client connect-disconnect to me on Craggy (though technically it's not enough, I'm relying on unit test logic)
Today
Update: StableObjectArray gets GetIndexForSyncRemove to support removing from linked collections - used it to fix TestTransformAccessArraySync Need to update actual game code since it's bugged Tests: ran unit test
Today
Merge: from main
Yesterday
Update(tests): add unit test that validates StableObjectArray is in sync with TransformAccessArray Tests: ran the test - they're not, gotta fix it tomorrow
Yesterday
Merge: from main
Yesterday
Bugfix(editor): cleanup connected players before we shutdown server when stopping playing in editor Tests: started and stopped play mode
Yesterday
Bugfix: if shorevector caching is disabled, then make sure we generate it Prev version skipped if it found the cache files on disk even though it didn't load them Tests: booted into craggy
Yesterday
Bugfix: properly dispose of BasePlayer.PlayerCache - also invoke DisposeInternalState on assembly reload Tests: started and stopped playing on Craggy
Yesterday
Clean: rename BasePlayer.StableIndex -> BasePlayer.ActivePlayerInd Eventually we'll have SleeperInd and etc, so doing this change early Tests: compile all modes pases
Yesterday
Clean: delete PlayerCache and it's unit tests Tests: compiles
Yesterday
Bugfix(editor): rengerate client-side shorevector cache if it's size changed Tests: connected to a server running craggy
Yesterday
Merge: from main
Yesterday
Update: StableObjectArray rewrite - version 2 - Replaces PlayerCache on the server in all the relevant paths Still need to do clientside projectiles stable cache before ripping it out Tests: booted into Craggy, ran around. Need to test 2p, but being stopped by some shore vector out of bounds access, hoping sync fixes it
Yesterday
Bugfix: StableObjectArray.StableIndexLookup was returning unbounded array Tests: booted into craggy and ran around
Yesterday
Update: useful bits from the first failed StableObjectArray conversion It ended up being too pervasive for my liking, going to try a simpler approach Tests: compiles as part of rewrite, but none otherwise
Yesterday
Update: StableObjectArray now exposes stable index lookup map (needed for transform access array jobs) - moved NativeArrayEx to Facepunch.UnityEngine plugin, enabled unsafe code, added Unity.Collections dep Tests: none, code is in the middle of breaking rewrite
Yesterday
Clean: dead test code removal Tests: compiles
Yesterday
Update: conversion to StableObjectArray - step 2, WaterLevel tests Tests: ran WaterLevel unit and perf tests
Yesterday
Update: conversion to StableObjectArray - step 1, AntiHack unit tests Tests: ran antihack unit and perf tests
2 Days Ago
Update: implement StableObjectArray.Repack - update unit tests to better track consistency of the state - expand StressTest to validate Repack Going to start replacing StableObjectCache in code tomorrow. Also gotta stop unit test from allocating, it takes too long Tests: ran StableObjectArrayTests
3 Days Ago
Update(tests): add StressTest unit test Next up going to try to figure out how to support Repacking Tests: ran unit tests
3 Days Ago
New: StableObjectArray, a pending replacement for StableObjectCache - added basic tests, needs more Follows TransformAccessArray API, provides similar stability guarantees as StableObjectCache but requires to be interacted with differently. Tests: ran unit tests
4 Days Ago
Merge: from unitask_reliable_taskpool - Optim: UniTask internal pooling now reliably caches items Tests: unit and perf tests, ran around Craggy with Jobs 3
4 Days Ago
Optim: ensure UniTask.TaskPool reliably caches items - copied from repo at 88737fb5 Original version was written in wait-free fashion which permitted only 1 participant while failing others. Rewritten to be lock-free, which allows to guarantee pooling Tests: ran unit and perf tests. stuck breakpoints to confirm that repeated perf test invocation didn't have allocations. ran around craggy with jobs 3
4 Days Ago
Merge: from remove_netgroup_prealloc - Optim: NetGroup objects are now lazy allocated, saves 150MB Tests: ran unit tests, ran around on craggy
4 Days Ago
Update: cleanup ClientVisibilityProvider when disconnecting from the server Tests: disconencted from local server
4 Days Ago
Merge: from main
5 Days Ago
Update: dispose netgroups when NetVisGrid gets disabled Tests: booted into craggy and stopped - no errors
5 Days Ago
Clean: remove Provider.Init method Tests: ran UpdateSubscriptionConsistency test, booted into craggy
5 Days Ago
Optim: Get rid of NetGroup pre-allocation, use thread-safe lazy allocation Comparing memory snapshots, we go from 2.1mil NetGroups down to 131, saving 140MB Tests: booted to Craggy and ran around. ran UpdateSubscriptionsConsistency unit test.
5 Days Ago
Clean: move group initialization from PopulateCells to GetGroup Tests: ran around on craggy
5 Days Ago
Clean: remove Visibility.Manager.groups - also remove all provider == null checks Tests: compiles
5 Days Ago
Update: add ClientVisibilityProvider - mostly a dud Provider, most methods do nothing - Upodated all places to use ClientVisibilityProvider instead of null This allows to remove groups from Network.Visiblity.Manager Tests: booted into craggy, ran GameTraceTests
5 Days Ago
Update: instead of iterating all netgroups, add Provider.ForEach(layer, callback) method - get rid of Visibility.Manager.Groups accessor This removes public access to groups dictionary, so almost there to remove it Tests: booted to craggy, opened deep sea and ran deepsea.printentitycount
5 Days Ago
Update: Visibility.Provider now can create network groups in a thread-safe fashion - organized hardcoded groups into their own collection - Network.Visibility.Manager now defers to provider's GetGroup and TryGetGroup Not sure if I want to support NetworkVisibilityGrid on CLIENT or not, but will try to clean it up in a bit Tests: Booted and ran around on craggy. compiled for all modes separately
7 Days Ago
Merge: from useplayerupdatejobs_purge - Clean: Removal of UsePlayerUpdateJobs 0 and 1 code - Optim: RelationshipManager now uses cached server occlusion results instead of running new ones - Bugfix: stop NPCs/Bots writing tick history, corrupting internal memory Tests: booted a server from a save and connected to it
7 Days Ago
Merge: from main
7 Days Ago
Bugfix: avoid invalid tick transformation from NPCs/bots that would corrupt array header - added an assert to GetPlayerTickIterator, only place where it's not checked by default Tests: booted a standalone server with a save - was able to connect and run around
8 Days Ago
Update: replace all unsafe usage with spans, should throw if I go out of bounds Tests: compiles
8 Days Ago
Rollback the rollback
8 Days Ago
Merge: from main