Alpha v1.0.0

Commits

All Rust commits from Facepunch

27 total commits for branch:
/

Member Avatar
Daniel P14/01/202619:37:13
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140859)

Tests: add basic OcclusionGroup tests - covers both old and new logic Tests: ran unit tests, most fail, only trivial passes. Will resolve tomorrow.

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202612:33:20
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140824)

Update: merge old OcclusionGroup code and put it behind DisableNewOcclusionGroups switch - make DisableNewOcclusionGroups true by default, can be turned off with -enable-new-server-occlusion-groups command line arg Tests: 2p on Craggy - moved, teleported, reconnected, checked server occlusion still works

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202611:40:17
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140819)

Update: declare a boot time switch to disable new server occlusion groups Need to bring back old logic for it, that'll be next. Tests: none, trivial change

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202611:35:18
0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202602:21:52
0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202601:48:31
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140781)

Clean: move OcclusionValidateGroups servervar to ServerOcclusion - codegen Tests: server compiles

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202601:41:13
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140779)

Clean: GetOccludees => OcclusionGroup getter Tests: server compiles

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202601:39:27
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140778)

Clean: OcclusionGroups - define bespoke ServerOcclusion.Group - updated code references Tests: all modes compile in editor

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202601:23:17
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140777)

Clean: OcclusionGroup - lower core of logic from BasePlayer to BaseNetworkable - also move cached subscribers cleanup to BasePlayer.OnServerDestroy - split off server occlusion logic into it's own BaseNetworkable potion Tests: all platforms compile in editor

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P14/01/202600:48:39
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140774)

Bugfix: ServerOcclusion - clean up external references when BaseNetworkable is destoyed Dobbie's free, this is the last bug I could theorycraft. There's a small window before occlusion would update and unsubscribe where a teleport then destroy could leave a dangling set of references, but this doesn't happen because of unnecessary SetParent being called when BaseEntity is destroyed on the server(but this should be fixed separately) Tests: not testable

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202623:59:28
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140766)

Update: OcclusionGroup - tracked down another false-positive error - left a comment explaining why check was removed Whena player reconnects and reclaims a sleeper with a player in proximity, the eventual network group subscription will try to append to the occlusion group that already contains the reconnected player. Tests: reconnected with a player in vicinity

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202623:51:03
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140765)

Bugfix: ServerOcclusion - clean up occlusion group refs when retiring groups Fixes false-positive error logs Tests: 2p, 2nd player disconnects while 1st player is in vicinity - afterwards first player walks out then back into to original network cell

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202622:35:12
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140762)

Update: Update: OcclusionGroups - each members tracks which group refers to it Needed for an upcomign bugfix in OnDestroy and helps detect issues Tests: 2p on Craggy - tested players close, flying far away, teleporting, disconnect-reconnect - logged an extra problem to address

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202622:08:31
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140761)

Clean: refactored out OcclusionOnDestroy, as it was getitng messy - also added a null check to avoid pooling issues Tests: none, trivial changes

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202621:55:53
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140759)

Bugfix: OcclusionGroups - ensure sleepers are tracked when player transitions to a different occlusiongroup This is an edge case when being in subscription range of a sleeper - sleeper's group would contain it and player, but player's group would have sleeper missing Tests: moved around in the vicinity of sleeper, checked internal state

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202621:29:03
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140757)

Bugfix: OcclusionGroups - fix NRE when moving out of group with a sleeper - replaced with a IsVisibleFromFar check - also reworked teleportation logic via IsVisibleFromFar, as that's more correct - also IsVisibleFrom range check was wrong, so fixed that Previous code relied on subscriber to check if move-out-of-bounds occurred, but sleepers don't have a subscriber, so it NREed Tests: moved away from a cell with a sleeper, checked internal state

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202620:56:58
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140756)

Update: NetworkVisibilityGrid gains IsVisibleFromNear/Far(Group from, Group to) - expose via provider interface Needed for occlusion groups case of moving sleepers (as I can't rely on subscriber check) Tests: testted as part of followup bugfix

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202617:15:13
0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202617:13:29
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140748)

Bugfix: OcclusionGroups - eagerly clean up occlusion group when teleporting - consolidated occlusion-group leaving logic Caught the bastard - due to over-time nature of subscription updating, there was a window in which the player could teleport and disconnect, leading to a leak of occlusion group and a null participant. Tests: on client, teleport2marker;kill, then separatelly disconnect; then on server run OcclusionValidateGroupson - all's gud

1
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202613:04:14
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140730)

Update: minor changes - comment explaining why occlusion group isn't retired - error log for cases where we're unsubscribing from network group but we're not in it's occlusion group - TODO comment outlining a desync between group transitions on the border of subscription range and networkable destruction Tests: none, trivial changes

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P13/01/202611:09:49
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140722)

Bugfix: check if occlusion group participant is null when cleaning up occlusion groups Should not be needed, but until I track down where nulls are happening this can prevent other issues Tests: none, trivial change

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P12/01/202615:35:02
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140660)

Update: add OcclusionValidateGroups servervar - also replaced the conditional log with a logerror, to make sure we spot it - codegen Couldn't reproduce the issue locally, so I'm missing something, including whether it was a false-positive or not. This should help check every bad case and confirm whether the issue is legit or not Tests: used the command in a couple scenarios - players close, players far, players outside of network range, with invis on/off

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P12/01/202613:30:12
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140652)

Update: replace throw with a devbuild-conditional error log This is a cirtical code path, so we can't interrupt it or we'll corrupt global state. Think I see where the problem is coming from, will attempt to fix next Tests: none, trivial change

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P12/01/202612:27:25
0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P09/01/202613:10:26
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140580)

Bugfix: when player disconnects, ensure we destroy relevant occlusion groups - destroy local group if no local participants present - remove destroyed participant from other occlusion group member's groups Tests: 2p on Craggy in different cells - get 2nd player to disconnect, then kill sleepers. 1st player walks into the cell - no more NREs. Ran usual occlusion checks (fly away and back, hide behind terrain)

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P09/01/202600:02:23
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140546)

Optim: use pooling for occlusion groups - prealloc 2k groups in the pool (1 per player and sleeper) Tests: 2p on Craggy - nocliping across various grid cells and checking print_memory stats

1
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Member Avatar
Daniel P08/01/202623:44:33
rust_reboot/main/useplayertasks_removegroupocludee_nre (#140545)

Optim: ServerOcclsuion - rewrite how we track occlusion groups - also fixes server occlusion bug which sends out more snapshots than necessary Previously every network group in subscription range of player would create an occlusion group. Now, only occlusion-enabled entities populate their local cells (and their subscriber's local cells) - se get activeplayer+sleepers count max of occlusion groups. Tests: both in UsePlayerUpdateJobs 0 and 2, 2 players on Craggy - ran around across network cells, flew outside of network range, used minicopter to fly into network range, checked sleeper is visible, checked kills clean up internal state. Player got occluded over terrain.

0
0
Likes and dislikes cannot be added/removed here. Please go to the official Facepunch Commits site to do this.
Public Commit
Rust Utility Hub - Commits - main/useplayertasks_removegroupocludee_nre