userDaniel Pcancel
reporust_rebootcancel

1,177 Commits over 304 Days - 0.16cph!

2 Months Ago
Bugfix: check if ignore grids (terrain, water) are present - Covers cases in editor where they haven't been setup yet Tests: ran unit tests
2 Months Ago
Bugfix: invalid indexing of water infos when player is parented to a water blocking entity Tests: none, trivial change
2 Months Ago
Merge: from main Tests: ran unit tests, played in editor with parallel update jobs enabled on Craggy - water was detected correctly
2 Months Ago
Bugfix: rename WaterVisibilityTrigger.Reset to ResetTrackedTriggers Old name conflicted with Unity's scripting api and generated errors in editor(problematic for tests) Tests: ran unit tests
2 Months Ago
Bugfix: fix GamePhysics batched queries bugs - Was incorrectly indexing the array of results - GetIgnore(Vec3, float) was using a swept sphere instead of sphere overlap (like original code) Tests: ran unit tests - they now pass
2 Months Ago
Tests: Add missing layer for WaterVisibilityTrigger objects in WaterLevel tests This now stressed the execution path for the submerged head in GetWaterInfo and shows I have a divergence. Will fix shortly. Tests: ran all tests
2 Months Ago
Update: making PlayerCache a server-only utility - Made some tests server only It's an intrusive collection (requires an int field on BasePlayer), and we only add it for server version of player. For now there's no need to generalize it anyway. Tests: compiled in editor
3 Months Ago
Bugfix: fix invalid index scrambling logic in tests Turns out the tests were borked and generated duplicate indices, which is not something that batch logic can handle. Tests: ran all unit tests
3 Months Ago
Bugfix: avoid trampling results when scattering out physics query results - Also reduced size of temp allocations (they're still there, but it's the slow path anyway) This is not the bug spotted by tests, but it would bite us in the back anyway. Tests: none, as neither the demo nor tests cover this path (NYI)
3 Months Ago
Update: generate a sample grid for water tests & use WaterVisibilityTrigger This stress tests a rare execution path. It revealed a divergence between serial and batched - will fix next Tests: ran unit tests
3 Months Ago
Merge: from texttable_allocs - Layout improvements and NRE fix for 0 rows Tests: unit tests + running filtered status command to force 0 rows
3 Months Ago
Bugfix: fix serializing of empty tables - Added a test to check for it Tests: unit tests + ran status with a name filter to exlude myself - table and json printed correctly
3 Months Ago
Clean: rename RowType -> ValueType Tests: ran all unit tests
3 Months Ago
Update: Don't pad last column Tests: ran unit tests
3 Months Ago
Bugfix: Fix test table layout when there are not enough values compared to rows - Added new unit tests to cover abnormal cases Tests: ran unit tests
3 Months Ago
Update: standardized WaterVolume usage across tests - Also fixed a couple small bugs in rarely used water perf tests Got a couple TODOs left to clean, and will start merging back to main Tests: ran all tests
3 Months Ago
Update: moved player caching to FinalizeTickParallel Tests: ran unit tests and played back server staging demo twice - numbers match expected range
3 Months Ago
Update: add an extra profiling scope Tests: ran the perf test
3 Months Ago
Merge: from texttable_allocs - Fixing allocs in Server::playerlistpos Tests: ran unit tests and stewed on Aux2 for a week
3 Months Ago
Merge: from main Tests: ran unit tests for Rust.Global due to conflicts in the asmdef
3 Months Ago
Clean: general cleanup - Removed dead code - removed some TODOs that no longer apply - more ReadOnly cases alongside NativeArray usage instead of spans Tests: unit tests
3 Months Ago
Update: expand PerfSerialWaterFactor & PerfBatchWaterFactors with different pop counts Covers various scenarios, from staging at 50pop to 10k for stress test. Also shows that we retain the 4x+ speedup across populations. Tests: ran perf tests
3 Months Ago
Clean: last ReadOnly added Tests: unit tests
3 Months Ago
Clean: the ReadOnly crusade is almost over Tests: unit tests
3 Months Ago
Clean: moar ReadOnly Tests: ran unit tests
3 Months Ago
Clean: a lil more ReadOnly Tests: unit tests
3 Months Ago
Clean: more ReadOnly usage Tests: ran unit tests
3 Months Ago
Optim: GetWaterFactors is converted to indirect style throughout - Added an edge case to all tests to validate correct bounds operation(spotted a bug I recently added) This is last optim I'll be pursuing - 10k points test now runs at ~6ms compared to 28ms serial mode. Next up is to add a couple more benchmarks and go through todo cleanup. Tests: ran unit tests and played back staging demo twice
3 Months Ago
Update: Propagating indices to GetWaterLevels - Updated TestWaterLevelsConsistency to validate various permutations Tests: unit tests
3 Months Ago
Update: converting GetWaterLevels to indirect form - Like previous CL, operates on an internal forward dummy range - sprinkled ReadOnly accessors in prep for clean up Time to start bridging the indices across the calls. Tests: unit tests
3 Months Ago
Update: converting GetWaterInfos to indirect form - Not propagating indirection params yet - running on dummy forward range - Sprinkled ReadOnly usage in prep for cleanup Tests: ran unit tests
3 Months Ago
Update: make GetWaterFactors internal NativeArrays persistent Tests: unit tests
3 Months Ago
Optim: prepare params for WAterLevel.GetWaterInfos using a burst job Helps shrink the managed loop, and gives us minor savings - about 0.5ms for 10k case. Also prepares us last indirect conversion. Tests: ran unit tests Tests:
3 Months Ago
Optim: GetWaterFactors now maintains a stable transform cache - We now use a burst job to gather transform info for all players (ends up being fast enough to not care) - Updated perf test to count for a "warmup" run, since we incrementally build the transform cache Previous updates slowed down code from 9ms to 12ms, this optim brings us back to ~7ms for 10k cases and enables more optims Tests: unit tests
3 Months Ago
Update: rewrite FinalizeTickParallel in indirect form - GetWaterFactors interface adapted to take indices, but internals are still in gather->process->scatter - Expanded TestWaterFactorsConsistency to cover for various indirection scenarios This simplifies the internals of FinalizeTickParallel and allows for more Burst jobs, but also allows for conversion of GetWaterFactors in indirect mode and state caching. Tests: unit tests + mul-tiple server demo playback (numbers within range)
3 Months Ago
Update: use PlayerCache for ServerUpdateParallel Should enable us to optimize for data persistence - will attempt next CL. Tests: played back staging server demo twice, got same analytics numbers
3 Months Ago
▊▄▆▇▉: ▉▋▄▅ ▋▆▊▆▋▅▅_▌▇▋█▆▋▍_▅▄▌ - ▉▅▇▋▍▄▉▅ ▉█▊▌▍▇▌, ▌▉▇▆▉█ ▊▍ ▇█▍█▄ ▊▍▄▅▆ ▋▄▊▊█▋▅ ▅▅▅▊▉▄ ▇█▊█▅: ▊▌▉█, ▍▅▄▆▍▊█ █▊██▉▆
3 Months Ago
▄▅▅▊▆▍: ▇▉▋▊ ▄▆▅▅▄▆▉ █▊▇▌▍█▄▋▍ ▍▆▉▆▌▇▇ ▄▉▇▅ ▋█▊▉▍▌▍▊▌ ▇▉▊▍▅▊▆ █▄▄▊▅▍▆▍ ▅▍█▌▊: ▍▅▊▊, ▅▌▍▄▋▌'▅ ██▌▉▇▊▊▅▆ ▄▌▄ █▊▄▌▅ ▊█▄▇▅▍▍
3 Months Ago
Add: PlayerCache utility - Comes with unit tests Intrusive cache that tracks if elements inside moved. Building block to allow persisting state between frames. Tests: ran unit tests
3 Months Ago
Optim: Calculate water factors via a Burst job - Job generates factors off by less than 1mm, so I had to swithc asserts to approx equal Tests: ran unit tests
3 Months Ago
Update: Pass NativeArrays to GetWaterFactors instead of Spans Tests: ran unit tests
3 Months Ago
Update: replacing BasePlayer.FinalizeTickParallel internal buffers with NativeArrays - Also renamed WaterFactors to GetWaterFactors (to free up a name for a static array) This should enable conversion of internals of GetWaterFactors to Burst jobs Tests: ran the staging demo playback - same InWater and OutOfWater counts
3 Months Ago
Tests: new PerfSerialWaterFactor and PerfBatchWaterFactors perf tests Also just realised that all my perf tests are not doing 1k point tests, but 10k. Whoops. I'll keep it. Tests: ran new perf tests
3 Months Ago
Tests: add TestWaterFactorsConsistency test - Converted other tests to use BasePlayer instead of BaseEntities - Also exposed WaterFactor methods from BasePlayer (other overloads were already public) Doesn't stress all paths, only the main path that has updated logic Tests: ran all unit tests
3 Months Ago
Clean: adding ext to safely clean-up NativeReference Tests: ran unit tests
3 Months Ago
Bugfix: don't leak WaterLevel's persistent allocations Currently only allocating on Server, since no other code actively relies on this. Tests: ran unit tests. Started Craggy in editor with leak detection - no leaks pointing to WaterLevel statics
3 Months Ago
Clean: remove dead batch method Tests: compiles in SERVER+CLIENT
3 Months Ago
Clean: simplify GetWaterLevels code by using NativeArray.Expand Tests: ran unit tests
3 Months Ago
Optim: use persistent buffers inside GetWaterInfos - Still have a TODO on managing their lifecycle - imrpvoved NativeArray.Expand to allow skipping of copying and using uninitialized allocs (opt-in) Very minor effect on timings, but allows us to avoid sync points in managed runtime, should we go towards these optims. Tests: ran unit tests
3 Months Ago
Optim: replace WaterInfo resolving amnaged loop with a Burst job 1k sample point GetWaterInfos perf test runs in 1.9ms (previous was 2.45ms) Tests: ran unit tests