userDaniel Pcancel
reporust_rebootcancel

2,864 Commits over 700 Days - 0.17cph!

Today
Update: use dirty indices for copy Test: none, trivial change
Today
Update: propagate PlayerServerStates down to Antihack methods - updates unit tests for changed API Tests: unit & perf tests, ran around craggy
Today
▍▊▆▋▄▆▆ ▉▅▇▌▋▆▆▌▇ ▋▄▉▉▄▋▅▅██▌▅▊▄▅▉▊▌ ▄▉▄█▆▄ ▍▊▇▅ █▉▍ ▅▄▇▊▋▌▄▆▅▉▅▆ ▉▇▄▌ ▄▆▆▄█▆▆▆ ▆▌█▊▇█▄▊▌█▊▅▇▇ ▇▊▉▉▌▄▌ ▅▊▋▌▌ ▆▌▅▉▉▍▋▄█▌██ ▌▋▉ ██▄▊▍█▊▌ ▉▉▌▇▆█▄▅▋▌▉▆▅ ▉▇▍▋▇▇▍█▆▅▋▅▉▇▋▉▄▌ ▇▉▄ ▉▍▊▊ ▉▊▇▋▋
Today
Bugfix(tests): don't try to manage unit test specific PlayerStates, rely on internal static one (sadface) - also fix ServerOcclusionGroup tests not fully cleaning up players There's an architecture barrier that's hard to push through to support multiple PlayerStates, so keep it simple for now Tests: ran a bunch of unit tests, no longer sporadically failing
Today
Clean: refactor various player server states into one big struct Allows us to shrink func signatures and automate state propagation when we add new arrays. Only cleaned up bare minimum of funcs to get things working, need to do more Tests: ran all relevant-ish unit tests (discovered TestOverlapOBBsConsistency is failing, will fix separately), played on craggy
Yesterday
Optim: ServerCachePlayerInfo - don't cache isRunning Time to clean up all the extra args everywhere, having 10 param funcs is no bueno Tests: consistency tests
Yesterday
Optim: ServerCachePlayerInfo - don't cache onground and isflying Tests: ran unit consistency tests
Yesterday
Bugfix: accidentally used ducked instead of ducking modelstate, whoops Tests: ran consisntecy unit tests
Yesterday
Optim: ServerCachePlayerInfo - stop caching isDucking Tests: AH consistency unit tests
Yesterday
Optim: ServerCachePlayerInfo - don't cache isOnLadder Tests: ran AH consistency unit tests
Yesterday
Bugfix: missed a couple places where ModelState.Blocking is updated Tests: none, trivial change
Yesterday
Clean: fix up formatting crimes in BasePlayer-SaveLoad.cs Tests: none, trivial change
Yesterday
Update: duplicate ModelState.flags and ducking properties into their own arrays, keep them in sync with incoming model states Will allow me to removed caching of 5 properties in ServerCachePlayerInfo Tests: booted craggy
Yesterday
Optim: ServerCachePlayerInfo - don't cache IsCrawling, it can be deduced from PlayerFlags Tests: ran speed consistency unit test, ran around craggy, crawled while wounded - all's gud
Yesterday
Clean: remove JobHandle IsValid extension This was a workaround for a Unity issue that was fixed in 6.3.14f1 Tests: none, trivial change
Yesterday
Optim: ServerCachePlayerInfo - only recache positional state if position changed from last call Tests: ran around on craggy, sawm, crouched. retried connecting couple times
Yesterday
▊ ▋█▄▆██ ▉▊▊▊▅▍▉▋▅▇▆▇▆▋█▍▆▋▉▇▇ ▍ ▄▆▋▋▆▆ █▄▍▇▄▇█▍▌ ▊▋▌██▆ █▅▊▇▉ ▆▌▆▇ ▊▄▄▉▊▇▌ ▇▋▇▆▄▇▌▆▍▇█▅▉▍ ▊▍▍ ▋▉▄▄█▊ ▍▊▌▊▊▍
Yesterday
Optim: ServerCachePlayerInfo - avoid transform access when recaching player center Tests: none, trivial change
Yesterday
Bugfix: separate position-dependent and other player state caching It was possible that for a couple frames cached player state would be incorrect Tests: none
Yesterday
Merge: from server_player_refreshcolliders_optim (previously jobs3_...) - Optim: avoid water queries when refreshing connected player colliders Tests: On Craggy, ran around, sawm and crouched - could see gizmo size change
Yesterday
Optim: use cached swimming results instead of new water queries when refreshing player's collider Tiny savings(~1 micro per player), but every bit helps Tests: ran around craggy, went swimming, crouched - saw collider gizmo size change
Yesterday
Clean: refactor ConnectedPlayersUpdate into batched blocks Makes it easier to see at a glance where our time is spent in profiling snapshots Tests: ran around on craggy
3 Days Ago
Merge: from pool_mt - Bugfix: avoid extensive spills/misses with new Pool - Clean: UseMutexPool is now correctly showing 2 entries in console autocomplete Tests: unit tests, booted into Playground and Procgen 2k worlds and checked print_memory
3 Days Ago
Merge: from main
3 Days Ago
Clean: redefine UseMutexPool variable as separate ClientVar and ServerVar instead of merged ConsoleVar - Codegen Former doesn't show 2 options in console Tests: booted into craggy and checked suggestions
3 Days Ago
Bugfix: add a fuzzy check to prevent Pool read-write head desync causing lots of misses+spills Surprisingly, it's about 15-25% faster than before fix in MT scenarios, but expectedly slower by 10% in ST (still faster than og Pool) https://files.facepunch.com/danielprihodko/1b1011b1/WyJ3SUYrMB.png Tests: ran SpillageRunaway unit test 10 times, booted into Playground 4 times - no debug messages about misses/spills. botted 2k procgen world and checked print_memory
3 Days Ago
Update(tests): change spill tests assertions to permit writed head to run ahead of read head Tests: ran unit tests
3 Days Ago
Update(tests): add a synthetic test to cause pool spill runaway - moved other spillage tests to Unit namespace and merge into 1 test Made it to fail consistently at 4 consume threads Tests: ran tests
4 Days Ago
Debug: add a bit of logging to track down why fuzzy Pool can spill aggressively - added a couple temporary perf tests to stress test it Tests: botted into Playground, ran my temp tests
4 Days Ago
Merge: from main
4 Days Ago
Merge: from relax_stringview Merge to cleanup plastic branch view, no actual files changed
4 Days Ago
Merge: from playervoice_allocs - Optim: PlayerVoice processing no longer requires allocations - Clean: removed most deprecated or generic ClientRPC/ServerRPC calls, now relying fully on our RPC source generator - Update: Rust.SourceGenerator supports ReadOnlySpan and similar types Tests: unit tests, 2p session on Craggy with voice going both ways
4 Days Ago
Merge: from main
4 Days Ago
Merge: from main
8 Days Ago
Bugfix: StringView - fix invalid substring offset calculation in EndsWith overloads Tests: unit tests pass, empty bind command works
8 Days Ago
Update(tests): add unit tests that can catch invalid substring calls in StartsWith/EndsWith Tests: ran them, EndsWith fail (as reported)
8 Days Ago
Merge: from main
8 Days Ago
Clean: remove a missed todo note Not worth the effort to chase it, current code is okay Tests: none, trivial change
8 Days Ago
Merge: from main
8 Days Ago
Merge: from client_clientrpcs
8 Days Ago
Clean: removed generic ClientRPC methods - rewrite ClientRPCPlayerList into ClientRPCList All except for 2 calls now rely on Rust.CodeGen Tests: compiles
8 Days Ago
Clean: rewrite all obsolete ClientRPC calls into RpcTarget form - removed all obsolete ClientRPC calls Tests: editor compiles
9 Days Ago
Optim: avoid buffer alloc on recieving player voice packet Tests: 2p on craggy, tested voice in both directions
9 Days Ago
Clean: Get rid of all manual BaseEntity.ServerRPC calls, rely on codegen instead - rewriten some calls to not rely on generic ServerRPC - Rust.SourceGenerator.Rpc from 9db9e963 (not merged to main yet) - has support for all NetWrite.Write types Tests: compiles
10 Days Ago
Merge: from main Need to rebuild Rust.SourceGenerator
11 Days Ago
Merge: from stringview_indexof_fix
11 Days Ago
Merge: from main
11 Days Ago
Bugfix: StringView.IndexOf - prevent skipping a character if we had to abour a sequence match This affects Contains, Replace and IndexOfAny as well, as they depended on IndexOf Tests: ran unit tests, they pass
11 Days Ago
Update(tests): add a unit test case for StringView.IndexOf failing edge case Tests: test fails as expected
11 Days Ago
Bugfix: StringView.IndexOf - handle seraching for empty same way as string - amended unit tests to enforce mathicng results check Tests: ran unit tests