userDaniel Pcancel
reporust_rebootcancel

3,219 Commits over 792 Days - 0.17cph!

11 Days Ago
Optim: tweak batch size when calculating server occlusion narrow phase This cuts down 4.5k world server occlusion generation from 45s to 35s in batched mode. Async further brings it down to 22s Tests: ran generation in editor
11 Days Ago
Update: make UnsafeScriptingAccess initialize on editor load Allows to use it in editor-only tools/workflows Tests: ran server occclusion generation in editor, checked profile
11 Days 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
11 Days Ago
Update: add TerrainMeta.SampleTerrainMeshHeights Configured to engage async after have more than 4 batches of 256 pos each Tests: ran perf tests
11 Days 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
12 Days Ago
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
12 Days Ago
Merge: from main
12 Days Ago
Bugfix: make Underwear.ValidateForPlayer MT friendly on server Fixes BasePlayer saving throwing unity exceptions Tests: changed underwear with Jobs 4
12 Days Ago
Bugfix: make FishMount.Save mt friendly - cache fish container index Tests: placed a fish in a trophy display with Jobs 4
12 Days Ago
Update: wrap InvokeHandler internals in DebugMTLock Tests: booted on craggy and ran around with EnableDebugMTLock
12 Days Ago
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
12 Days Ago
Update: Move UnsafeScriptingAccess and DebugMTLock to Facepunch.UnityEngine - Cleanup empty asms Tests: ran relevant unit tests
12 Days Ago
Update: explicitly capture callstack when DebugMTLock is tripped - frame count can be limited to via unsafe.DebugMTLockMaxFrames (def 5) Tests: ran unit tests
12 Days Ago
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
12 Days Ago
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
12 Days Ago
Bugfix: fix 6 TestMTSave failures No legit mt issues, just new entity types with missing unit test setup Tests: ran all TestMTSave tests, pass
12 Days Ago
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
12 Days Ago
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
12 Days Ago
Merge: from main
13 Days Ago
Merge: from vehicle_pooling - Buildfix for BallistaGun
13 Days Ago
Buildfix: wrap Ballista private members in relevant mode guards Tests: ran compile test
13 Days Ago
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
13 Days Ago
Update: grab binaries from the merged PR - addesses review feedback, functionality is same Tests: ran unit tests on Win
13 Days Ago
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
13 Days Ago
Update: codegen Tests: none
13 Days Ago
Clean: unify style, add comments Tests: none, trivial changes
13 Days Ago
Clean: missed meta file deletion Tests: none, trivial change
13 Days Ago
Update: move UnsafeScriptingAccess to Facepunch.Unity - add unit tests - delete old TLStest and it's scene Tests: ran unit tests
13 Days Ago
Merge: from main
13 Days Ago
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
13 Days Ago
Bugfix: make sure we modify EnsureMainThread in release builds That check is always active Tests: booted TLS scene
13 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)
13 Days Ago
Merge: from main
14 Days Ago
Update: replacing with a remotely built dylib Surprisingly, it works Tests: ran TLS test scene
14 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
15 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
15 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
15 Days Ago
Merge: from main
16 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
16 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
16 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
16 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
16 Days Ago
Merge: from main
17 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
17 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
17 Days Ago
Merge: from main
17 Days Ago
Merge: from unitask_threadpoolawaitable_fix - Bugfix for deadlocking when frequently moving tasks to thread pool Tests: ran unit test - passes
17 Days Ago
Bugfix: fix races in parameter caches when slamming SwitchToThreadPool - UniTask synced up to commit c995d2b Tests: ran SwitchToThreadPool test - now passes
17 Days Ago
New(tests): add TaskTests.SwitchToThreadPool that reproduces deadlock reported by community Tests: gets stuck as expected when PooledRunners are active
19 Days Ago
Update: add SwitchToMultithreading helper - added ConVar.Unsafe.UseMultithreadedScripting to disable experimental multithreading Tests: compiles