userDaniel Pcancel

506 Commits over 123 Days - 0.17cph!

3 Days 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
3 Days Ago
Merge: from main Tests: Booted editor - no errors
3 Days Ago
Update: drop sound instances for variety of types on disable - HarborBridge - HarborCrane - PhoneDialler Tests: none, trivial changes
3 Days Ago
Bugfix: Stop DigitalClock from leaking sound instances when it's flags change - Also dropping sound refs on disable Tests: none, trivial change
3 Days Ago
Update: drop sound refs when vehicles are destroyed - Magnet Crane - MLRS - Modularcar Garage - VehicleModuleSeating - Traincar audio Tests: none, trivial changes
3 Days Ago
Update: drop sound refs when ScrapTransportHelicopter is destroyed Tests: none, trivial change
3 Days Ago
Clean: removing empty override method Tests: none, trivial change
3 Days Ago
Update: drop sound refs when AttackHelicopter is destroyed Tests: none, trivial change
3 Days Ago
Update: drop sound references when ground vehicle is disabled Tests: rode a pedal bike, jumped of and destroyed it with console commands - saw expected debug log
3 Days Ago
Undo: of the previous undo to ensure we don't hold dangling references Although the resources are cleaned up, the pointers are not so we end up with stale pointers on entity recycle Tests: none, trivial undo
3 Days Ago
Undo: Partial undo of recent work to remove unnecessary DoClientDestroy callbacks - Turns out we already invoke cleanup for sounds that are attached to network entities - meaning we don't need to manually handle it in these cases. Was confused why pedal bike wasn't leaking it's sounds on destroy, and tracked it down to above mechanism. Tests: Tested compound bow and flamethrower still work and don't leak sounds
4 Days Ago
Update: recylce RotateWhenOn's sound loop Tests: none, trivial change
4 Days Ago
Update: sanity-recycle sounds when procedural lift is disabled Tests: none, trivial change
4 Days Ago
Update: recycle SpinUp layer sounds on disable Tests: none, trivial change
4 Days Ago
Bugfix: Flamethrower now works if continuing fire after quickswitching Tests: in editor, did normal firing with quickswitching intermixed
4 Days Ago
Bugfix: Flamethrower sounds leaking or missing, pt1 - Recycle sounds when destroyed or holstered - Start play pilot sound on deploy (used to only take effect after firing) - Cleaned up a bunch of comments and whitespaces There's one more bug to do with holding the fire button while quick switching away and back to flamethrower, that's next. Tests: in editor fired and quick-switched away then monitored audio.printsounds
4 Days Ago
Bugfix: fixing misplaced call in CompoundBow Tests: none, trivial change
4 Days Ago
Bugfix: avoid leaking compound bow sound loop - Also added sound recycle on destroy It was just one instance that would be cleaned up on switch-back to bow per player. Tests: in editor pulled the bow till max, quick-switched away, checked via audio.printsounds that it was gone
4 Days Ago
Update: recycle sounds when destroying a BaseLiquidVessel Tests: none, trivial change
4 Days Ago
Update: recycle sounds when PhoneController is destroyed Tests: none, trivial change
4 Days Ago
Update: recycle sound when MobileInventoryEntity is disabled Tests: none, trivial change
4 Days Ago
Update: recycle sounds when RadiationOverlay is disabled Tests: none, trivial change
4 Days Ago
Update: recycle sounds on SoundFollowCollider disable Tests: none, trivial change
4 Days Ago
Update: CoalingTower stops it's effects on client side Shouldn't have any effect now since we don't despawn them, but will avoid pooling issues in the future if we suddenly start Tests: none, trivial change
5 Days Ago
Merge: from main Tests: Rode the zipline on craggy back and forward, ran around the island and monitored pooling logs
5 Days Ago
Merge: from profiling_improvements - Moves core of ServerProfiler to an unmanaged DLL - this deals with various mod issues and massively reduces recording overhead (less than 10% vs previous up to 7x). - Snapshot marks are prefixed with assembly name Tests: - 3 times in a row: Generated snapshot in editor on Craggy - 5 times in a row: Generated snapshot in Release standalone server with 6k world and 190k entities (with borked and good harmony mods) - 3 times in a row: Generated snapshot in Debug standalone server with 6k world and 190k entities (with borked and good harmony mods) - Built Wint64 client (debug and relase); booted up release
5 Days Ago
Update: Avoid shipping ServerProfiler to clients - Done by deleting the dll after it's built Tests: Build Win64 Client Debug and Release - no more dll
5 Days Ago
Update: added Assembly name to the snapshot marks Makes it a bit clearer where calls are coming from at the expense of larger snapshot(compressed: 2mb -> 7mb, json: 50mb->140mb). But, since the profiler is much faster now, the snapshots are smaller on 6k servers. Tests: exported 2 snapshots from Editor's Craggy, and exported 5 from standalone 6k server
5 Days Ago
Bugfix: Prohibit constexpr initialization of mutexes in ServerProfiler.Core Turns out the toolset I'm using produces non-binary compatible assembly - using an escape hatch to avoid this issue. This only manifested in standalone builds. Tests: exported 5 snapshots from procgen 6k world in a row over 2 minutes. Used both borked and good hamony mods as well.
5 Days Ago
Bugfix: fixed incorrect time scale in reports - Also replaced the debug dll with a release one (interestingly, this also removed quite a lot of scopes in the report) Tests: exported snapshot from Craggy in editor
5 Days Ago
Bugfix: various issues that snuck in during rewrite - Turns out unmanaged threads get destroyed by engine, so needed to add deferred clean up of collected telemetry - this fixed editor crashes and crashes in export thread - I accidentally recorded allocations for worker threads only - flipped to record main thread only - I was emitting methods for MethodExit and MethodException marks, which is unnecessary - cleaned up Still need to fix timestamp conversion on export, that'll be next Tests: exported snapshot from Editor's Craggy
5 Days Ago
Update: moved profiler code to unmanaged assembly - submitting debug DLL for now, will ship release once ready Can take snapshot, but export doesn't finish - likely an exception on export thread. Tests: taken snapshot in editor on Craggy - saw logs of data accumulated, but no final "compressed" message
10 Days Ago
Merge: from profiling_improvements - This brings ServerProfiler over, our own tool to generate server profiling snapshots - To activate, start your server with "-enableProfiler", to take a snapshot use admin server command profile.perfsnapshot (files in <root>/server/<ident>/profiler/) Tests: Exported multiple snapshots from Editor running Craggy, Release server running 6k Procgen world and a couple from Debug server.
10 Days Ago
Bugfix: avoid leaking repeating invoke when taking snapshots - Also avoids ambiguity of taking multiple snapshots Tests: generated 2 snapshots in editor back to back with a delay
10 Days Ago
Update: notify that a snapshot was taken when no delay was requested Tests: none, trivial change
10 Days Ago
Merge: from main Tests: built all modes in editor, exported snapshot from editor's Craggy 5 times in a row, built standalone release server and exported snapshot 3 times
10 Days Ago
Update: Add chat feedback when perf snapshot is being taken It'll warn users if they're in the middle of something important Tests: exported in editor with no delay and default standalone delay
10 Days Ago
Clean: remove unnecessary params in ProfilerExporter Tests: none, trivial change
10 Days Ago
Update: Add commandline argument support to explicitly turn on profiler instrumentation - Added log to explicitly confirm if it's enabled or disabled Tests: ran in editor and server standalone with and without it being enabled
10 Days Ago
Bugfix: avoid a rare case of dealocating main thread's Allocs storage - Code is written with the assumption that it's always there, but if 1 frame didn't record any allocs, it would nuke the storage, tripping up the profiler. Discovered when doing additional testing in standalone (somehow editor was unaffected) Tests: did 6 snapshots of standalone server with 6k map - no crashes
11 Days Ago
Update: Don't allocate storage for alloc marks on worker threads Tests: exported a couple snapshots in the editor
11 Days Ago
Update: truncate snapshot names to 32 chars Tests: none, trivial change
11 Days Ago
Update: export worker threads in the json snapshot - Also fixed a bug I introduced in previous submit that led to sporadic exceptions Tests: exported 5 profiles in a row from Craggy in Editor, exported 2 in standalone, checked in perfetto
11 Days Ago
Update: record marks from worker threads - Had to leave allocation tracking enabled for main thread only - there's a comment explaining why Need to implement export for worker threads - that's next Tests: exported snapshot from Craggy in editor and opened in Perfetto
11 Days Ago
Update: generate snapshots under server root Tests: exported in editor, found in the right location
12 Days Ago
Undo: unintentional change to ProjectSettings, reverted by hand Tests: none, trivial change
12 Days Ago
Update: rewrote ServerProfiler TLS storage - Instead of having per-frame storage, we now have one big buffer - Rewrote ProfilerExporter to support changes - Removes a weird stall on EndOfFrame invoke in standalone I couldn't find a way to implement lock-free perf mark recording with previous approach, but now I should have a way - will attempt next. Tests: exported profile from Craggy in editor and standalone 6k server - both open in Perfetto and look coherent
13 Days Ago
Update: export snapshots into separate folder Makes it easier to build tooling for it Tests: generated an editor snapshot
13 Days Ago
Update: allow specifying the name and how many frames to collect for perf snapshot - We support max 10 frames of recording, so frames input gets clamped - Also left a note for future maintenance Tests: exported multiple snapshots in editor with 1 and 11 frames
16 Days Ago
Update: adding extra logging and sanity checking when exporting a profile snapshot For some reason one of frames from standalone gets borked - hoping this'll help track it down. Tests: exported craggy in editor