userDaniel Pcancel

850 Commits over 243 Days - 0.15cph!

3 Months Ago
Update: borked linux ServerProfiler.Core It gets loaded, but fails to find an entry point, so it just falls over. I'll continue tomorrow. Tests: built a standalone linux server and tried launching in via WSL - my profiler script throws an exception
3 Months Ago
Update: ServerProfiler.Core separates platform specific code Required for Linux support - still figuring out how to organize msbuild projects Tests: took spanshot in Editor's Craggy, and did a couple start-stops of playing to ensure no errors
3 Months Ago
Clean: fixing typo in "ServerProfiler::AppendNameTo" Noticed when working on now-discarded assembly name skipping Tests: scripts build in editor
3 Months Ago
Clean: remove unused "Profile.cs" script Tests: made sure ditor compiles
3 Months Ago
Update: don't annotate UnityEngine.CoreModule funcs It has a lot of small functions, so it inflates the profile by quite a bit as well as adds overhead to small loops. Tests: tested in editor on Craggy
3 Months Ago
Update: Reduce default frame count for perf snapshot to 4 Going to max(10) by default is too much - on a 150 pop release server that tried to produce 3.5GB json snapshot. I'm expecting 4 to give us a 1 GB profile Tests: took a snapshot on Craggy in editor - it took 4 frames
3 Months Ago
Update: Reduce main buffer relocations when processing generating json snapshot - Also report total marks instead of max to allow predicting how big the snapshot is in case of failure Will help with reducing GC activity on the server, hopefully also reducing the generation time. Tests: locally on Craggy in editor took a couple snapshots - no issues
3 Months Ago
Merge: from main Tests: none
3 Months Ago
Bugfix: Prevent game-object pooling if done mid-scene switch - When MonoBehaviours are being destroyed due to scene switch, it can cause an invalid transform hierarchy modification, causing an error MonoBehaviors can clean up their resources in OnDisable, which can cause them to be pooled - example: AmbienceWaveSounds. Tests: validated it doesn't affect entity pool warmup sequence (as we create->retire there). Using `log.level Audio 2` and a bit of 100% code-forcing the issue, disconnected 3 times: - without the fix, it was 100% generating an error on disconnected - with the fix, had 0 error reports
3 Months Ago
Merge: from main Tests: none
3 Months Ago
Clean: reduce code duplication for BasePlayer.WaterFactor Tests: none, trivial change
3 Months Ago
▅█▆▋▊: ▊▌▌▍ █▆▉▍█▊▍▊▌▌▉▅_▋▆█▊▇ ▄▉▌▆▇▆ ▆▇▄█▉▆ ▄ ▅▅▄▌▊ ▇▍ ▆▍█▄▍▌▋ █▍ ▇▅▋▄▆▊▆▄▋▅ ▄▆▊█▆█▇ - ▋▋▇▅▍▊ ▅▋ ▄▄ ▄▋▆█▉▋ █▊▆▋▆▌▉▍::▍▄█▇▊▊█▆▊▊▅▍ ▅▌ █▉%, ▊▇▆ ▉▆▇▉▋█▉▅▌▄▊▅ ▍▆ █ ▆▌▅▌▄█ ▊▌▄▊ (▇▉▊▊▆▋ ▅▌▊▍ ▋▉ ▉▋▌▅▉▊▆▄ █▅ ▋ ▋▊▊▇ ▌▇▋▍▇▆) ▌█▍▌▉: ▉▇▉ ▇▇ ▆▊▊▆▇▍, ▌▍▍▊▄▅▅▌ ▌▍▊▇▇▉▌▄▇▇ ▋▇▍ ▆▍▄▌ █ ▅▋█▄▄▇ ▍▌ ▉▌▍▋ ▅▊▆▄▄▉▍▍▆ - ▌▉▆▇▆▉▄▄▉ ▍▌▋▊▄▇█▌ ▍▆▇█▍ ▍▄▊▅▄▅▌▆▇▄▍ ▆▇▆ ▅▋▋▋▍▋ ▍▍▅▍▉▉▌ ▊▅ ▉▋▊▋ ▌▊▅▋ ▄▉▍▆
3 Months Ago
▉▉▅: `▅▆▄█▇▉▇▄.▅▍▍▉▄▇▍_▌▇▋▄▋▇▇██▊▍▌▅█` ▄▇▍▆▄▆▉ █▌▅▅▇▋ ▇▆ ▌▅▊▊▉▉▌ ▇▉▋▋▋ ▌▉ ▋█▋ ▅▉▅▊▍▆▄▅::█▇█▉▌█▊▄ - ▅▉█ ▇▅ ▊▍▅ ▍██▇▉▋▌ ▅▋▇▅▅▅▊, ▍▍▊█▅▅ ▇▋ ▊ ▇▄▊ ▊▄ ▆▄▊█. ▊▍▊▉▌▊▊▋ ▉▇ ▌▉▇▉▌ ▉▊▉▊▋▉ ▋▋▅▌▅▆▌▄▌▌▊. ▊▊█ ▆ ▍█▄▍▌▇ ▊▄▍ ▄▍▉▋▅▇▊█ ▍▍▍ ▅█ ▋▊█▋ ▊▋▉ ▅▌▊ ▄▊▉ ▅▉ ▋▌▅▅▋▅▋. ▅▋▄▌█: ▅▆▋▋▉▄█▋ █▉ ▄▋▌█▌▅, ▇█▅ ▊▆▅▋▄▋, ▋█▇▍█ ▋ ▋▌▆█▌▄▍█▊▄ █▄ ▆▌█▆▆▇▉▌ ▆▍▆▆ - ▍▉▋▄▋▉▅▋▍ ▌▆ ▍▉▄▄▄█ ▍▉ ▉▋▅█▅▆▉▅
3 Months Ago
Update: comments - fixed spelling mistake - added an explanation for invalidation of cached tick state Tests: none, trivial change
3 Months Ago
▄▊▇▇▇▇: ▅▉▋▄▊▄ ▆▌▊▉▍ ▆▄▌▆ ▉▌▉▄▉ ▆▄▄▆ ▌▌▌▌▅▊█▊ ▆▍ ▄▄▌▆██▄ ▅▍▆▄▋▍ - ▌▍█▋ ▌▆▋▄▅ ▉█▆▌▅▇▊▄▄ ▇▍ ▅▌▆▋▉▅▉▉ ▅▅▌▅▅▍▄, ▍▊ ▌▉ ▇█▌▌▉▇ ▄▉▇▊█▌▅▊▋ ▌▍▊▋ ▅▊▋▆▍▄ ▊▆▅ ▌▄█▍▆▉▄ ▉▆▍, ▋▇ ▉ ▉▆▌▊▆, ▊▉▇ ▅▄▆▍▊▍ ▊▆▍▌▌ ▅▍▋▆▆█ ▉▊▊▆▉▄▍▇▊▅ █▇▆ ▋▄▋▋ ▋▄▅▄▉▊ █▆ ▇▅▌▆▊▌, ▄▊▆ ▊▍▌ ▅▉'▄ ▇▉▄▋ ▅▌ ▋▄▋▇▅ ▍▆▅█ ▄▄▅▍▆▍ ▄▅▄ ▇█▋▍▄▄▌▊▆▍(▌▉▉, ▌▆█▊▄▄▌▉▌▋) ▉▌▊▍▊: ▅▇▅▆, ▇▄█▋▅▋▄ ▋▉█▋▆▆▌
3 Months Ago
▌▊▇▅▌: ▉▊▉ █▇▇ ▅▇▊▊ ▆▋▄▋▍▍ ▅▅▄▄▅▊▌▇▆▅ - ▆▌▊▊ ▅▅▋▉▆▇▆▅▅▅ ▊▊▍▍▍ ▌▆▊▋▍▋ ▉▇▅▋▍▌▆▆▆ ▄▇▋▍ ▉▅▍▉▉▊▊▄ ▄▍█▉▋▌▇ ▇▍▉ ▄▋▍▊▌▊▌▇ - █▍▌▍▄▇▌ ▄█▌▍, ▋▅▅▆ ▊▉█▋▅ ▆▍▌▍▇ - ▉▆▄▄ ▌▇▇▊▆ ▅▊▅▅▌▅▊ ▋█▉▇▅█▍█ ▆▅▇▍▊▄▉▅▌▉.▉▄▌▄▉█▉▄▍▍▉ ▉▇▉▊▉, ▉█▇▉▅▄▇▉ ▋▋▍█▄▅▊▉▆▉▇▄▋▊ ▍▄▌▅ █▍ ▍▋ ▋▌ ▇▅▉▄▌▇ ██▊▆▆: ▌▉▅▄▌▇ ▍▆▌▆▉▋▌▉▆▋▄▊█ ▊▄ ▍▄▄▍▉▊ ▋▍▄▌▇▉, █▄▉ ▊▄▊▉▍ █▍▊▋▇▋ █▊▉ █▌▆▊ ▆▍█▄▅, ▆▋▆▇ ▋▇▅▆▇▉▊▅ ▍▍▌▊▊▄█▇▉ ▋▅▅ ▇▊▄▅ ▌ ▆▅▄▉▌▇▌ ▋▄▅▆▊ ▄▇▍▍██▌ - █▍▉▌▄▋▉█▉ ▄▍▄▇ ▄▇▅ ▇▉▊▅▉▍
3 Months Ago
▊▇▌█▆: ▊▄▉███▍▌ █▄ ▆█▄▉▌▌ ▅▌▆▆▄▋▌▅▋▆▅ ▊█▌▌ ▉▇▅▊▅▄▉▆ ▍▊▍▌▅▌▍ ▊▌▅▇█▉▉▆ - ▆▌▆█▋▆ ▆▇█▉▆▋▄▍▌▊▌▊▉ ▇▊▄▍ ▋▆▋▉▆█▅ ▇▆▍ ▅▍▌▍▉▌▍▊▆ █▆▌▅▌▋ ▄██▌▍: ▅▉▅▌, ▉▆▍▊▄▌▇ ▆▍▋▍▍▍
3 Months Ago
█▄▆▋▊: ▊▉▉█ █▉▋▇▆█▆▄::▅▇▋▋▆███ ▌▍▍▍▇ ▆▄█▆▄ █▌▌▌▅ ▄▋▍ ▇▋▉▅▋▇▌ ▄▄▄▉▋▆▉ ▋▆▋▊ ▊▊▅▆▉ - ▆▅▆▍ ▇▅▇▅▋▄▆ ▅▋▍▊▆▉▄ ▆▆▍▍▉▋▍▅ ▉▄██ ▅▋ ▄▅ ▆▄█▇█ ▌▋▌▌ ▋▄ █▍▇▅█▄▉ (▌▄▉▇▊█▄▆ ▉▆▋▆ ▌█▄▉ ▊▊▋▅ ▊▇ ▉▅ ▅▋▋▉▅▆▍▍) ▇▉▍▄▊▌█▄▇▅▇█▅ ▉▌▉▇▇▊ - █▋ ▌▍█▉█▆ ▌▊▉ ▄▇▇▋▌▆▉▍ ▍▋▆▊▌█▄▅ ▍▉▍▅▅▋▉█ ▅▉ ▊█▉▆▉ ▉█▋▅, ▍▄▇▊▉▄▇ █▍ ▆▅▄████▋ ▍█▇▆▋▌▊ ▇▊▅█-▊▅▊▆ ▄▇▄ ▄▉▍▇▅▌ ▆▊▆▄█▅ ▍▅ ▌▌▊▍█▌ ▆▅ ▋▆▍▍ - ▍▌▋▉ ▍▍ ▅▇▇▌▋▉▇ ▉▍▅▊ ▉▌█▅. ▆▌▇▄▆: ▊▉▌▌▋▊▇▅ ▌█▍▊▄ ▉▄▊▌▍▄ ▄▉▍ ▌▄▉▅ ▇ ▉▋▋▄█▉▊▇ ▉█▉▄▅ ▆▅▊▉▆▄▉ - ▇▇█ █ ▍▆▍▋▊▋▌▇▉ ▆▋ █▅██▄█▆█ ▆▆▌▍▌▇▆ ▆▌ █▊▄▅ ▇▆▄▆▊▍▊.
3 Months Ago
▊▋▆▋▅: ▊▇▌▋▉ ▊▆▉▋▇ ▍▋▆▉▌ ▅▍▄██▊▇ ▄█▇ ▆▌▍▊▅▄▉▊::▅▊▍▅▄▊▇▌▅▄ ▇▆▄▊ ▅▉▄▋▋▋▇ ▉ ▆▆█▇▆▋▇▍▉ ▇▇▄▅▌, ▌▍▍▇▄▉█▆ ▋▆▆▊▋█▉▇▆▌ ▆▊█▊ ▋▊▇▊▉▆▉▍ ▌▄ ▉▇▊▅▌▇▊ ▌▄ ▍█▅▄▊▄▌(▇▆▄▉▋██▆ ▅▆▍█▍ ▆▋▌█ ▆▅▇▌▇▉▍▆█ ▉█▆▉▉▋▉▋) ▌▆▌▆▆: ▄▌█▍▉▇▅▌ ▌▆▊▋▌ ▉▊▍▍▊▅ ▇▇▌ ▄▍▉ ▊▆▌▆▇█ ▍▅ ▄▄▉██▍. ▊▄▉▋ ▆ ▉▌▋▅ ▍▋▌▉▋▍▍ - ▆▌█▇▍▄▇▊ █▋▊ ▊▋█▅▉ ▉▋▉.
3 Months Ago
Clean: further comments Tests: none, trivial change
3 Months Ago
Clean: fixed comments They got out of date from my initial experiments. Tests: none, trivial change
3 Months Ago
Optim: reimplementing List.Compare extension via hash->sort approach - Only implemented for ref types for now, but can be extended to value-types as well - Has a limitation of requiring no duiplicates in queries lists - Dependent on the hash quality - we have a slow, quadratic path when a hash collision occurs - Measured performance - largest case (2048, 512) is an order faster than previous impl (0.75ms vs 12.5ms) Goal was to reduce the number of hash lookups from the original algorithm and to reduce it's quadratic nature. Tests: Ran the unit tests - all pass
3 Months Ago
Update: rewrote ListExtension test to soon-to-chan - Also added a perf test - Measured initial implementation's timings - (2048,512) takes 12.5ms on average I've been working on an optimization that requires me to use ref-types rather than value-types Tests: run the test in editor, all cases pass
3 Months Ago
Optim: remove dead bots from global tracking - Removed now unnecessary null check when simulating bots Tests: on craggy spawned 15 bots then killed them - counter went up and down accordingly. Flew around 3.5k procmap, gave it a soak test. Both cases no NREs.
3 Months Ago
New: console command to report bot count on the server. Tests: loaded into 3.5k procgen world and used the command
3 Months Ago
Merge: from soundmodulator_leak Fixes an audio-related NRE when performing generic interactions (zipline, bike, etc). Tests: rode the zipline on Craggy a bunch of times(the whole way and with quick jump-off). Couldn't repro the NRE (though couldn't do it originally anyway)
3 Months Ago
Bugfix: Avoid double-recycle of sounds when pooling is disabled - switched to checking recycle time it used to rely on whether fade modulator was present or not as a flag, which doesn't work when pooling is disabled. And we can double-recycle now via NotifyOnParentDestroying and OnDisable Tests: none, but super-confident about the theory
3 Months Ago
Merge: from main Tests: none, trivial merge
3 Months Ago
Merge: from soundmodulator_leak Disabling audio pooling to mitigate SoundModulator NRE in BlendedSoundLoops Tests: on Craggy ran around, rode the zipline, hunted animals. Also left it to stew for a bit - no exceptions
3 Months Ago
Update: disable client-side sound pooling - Gives us time to track down the missing bad-pooling scenario Tests: on Craggy ran around, rode the zipline, hunted animals. Also left it to stew for a bit - no exceptions
3 Months Ago
Update: Adding a wait statement - Using it to help debug issues with procedural world not running world generation. Tests: ran LoadProcTest - it waited
4 Months Ago
Update: Delete the symlink on end of test run This was previously causing deletion of blobs on unity close/open Tests: ran LoadProcTest couple times
4 Months Ago
Merge: from soundmodulator_leak Hopefully improving stuttering audio for ModularCrane in bad server conditions Tests: while connected to a local staging server moved the arm and rotated the cabin
4 Months Ago
Update: simplify MagnetCrane's audio handling - this is an experiemental change, as in theory it should help stuttering audio, but couldn't validate in practice Tests: while connected to a local staging server moved the arm and rotated the cabin(though I couldn't reproduce the original issue anyway)
4 Months Ago
Merge: from main Tests: none, no conflicts
4 Months Ago
Update: change indent_style to 4 spaces Tests: regenerated projects and tabbed a couple times - it's spaces
4 Months Ago
Update: PerfFwkManager can switch scenes - Done via a basic command interpreter (same as ConsoleSystem, just supporting coroutines) - renamed PerfFwk.IsReady to IsDone Tests: ran the LoadProcTest - asserts validated the switch is done, but no proc gen happening yet
4 Months Ago
Update: Executing deferred command and waiting for it's execution - also fixed the deferred command not being executed because it's missing the prefix (this took weirdly long to spot) Using it to pass control for the actual testing top the game assembly Tests: Ran LoadProcTest, it passed
4 Months Ago
Hackfix: skip bootstrap smoke test at the start - Key here is skipping error logs, since they trigger test failures. Right now we build this weird mutant executable, and it tries to run server-side smoke test despite being on client. It emits an error, that we can't suppress that early, and which tips over the tests. I'll need to fix this properly once I got better build pipeline control. Tests: ran LoadProcTest - it passed (though it's mostly a dummy test)
4 Months Ago
Buildfix: added missing namespace qualifier Tests: none, trivial change
4 Months Ago
Bugfix: resolve location of asset bundles when running standalone perf test - Also symlinking server bundles instead of client, for now Tests: ran the LoadProcTest, no more logs of failing to open bundles
4 Months Ago
Merge: from main Tests: none (big merge, going to fix any issues in follow up commits)
4 Months Ago
Merge: from VendingMachinePooling Fixes a minor bug that caused Vending Machine's protobuf pool to inflate Tests: spawned a vending machine on craggy, saved, loaded craggy again - marker was present. Monitored pooling stats - seemed normal.
4 Months Ago
Bugfix: avoid inflating VendingMachine's protobuf pool - Rewritten with relying on pooling Tests: spawned a vending machine on craggy, saved, loaded craggy again - marker was present. Monitored pooling stats - seemed normal.
4 Months Ago
Merge: from soundmodulator_leak - Fixed sound leaks from quickswitching scenarios - Fixes wrong loop sound being played when coasting on a pedal bike - Fixing flamethrower not playing sound when quickswitching while holding fire button - Fixing pilot sound not played on taking out a flamethrower - Recycle footsteps when their sounds end, instead of potentially incorrect preset time Tests: played with a lot of weapons and vehicles while monitoring sounds via audio.printsounds and log.level Audio 2
4 Months Ago
Merge: from main Tests: Booted editor - no errors
4 Months Ago
Update: drop sound instances for variety of types on disable - HarborBridge - HarborCrane - PhoneDialler Tests: none, trivial changes
4 Months Ago
Bugfix: Stop DigitalClock from leaking sound instances when it's flags change - Also dropping sound refs on disable Tests: none, trivial change
4 Months Ago
Update: drop sound refs when vehicles are destroyed - Magnet Crane - MLRS - Modularcar Garage - VehicleModuleSeating - Traincar audio Tests: none, trivial changes
4 Months Ago
Update: drop sound refs when ScrapTransportHelicopter is destroyed Tests: none, trivial change