userDaniel Pcancel

3,167 Commits over 761 Days - 0.17cph!

33 Minutes Ago
Update: add GamePhysics.FindComponent<T> that supports async Configured async to engage at more than 4 batches of 64 queries Tests: ran perf tests. same perf up to 400 points, at 10k points is 2x faster 0.42ms batched+async vs 0.96ms batched vs 5.4ms serial
50 Minutes Ago
Update: add TerrainMeta.SampleTerrainMeshHeights Configured to engage async after have more than 4 batches of 256 pos each Tests: ran perf tests
54 Minutes Ago
Update(tests): add IsInsideTerrain perf comparison tests Need them to tweak when to engage async and when to skip it internally Tests: ran them
Today
Merge: from mt_snapshot_savings - Bugfixes for a couple unsafe Save codepaths in Jobs 4 mode - Added debug utility in InvokeHandler to track down a thread race in Jobs 4 Tests: unit tests + gameplay on craggy
Today
Merge: from main
Today
Bugfix: make Underwear.ValidateForPlayer MT friendly on server Fixes BasePlayer saving throwing unity exceptions Tests: changed underwear with Jobs 4
Today
Bugfix: make FishMount.Save mt friendly - cache fish container index Tests: placed a fish in a trophy display with Jobs 4
Today
Update: wrap InvokeHandler internals in DebugMTLock Tests: booted on craggy and ran around with EnableDebugMTLock
Today
Update: add single-thread reentrant support to DebugMTLock to avoid deadlocks - added unit tests Because of course InvokeHandler is non-trivially recursive Tests: uni tests
Today
Update: Move UnsafeScriptingAccess and DebugMTLock to Facepunch.UnityEngine - Cleanup empty asms Tests: ran relevant unit tests
Today
Update: explicitly capture callstack when DebugMTLock is tripped - frame count can be limited to via unsafe.DebugMTLockMaxFrames (def 5) Tests: ran unit tests
Today
New: DebugMTLock - a named lock guard that print an error on concurrent access - controlled by Unsafe.EnableDebugMTLock, disabled by default - codegen, unit tests Need it to help chase down unobvious thread races, like InvokeHandler Tests: ran unit tests
Yesterday
Optim: Jobs 4 - reduce server.ParallelNetworkQueueBatchSize to 16 by default 256 was waaay to high for the per-frame workload we get, it basically disabled parallelization Tests: none, trivial change
Yesterday
Bugfix: fix 6 TestMTSave failures No legit mt issues, just new entity types with missing unit test setup Tests: ran all TestMTSave tests, pass
Yesterday
Bugfix: make card table saving MT-friendly Done by removing the concept of item "busy" or "locking" - was never set but checked against Time.time Tests: none, trivial change
Yesterday
Bugfix: cache rocket ammo def to avoid get_gameObject calls in AttackHelicopterRockets Tests: spawned attack heli and geared it up - could see them in inventory
Yesterday
Merge: from main
Yesterday
Merge: from vehicle_pooling - Buildfix for BallistaGun
Yesterday
Buildfix: wrap Ballista private members in relevant mode guards Tests: ran compile test
Yesterday
Merge: from hackweek_unsafescriptingaccess - New: utility to bypass Unity's thread safety checks and conditionally execute code in async (Unsafe.UseMultithreadedScripting convar, def 1) Tests: unit tests, manually built & ran all flavor combinations of executables, tried mac and win editors
Yesterday
Update: grab binaries from the merged PR - addesses review feedback, functionality is same Tests: ran unit tests on Win
Yesterday
Update: mark UseMultithreadedScripting explicitly defaulted to enabled It kept disabling it despite underlying var being enabled Tests: booted into craggy, looked at var state in console
Yesterday
Update: codegen Tests: none
Yesterday
Clean: unify style, add comments Tests: none, trivial changes
Yesterday
Clean: missed meta file deletion Tests: none, trivial change
Yesterday
Update: move UnsafeScriptingAccess to Facepunch.Unity - add unit tests - delete old TLStest and it's scene Tests: ran unit tests
Yesterday
Merge: from main
Yesterday
Update: re-enable the feature for clients as well - add editor only RustNative_Editor - rewrapped the code behind UNITY_ASSERTIONS Tests: built all flavors of Rust locally (win, linux, mac | client,server | debug,dev,release) and ran them, got passes everywhere
2 Days Ago
Bugfix: make sure we modify EnsureMainThread in release builds That check is always active Tests: booted TLS scene
2 Days Ago
Update: integrate TLSTest into client bootstrap and server boot routines - copied over linux rustnative.so, to be tested Temp measure to test standalone builds Tests: booted both bootstrap and craggy in win editor - saw output (disabled in client, enabled in server)
2 Days Ago
Merge: from main
3 Days Ago
Update: replacing with a remotely built dylib Surprisingly, it works Tests: ran TLS test scene
3 Days Ago
Update: add MacOS support for UnsafeScriptingAccess - using locally built debug dylib for now Need to figure out if remotely built dylib is going to work or not (didn't when I broke sig locally) Tests: using locally built dylib was able to run TLSTest setup
4 Days Ago
Update: consolidate OS specific calls to RustNative Still gotta build and test linux and mac, gonna do that tomorrow Tests: ran temp scene
4 Days Ago
Update: disable Unsafe.UseMultithreadedScripting on CLIENT - codegen Need to figure out how to better patch out the managed check when doing an IL2CPP build, will leave that for later Tests: tested booting test scene both in CLIENT(ran on main thread) and SERVER(ran on thread pool) modes
4 Days Ago
Merge: from main
5 Days Ago
Merge: from mt_snapshot_saving - Bugfix for thread race in Jobs 4 mode when saving BasePlayer Tests: booted craggyisland_missions, completed a mission
5 Days Ago
Bugfix: avoid a thread race on PlayerState MRU dictionary when saving BasePlayer - use readonly access in Save that doesn't update MRU - push to cache on player connect Tests: ran CraggyIsland_missions, completed a mission - saw states change in UI
5 Days Ago
Update: avoid calling db queries when saving BasePlayer.PersistentPlayerInfo - instead resolved on player join It should be safe according to docs(mt calls are serialized), but this way is just simpler. Tests: booted into craggy
5 Days Ago
Update: implement UnsafeScriptingAcccess.SwitchToMultithreading awaitable Works with ConVar.Unsafe.UseMultithreadedScripting to either keep task on main thread of offload it to thread pool Tests: TLSTest script, with covnar being in both states after system runs
5 Days Ago
Merge: from main
6 Days Ago
Clean: do TLS search after assemblies loaded, not after domain reload - add comments - add temp scene and TLS test script (will remove later) Tests: ran temp scene
6 Days Ago
Update: rewrite UnsafeScriptingAccess to search for TLS slot dynamically - ran codegen Weirdly SwitchToMultithreading doesn't work, might be my UniTask todo Tests: on windows, using local scripts was able to get and read transform pos
6 Days Ago
Merge: from main
6 Days Ago
Merge: from unitask_threadpoolawaitable_fix - Bugfix for deadlocking when frequently moving tasks to thread pool Tests: ran unit test - passes
6 Days Ago
Bugfix: fix races in parameter caches when slamming SwitchToThreadPool - UniTask synced up to commit c995d2b Tests: ran SwitchToThreadPool test - now passes
6 Days Ago
New(tests): add TaskTests.SwitchToThreadPool that reproduces deadlock reported by community Tests: gets stuck as expected when PooledRunners are active
8 Days Ago
Update: add SwitchToMultithreading helper - added ConVar.Unsafe.UseMultithreadedScripting to disable experimental multithreading Tests: compiles
9 Days Ago
Update: added standalone win TLS slot to allow - also wrapped into OS & config dependent compile guards Tests: built all flavors of standalone and checked that code succesfully executes in other project
17 Days Ago
Merge: from mt_snapshot_saving - Bugfix for exception when saving ApartmentRooms in Jobs 4 mode Tests: rented a room in Jobs 4 mode, verified with debugger that code was hit and no exception produced