195 Commits over 487 Days - 0.02cph!
Merge: from triggerparentdelayedexit_optim
- Bugfix: added missing check in tickmode 1
- Bugfix: fixed TriggerParentDelayedExit cleanup logic disabling it's effects
- New: paste_line command
Tests: built a wonky ship with tickmode 1, jumped over it's gaps
Merge: from triggerparentdelayedexit_teleport_fix
- Bugfix: teleporting from a player boat should no longer cause weird parenting issues
Tests: built a boat, teleported away - no weird movement afterwards
Merge: from analytics_std_dev_fix
- Bugfix: fix for invalid std_dev calculation
Tests: none, trivial change
Merge: from triggerparentdelayedexit_optim
- Bugfix: shooting a weapon can cause NREs on the client
Tests: shot in the sky with a bunch of bursts - no NREs
Merge: from triggerparentdelayedexit_optim
- Optim: improve performance of GamePhysics.TraceRays family of queries
- Optim: TickMode 1 - add UsePlayerUpdateJobs2 related shortcuts to TriggerParent
Tests: built a boat with tickmode 1, spawned npc player on it, jumped on and off, flew in it's vicinity - no issues.
Merge: from triggerparentdelayedexit_optim
- Bugfix: properly cleanup TriggerParent and TriggerParentDelayedExit to avoid invalid invokes running
Tests: built & finished a boat, jumped around while moving, put it into edit, finished, jumped around - no errors, no extra invokes
Merge: from triggerparentdelayedexit_optim
- Bugfix: mitigate double trigger exit call on TriggerParent
- Bugfix: TriggerParentDelayedExit leaving invalid invokes when editing already existing boat
Tests: built a boat, spawned a player on it, edited - no more errors, no extra invokes running
Undo of Undo:
139927 (merge: from triggerparentdelayedexit_optim)
Will apply the fixes on top with merge
Undo: `139927` (merge: from triggerparentdelayedexit_optim)
Merge: from triggerparentdelayedexit_optim
- Optim: triggerparent.tickmode 0-3 (0 default) - various implementations for TriggerParent.OnTick execution, can be switched at runtime.
Tests: unit tests + building a boat, jumping around on it, trying going under it and climbing ladders and stairs.
Merge: from networkcache_stalegroup
- Bugfix for vanishing child entities (l-ike drybox on rhib)
Tests: spawned rhib, teleported far then back after pause, paused again - all parts stayed in place
Merge: from randomize_junkpile_checkempty
- minor optim to load balance JunkPile::CheckEmpty
Tests: looted one on craggy, saw it disappear
Merge: from procpop_debug
- Bugfix: fix DensitySpawnPopulation prefab pool being starved out, resulting in failed spawn attempts
- Optim: DensitySpawnPopulation early exits if it reached prefab population target isntead of continuing to try to spawn
- New: spawn.report now contains info about failed iterations and how many entities it recently spawned
- New: spawn.dump_map <pop> [count] which simulates spawns and generates pngs indicating general spawn area and attempted spawns. Pngs in <server_ident>/debug.
Tests: 4.5k procgen in editor - server started with full junkpile pop, simulated spawn gave better numbers
▆▅▇▍▇: █▌▋▄ ▋▊▌▊▆_▉▋▍█▊▆
- ▌▆▉▉▊▍▍▅▊▊▋▋▄ ▊█▆▊▉▉ - ▅▉▉▋▍▅ ▊▋▊ ▉▍▉ █▆ ▆▌▄▊▋▇ ▇▉▊▅▇▍▌▌▄ ▋▇ ▅█▌▉▊▆█▉█▍▅▆▊▊▅▆█▋▌█▉▌▅▅
▉▌██▄: ▆▌▋▌, ▆▌▄▊▋▊▉ ▉▅▇▇▆▇
Merge: from invis_phantom
- Bugfix: old ServerOcclusion logic could spawn a phantom player on the client for invis players
Tests: on a fresh server tried to come into range of invis player - phantom no longer spawns. Validated UsePlayerUpdateJobs 0, 1, 2
Merge: from spectate_3p_fix
- Bugfix for spectating yourself causing a client crash
Tests: tried to spectate via F1 menu - no longer possible
Merge: from spectate_3p_fix
- Bugfix: fixes 3rd person spectate camera not following spectated player
Tests: spectated target in 3rd person while original body was in a box - camera orbitted target as expected
Merge: from jobs_noclip_mask_fix
- Bugfix for UsePlayerUpdateJobs > 0 NoClip checks incorrectly using vehicle layer mask
- Updated unit test to check for above case
Tests: ran unit test, tried to push against modular vehicles on craggy
Merge: from jobs_coarsedist_crashfix
- Bugfix: fixes crash when players connect to a fresh server with UsePlayerUpdateJobs > 0
Tests: local C+S with UsePlayerUpdateJobs 2 enabled from the start - no more exceptions by height and shoredist jobs
Merge: from main
- Bugfix: Removes client-side network group setting when updating parents - fixes phantom entities on cargoship and other global network entities
Tests: flew around craggy, was able to pick up items, chop trees, kill animals. spawned cargoship and dropped items on it, spawned dressed player & killed him, then deleted them using console cmd - they got cleaned up as expected
Bugfix: handle spawn groups on non-baseentity gameobjects
Tests: procgen 2.5k in editor
Merge: from hackweek_jit_explorer
- Buildfix for missing type definitions
Tests: built scripts in all editor modes
Merge: from hackweek_jit_explorer
- New(editor): Tools/Engine/Jit Viewer that allows to inspect native instruction output from JIT compiling managed methods
Tests: used Jit Viewer to inspect BasePlayer::ServerUpdate. Ran perfsnapshot in C+S editor
Merge: from spectate_related_cmd_fixes
- sleeping-/usersinrange commands now run from spectated player's position, if spectating
Tests: used commands when spectating
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
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
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
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
Merge: from spectate_dontfloodsnapshots
- Fixes spectate not working in UsePlayerUpdateJobs 2 case
Tests: tried to spectate occluded player
Merge: from analytics_entity_createdestroy
- minor code clean
Tests: editor compiles
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
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
Merge: from hide_getinternalarrayunsafe
- Replaces dangerous API with a safer, updates existing use cases
Tests: unit tests
Merge: from analytics_v2_expose_telem
- Fixes CLient crash when running analytics.tablestats or uploaderstats
Tests: built standalone and ran the commands - no crash
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.
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
Update: Enable AnalyticsV2 by default
Staging servers ran this for a couple days now and this'll switch over clients as well.
Tests: none, trivial change
Merge: from analytics_v2_expose_telem
- Can view AnalyticsV2 stats via analytics.stats, analytics.tablestats and analytics.uploaderstats
Tests: used above to check stats in editor
Merge: from voice_when_invis_fixes
- Voice chat is now heard by nearby invisible players and spectators
Tests: tested voice replication between 2 players, when invis and when spectating. invis case also tested disconnect-reconnect while invis.
Update: minor ServerProfiler function filtering adjustment
- built from b90a83e5
Was annotating everything from SubGrid, instead of ignoring everything
Tests: unit tests
Merge: from baseplayer_serverupdateparallel
- Optimizes ServerOcclusion by reordering work and reducing number of pairs considered
- Optimizes parallel snapshot send out by reducing Pool contention
- General optims via reduced profiler instrumentation (new ServerProfiler.Core binaries)
Tests: 2p session on craggy with teleporting around and various occlusion scenarios (invis, dead, normal occluded, in view)
Merge: from spectating_disconnect_nre_fix
- Bugfix for server NRE when spectating player disconnects
Tests: 2p on Craggy, disconnected while spectating - no more NRE
Merge: from basepalyer_netgroup_interit_fix
- Fixes cargoships(and other global entities) putting players into global network group which stops replication with "outside" world
Tests: 2p session on Craggy, spawned a cargo ship and threw items, killed other player, tried spectating
Merge: from analytics_queue_rewrite
- Bugfix for missing session-start event from Client, invalid session-end event from Client, malformed json aggregation
- Added support to edit upload intervals (tied to existing same server vars)
- Adjusted uploaders for some tables to avoid trying to send to our backend
Tests: unit tests + manual testing on Craggy (S+C mode) and Bootstrap (C only)
Merge: from analytics_save
- Adds a "save" event tracking when server creates a save
Tests: triggered save in editor with logging
Buildfix: add missing CLIENT guards
Tests: build all configs locally
Merge: from analytics_queue_rewrite
- New analytics uploading backend, disabled by default (analytics.usev2)
- New debug vars - analytics.log and analytics.dryrun
Tests: unit tests, used both old and new analytics backends and monitored logs
Merge: from baseplayer_vis_nre
- Simplified how debug.invis works
- Reimplemented how global.spectate and spectateid work - spectator no longer parents to the spectated player
- Tightened existing debug logs around mystery baseplayer NRE.
This eliminates a source of potential NREs related to players spectating others, but doesn't outright forbid them
Tests: 2p sesions on Craggy, one player spectates other - killed scientist with AK(hs audio replicated), helicopter fly around, motorbike ride around, noclipped outside of usual network range and back, cycled invis, left the server and returned - no issues. Tried debug camera.
Merge: from baseplayer_vis_nre
- fixed false positive logging, better logs
Tests: built standalone and connected to staging server - no extra errors on connect
Buildfix: add missing namespace using
Tests: none, trivial change