userDaniel Pcancel

1,968 Commits over 488 Days - 0.17cph!

34 Days Ago
▉█▊▋▊▋: █▍▌▇▇▊▋▉▇▆▋ ▋█▅▍▅.▋▅█▊▄ ▆▉▋▆▊█▌ - ▊▉▄▅▍▍█ ▌▉▍▌▊▊▍▇▍▇.█▊▅▉█▋▉▆▍▋▅█▄▄▋ ▅▌▌▌▆ ▉▋ ▉▊▅▊▋▇▌▄▅ - ▌▊█▌ ▄▇▆▆▌▉▌▄ ▆ ▆██▌ ▅█▌▄▉ ▋▋▋▅██▌▍▅█ ▍▉▆▌▉▆▋▌▉ ▊▄ ▊▊▋▆█ ▊▅▌▅▇▅▅▇▍▋ ▅▍ ▌▋█▌▇█ ▄▊▍▊▌▊█ ▊▆ █▉▄▄▍▌▄▌▊▅▍▅▋█▍, ▍▌ ▅▌ ▄▋▅ ▅▇▆▊▊█▄ ▆▆ ▋▊▍▊▋▌▊▅▄▋ ▍▋▋▇▆▆▆▍ ▊▄█▊▊ █▆▇▊▋ <-> ▆▆▉▋█▌▆ ▉▌▋▆ ▄▅▍▋ ▆▋██▍. ▄███▇▆▋, ▅▄█ ██▅▍▌▌ ▆▆ ▇▌▅▋██▋▊▌█▌ █▊▌▌▋: ▊▌▋▄▇ ▅▄ ▄█▇▇▌▌▆ ▅▌ ▄▉▄▊▌▇▄▍▋▋, ▇▆▆▊▌▊▉█▆ ▄▄▅▌▅, ▋▅▆▄▄ ▍▋▉▇▄▇, ▅▋▆▌▇▌▌▇ ▊▋▋▋▌, ▉▋▆▇▄▅▋▍ ▊▍▌▋▅ - ▍▌▋▍▌▍▆▆▋▌ ▆▊▌▅ ▆▋▆ ▇▍█▇▉ ▇▊ █▉▆ ▇██▌█ ▅▅▌▍. ▉▋▍▌█▊▋▌▄▋ ▅▍ █▅█▉▌▇, ▌█▉ ▅▉ ▆ ▊▍▋▇ ▍▌█ - ▋▆▇▅█▇▅▍ ▊▋█▊▊█▇ ▌▇▍▆ ▉▌ ▇█ ██▆▋/▅▉▌█▌▅▆, █▊ ▅▍▍ ▆ ▋█▅ ▊▄▉▌▌▇▄█▇▋▇.
34 Days Ago
Bugfix: remove false-positive log for deferred player destroy - remove unnecessary override Discovered when spactating a player that constantly toggles invis. Doesn't fix the NRE itself, but further reduces false-positives. Still looking for the root cause Tests: spectated a player constantly toggling invis
34 Days Ago
Bugfix: reduce error false-positives by ensuring bot IDs never overlap - Permit random overlap once we exhaust MaxBotIdRange ids (which is old behavior) but emit an error Because we always picked a random bot ID, it was possible that there'd be an overlap and it could confuse dependent systems (like my logging for the NRE). Hoping this reduces false-positive error logging. Tests: in editor spawned a couple players and killed them, then monitored the ID queue with debugger
34 Days Ago
Merge: from main
35 Days Ago
Merge: from main Didn't refresh and missed the desired fixes
35 Days Ago
Merge: from main
35 Days Ago
Update: skip server occlusion culling for players in the deep sea It'll still have some overhead for the server occlusion processing, but that'll be improved separately Tests: 2p session on craggy - tested occlusion with both on Craggy, one on Craggy and one in deep sea, and both in deep sea
36 Days Ago
Bugfix(editor): StoreBundleTool - handle invalid paths This can happen if the serialized path now points to renamed or deleted resource. Tests: none, don't have a case like that right now.
36 Days Ago
Update(editor): StoreBundleTool - stage timings emit volume of work Makes it easier to confirm if it's doing anything when there are no dirty changes Tests: ran the tool
36 Days Ago
Clean(editor): remove Tools/Menu2 Checked both the editor pref by variable and by value, they're not used anywhere Tests: none, trivial change
36 Days Ago
Update(editor): StoreBundleTool - scan scriptable objects - fix assembly scanner skipping public fields if it's type is nested Tests: created a dummy scriptable object, ran a scan - it got picked up
36 Days Ago
Updateeditor): StoreBundleTool - activate bundle assignment code - removed extra logging Tests: editor compiles
36 Days Ago
Update(editor): StoreBundleTool - scan for already-assigned-to-bundles resources - fixed timer reporting invalid times for sections of code Tests: ran it, doesn't find any diffs with my manual assignments from last month
36 Days Ago
Update(editor): StoreBundleTool - add proxy path scanning from existing prefabs Tests: ran the code, checked some of the paths. gotta implement comparison to fully validate
36 Days Ago
Update(editor): StoreBundleTool - add support for array traversal Tests: ran the tool, it found all annotated fields
36 Days Ago
Update(editor): StoreBundleTool - properly implement reflection shortcutting Tests: stepped through how it's accumulated. will test more later
36 Days Ago
Update(editor): start of StoreBundleTool - automates bundle assignment for properties with ProxyPathFor attrib - starting with assembly scanning Idea is to scan the assembly, detect all the relevant fields, resolve them and assign referenced assets to the bundle Tests: ran it, doesn't find all fields yet
36 Days Ago
Merge: from baseplayer_vis_nre - fixed false positive logging, better logs Tests: built standalone and connected to staging server - no extra errors on connect
36 Days Ago
Merge: from main
36 Days Ago
Update: move breadcrumbs a bit to get better callstack - eliminated a false-positive Tests: built standalone and connected to staging - no more error logs on connect to server
37 Days Ago
Merge: from main
37 Days Ago
Buildfix: add missing namespace using Tests: none, trivial change
37 Days Ago
Merge: from analytics_track_menu_times - Client analytics now aggregates frametimes, lag spikes and gc events into InGame, MainMenu, Inventory, Crafting, Contacts and Map groups - Skip sending lag spikes and gc counts if there were none during performance logging tick Tests: observerd client_perf analytics ticks in editor with debug code
37 Days Ago
Clean: remove unused namespace using Tests: none, trivial change
37 Days Ago
Clean: remove debug logging Tests: compiles in editor
37 Days Ago
Optim: don't emmit lag spikes and gc counts if there weren't any during analytics ticks Tests: observed couple client_perf ticks in editor
37 Days Ago
Bugfix: no more use-after-free for Frametimes - also reimplemented the fix from previous CL, as it was part of the problem Tests: in editor spawned on craggy and opened main menu for multiple client analytics ticks - no more exceptions
37 Days Ago
Update: Client Analytics - categorize client frametimes, gc_count and lagspikes - Bugfixing leaking a couple List<TimeSpan> containers We now filter those out to InGame, MainMenu, Inventory, Crafting, Contacts and Map frame types and aggregate per type. Everything apart from InGame aggregates slightly reduced info set. New analytics is backwards compatible. Tests: left it running with debug logging. relevant info seems to come through. There's a bug with use-after-free of List<TimeSpan> - will fix next
38 Days Ago
Update: convert error logs to error-once logs The current changes mitigate the problem, which will allow peeps to play longer while we chase up what's going wrong. Tests: none, trivial change
38 Days Ago
Update: adding more logging in an attempt to catch baseplayer NREs Tests: 2p local session with spectating, disconnects
38 Days Ago
Clean: leaving a TODO note for one I return to this
41 Days Ago
Update: if either logging or dry run is enabled, log uploader activity Previously it was editor only, and you had to enable dry-run specifically to get those logs. This makes it easier to work with. Tests: none, trivial change
41 Days Ago
Bugfix: in editor with SERVER+CLIENT send client records to client gameplay AnalyticsTable Not sure if it's technicall bug, but it did differ from original logic Tests: logged activity in the editor
41 Days Ago
Optim: wind down AzureAnalyticsUploader when UseV2 is active Gets rid of async tasks that are generating allocs while waiting for work Tests: in editor activated v2, waited till upload happens, then disabled and waited for normal upload
41 Days Ago
Update: name the analytics thread Tests: dry run in the editor
41 Days Ago
Optim: reduce allocations by relying less on async/await - Use a Thread instead of a Task for internal AnalyticsManager work (this also fixed editor 10s shutdown delay) - Allow internal upload tasks to run in parallel instead of waiting on sequential completion Previously it would frequently GC, now it's back to normal Tests: ran in editor in dry run mode. ran unit tests
41 Days Ago
Update: add profiling markers to AnalyticsManager and it's uploaders Tests: ran in editor
41 Days Ago
Update: FPUploaderImpl - add a warning in case someone attempts to feed it non-json AnalyticsTable Tests: none, trivial change
41 Days Ago
Update: append AnalyticsTable name when logging accumulator activity Tests: none, trivial change
41 Days Ago
Update: accumulator log now also outputs byte size (pre compression if there is one) Tests: none, trivial change
41 Days Ago
Bugfix: fix false "EventRecord pooling error" when disabling analytics.usev2 Hoping to rip it out once we fully convert to v2 Tests: unit tests + enabled-disabled in editor
41 Days Ago
Update: move analytics-for-server shutdown to ServerMgr.CloseConnection This shuts down server before steamwroks in SERVER+CLIENT editor - makes editor's lifecycle management less confusing Tests: confirmed client session end event still fires in editor
41 Days Ago
Bugfix: ensure session end event gets enqueued for V2 analytics Tests: monitored in editor, saw it when stopping player
41 Days Ago
Clean: move new implementation into it's own file Might split it up further, but not needed for now Tests: editor compiles
41 Days Ago
Bugfix: respect rate limiters of AnalyticsTables and avoid mixing data when uploading - Fixed by creating an accumulator per AnalyticsTable that's managed by uploaders I need to profile and work on allocs, but it seems to be working Tests: unit tests and monitored client telemetry
42 Days Ago
Update: Integrate the new AnalyticsManager into existing logic - Guarded by `analytics.usev2` (default off for now) - Bugfix for rate-limiting being disabled due to mixing Now and UtcNow (whoops) - Added global `analytics.dryrun` and `analytics.log` Did a cursory test in editor using dry running and it seems to be working, but it leaks performance data into player_tick blobs. Need to reorganize accumulators again - always-aggregate isn't always valid. Tests: used above switches and monitored data flow.
42 Days Ago
Update: Add FallbackUploader - uses primary uploader if enabled, otherwise uses fallback - Added a test that checks it - DryRun is now a per-accumulator settings instead of a global overwrite - lets each uplaoder decide how to act Allows us to setup flexible chains(extra loggers, backups, etc), and more importantly we can emulate current analytics flow Tests: ran unit tests
42 Days Ago
Update: Move accumulators into uploaders - AnalyticsTests.TestUploade has logging enabled permanently to help validate things It was a blocker to implement uploader chains (which I discovered we need for server, but should be quick) Tests: ran unit tests
42 Days Ago
Clean: rename AnalyticsUploader -> AnalyticsManager Disambiguates from the internal IUploader Tests: compiles in editor
42 Days Ago
Bugfix: apply separator in json-lists aggregation correctly Tests: used accumulator logging to see what is being fed