userDaniel Pcancel

1,956 Commits over 488 Days - 0.17cph!

Today
Merge: from spectate_related_cmd_fixes - sleeping-/usersinrange commands now run from spectated player's position, if spectating Tests: used commands when spectating
Today
Update: when running sleeping-/usersinrange, prefer to query from spectating target position Tests: used the commands while spectating
Today
Merge: from spectate_command_fix - Bugfix for spectate doing nothing when spectating far-away player - Bugfix for error on respawn after spectate if previously didn't have a spectate target Tests: used spectate out of network range 10 times in a row, used keybind to spectate twice in a row - no issues
Today
Bugfix: Spectating - when no valid spectator found when starting to spectate, ensure we still set the right SubStrategy - If no spectate targets were found, chat message now contains the used filter Could easily happen for people using keybinds, as keybind sends "spectate True" Tests: using keybind, spectated other player twice in a row - no more errors
Today
Bugfix: Spectating - ensure Spectating flag always gets sent to the owner Fallout from the queue skipping optimization Tests: Went outside of network range, waited for subscription to unsub and and started spectating on a 2p server. Did it 10 times - no failures
Yesterday
Update: Adopt Scientist2FSM to be aware of ghostship navmesh Need to double check aiming logic (sometiems they aim at the sky), and investigate how initial on-navmesh spawning is done. Also need to convert variant FSMs Tests: spawned ship navmesh offset and with a rotation. Ran around into different areas of the ship and rooms - they pursued
Yesterday
Update: serverocclusiondebug - clarify what invalid grid means Now explicitly saying that server occlusion treats path with one or more invalid grid positions as unblocked Tests: none, trivial change
Yesterday
Bugfix: server occlusion - skip occlusion for players outside of the occlusion grid Tests: checked occlusion between y:90 and y:110 - previously would stutter(OcclusionV1) or would occlude(OcclusionV2). Tested hiding behind a hill - still works
Yesterday
Update: introduce BaseEntity.ServerNavMeshPos property and use it instead of the methods Incomplete work(need to expose transform matrices), will return after bugfixing Tests: none
3 Days Ago
Update: LimitedTurnNavAgent sets npc's position via helper functions - ScientistNPC2 overrides it to optionally map on to the detached navmesh if it's on a ghost ship - LimitedTurnNavAgent uses navmesh positions to calculate steering to waypoint in FaceTarget mode (think it was the original intent anyway) There's a bunch more code that needs to be converted just to be safe with strong waves Tests: spawned ghost ship away from craggy, enabled AI, and ran around to different areas - scientist caught up, were able to shoot me
3 Days Ago
Update: GhostShip spawns navmesh instead of NavMeshSurface - Disabled NavMeshSurface on GhostSHip prefab (will need to do it for the rest later) This stops NavMeshSurface constrantly running add-remove navmesh every server frame. Need to figure out how to tie it to NPCs Tests: visualzied navmesh in editor via gizmos, checked profiler to not see any more NavMeshSurface::UpdateActive calls
3 Days Ago
Merge: from baseplayer_serverupdateparallel - Optim for OcclusionV2 - remove extra hash lookup in a busy loop Tests: with UsePlayerUpdateJobs 2 - toggled invis in close proximity and far away, suicided away from spawn and flew back, teleported around
3 Days Ago
Optim: OcclusionV2 - skip resetting lastPlayerVisibility every frame Turns out didn't need to make the other half of changes Tests: used invis close and far away
3 Days Ago
Update: UseOcclusionV2 - simplify toggling invis - when enabling invis, notify occlusion tracking that we destroyed entity on subscriber's end - when disabling invis, skip sending snapshots - occlusion will handle it Halfway to remove the constant hashSet.Remove calls in GatherPairs loop Tests: UsePlayerUpdateJobs 2, toggled invis in front of player. went invis, flew outside network range, flew back, disabled invis - spawned correctly.
3 Days Ago
Merge: from baseplayer_serverupdateparallel - Bugfix for UsePlayerUpdateJobs 2 not replicating players for spectators - Bugfix for leaking players in occlusion groups Tests: spectated players from far away. Inspected server state after killing a sleeper
3 Days Ago
Bugfix: ServerOcclusion - clean up players from all of their occlusion groups on server destroy Turns out we were leaving a lot of "zombie" players once sleepers were killed. This would slow down server occlusion eventually. Tests: on Craggy, killed a sleeper, moved to a different network group, and checked in debugger if the occlusion group only contains my player
4 Days Ago
Bugfix: UseOcclusionV2 - handle spectating players Since we no longer do bidirectional checks when iterating occlusion groups, we ended up missing out on spectators and wouldn't allow replication to them. Tests: on craggy with UsePlayerUpdateJobs 2, flew far away to get outside of network range then started spectating - could see target moving.
4 Days Ago
Merge: from main
4 Days Ago
Merge: from spectate_dontfloodsnapshots - Bugfix for occlusion not destroying all players in UsePlayerUpdateJobs 2 mode Tests: 2p on craggy - used hill as obstruction, checked entity lists on both clients in editor
4 Days Ago
Bugfix: UsePlayerTasks - calculate end of batch correctly in SendEntityDestroyMessages_AsyncState This was causing server occlusion to skip sending some of destroy commands (from last batch), leaving a phantom player Tests: on Craggy went on behind hill, then checked editor entity list - confirmed that replicated players got removed on both ends
4 Days Ago
Merge: from main
5 Days Ago
Merge: from spectate_dontfloodsnapshots - Fixes spectate not working in UsePlayerUpdateJobs 2 case Tests: tried to spectate occluded player
5 Days Ago
Bugfix: Ensure initial player snapshot gets sent to spectator in UsePlayerUpdateJobs 2 case Tests: on craggy with UsePlayerUpdateJobs 2, took 2nd player behind a hill to occlude, then tried to spectate them - confirmed that the first snapshot got sent.
5 Days Ago
Merge: from main
7 Days Ago
Clean: post-submit feedback - rename entity_prefabId field to entity_prefab_id - rename AddShortEntity to AddShortEntityField More consistent with other examples Tests: compiles in editor
7 Days Ago
Merge: from analytics_entity_createdestroy - minor code clean Tests: editor compiles
7 Days Ago
Merge: from analytics_entity_createdestroy - we now collect entity spawn and destroy events once the server has started up (part of `gameplay_analytics` servervar) Tests: observed logs of analytics in CLIENT+SERVER editor
7 Days Ago
Merge: from main
7 Days Ago
Clean: fix formatting in Analytics.Azure.cs Most of file was offset with 2 tabs. Sorry to anyone who has conflicting changes in same file (hopefully no-one) Tests: editor compiles
8 Days Ago
Update: Analytics - track all entity spawn/destroy events after server initializes - change the format of these events to only send vital data - HackableLockedCrate no longer has it's own EntityCreated event Tests: logged analytics on Craggy - saw events being appended after server initialized
8 Days Ago
Merge: from server_occlusion_poppin - Reduce player poppin by making occlusion grid generation more conservative - Bumped occlusion version, will cause regeneration on next server boot Tests: visualized in editor, ran previously failed queries
8 Days Ago
Update: ServerOcclusion - only block occlusion cell if it's fully under terrain - bumped occlusion file version Previously we considered it was blocked if one of sample points was in terrain. This allows more occlusion queries to pass, which should reduce poppin. Tests: visualized new grid, ran previously failing query - they now pass
9 Days Ago
Merge: from hide_getinternalarrayunsafe - Replaces dangerous API with a safer, updates existing use cases Tests: unit tests
9 Days Ago
Update: replace invalid usage of GetInternalArrayUnsafe Tests: none, trivial change
9 Days Ago
Update: Hide List.GetInternalArrayUnsafe - introduce ListAsReadOnlySpanOf to help deal with casting up (since we don't have ReadOnlySpan<T>.CastUp<U>) - added simple unit tests Tests: ran unit tests
9 Days Ago
Merge: from analytics_v2_expose_telem - Fixes CLient crash when running analytics.tablestats or uploaderstats Tests: built standalone and ran the commands - no crash
9 Days Ago
▊▉▆█▋▌: ▇█▍▊ ▌▋▉▋▍▅▆▍▇▊▌▊▌▇▇▊▋▌▉▋▇▋ ▊█ ▅▉▍██▉▋▉▄ █▌▉▅▊▍▍▆▆▌▋ ▋▄▊▌▅ ▄▄█▌▅▇▄ ▅▅▊▇▆▌, ▉▋▌▆▉ ██▋▉▅ ▍▊█▄▍ ▌▊▄▌▄ ▆▇ █▆ ▊▌▅▌█▍ ▄▉▋█▋▅▌ █▉▆█ █▉▍ ▉▅▋▆▅▆█▉█▅ ▉▅▇▉ ▊▊▆▊▆▉▄▇▍. ▄▆▌▄▆: ▉▊▊▌▌ █▋█▅▌▋▆▉▉▄ ▉▍▊▋▆▌, ▌▍▌ ▅▍▌▆▆▊▍▇▆.▅▍▌█▊▇▌▌▅▉ - █▍ ▄▄▉▆ ▇▅▊▄▋█▋
10 Days Ago
Merge: from main
10 Days Ago
Merge: from spectate_dontfloodsnapshots - reduce potential delay when starting to spectate a far-away player Tests: flew around 2k procgen map, got to the other side of it then spectated player on the opposite end.
10 Days Ago
Merge: from main
10 Days Ago
Update: spectator's snapshot queue is cleared when switching between far-away targets This should speed up switching around on a server. Doesn't help if the network write queue is backed up Tests: on a 2k procgen map and fast noclip, flew around the island to load up the snapshot queue, then spectated on a player that's on the other side of the island. Observed player moving.
10 Days Ago
Undo: 135590 - ISubscriberStrategy.GatherSubscriptions outputs whether it has fully or partially gathered subscriptions After implementing throttling realized there's a better way(invalidate grid sbuscriptions for spectator) - thottling solves only half of problem Tests: editor compiles
10 Days Ago
Update: ISubscriberStrategy.GatherSubscriptions outputs whether it has fully or partially gathered subscriptions - all existing implementations report "full" gathers This feeds into whether we'll stop running UpdateSubscriptions or not. Will use this to throttle-and-prioritize cell streaming to spectators Tests: editor compiles
11 Days Ago
Merge: from networkpositiontick_reduce - Optim: buoys, containers, water-junkpiles and vines no longer always replicate their position. Reduces number of NetworkPositionTick invokes from 2309 down to 522 on 4.5k map Tests: interacted with each prefab type, observed up close and from afar
11 Days Ago
Update: codegen Tests: editor compiles
11 Days Ago
Merge: from main
11 Days Ago
Bugfix: profile.CountSyncMoveEntities - check if invoke handlers are not instantiated - Also add a total count Tests: used it while swinging from vines
11 Days Ago
Optim: VineSwingMountable no longer syncs positions by default Should save another 0.7ms Tests: Swung across multiple vines in playground_vineswinging, descended on one to ground
11 Days Ago
Optim: crate_underwater_* - only sync positions once freed Should save us 0.7ms on 4.5k server Tests: untied basic and advanced crates on Craggy and observed them raise up
11 Days Ago
Bugfix: disable Drop To Ground on spawnpoints for junkpile_water_* barrel spawns Some were incorrectly placed leading to barrel spawning on the ocean floor. Tests: spawned on craggy, inspected a bunch of junkpile_water_*, none had underwater barrels