MAINTENANCE
[p]This month’s update is a little lighter than recent, focused on tackling a number of long-standing bugs and improvements. We’ve been working through community feedback to smooth out some of the more persistent issues and make everyday gameplay feel that bit better. Normally, if bugs persist for several years, there’s usually a good reason for that, whether it’s being difficult to reproduce or requiring a lot of work to resolve.[/p][p]Additionally, we'll soon be announcing the Warhammer X Rust crossover DLC.[/p][p][/p][p][/p][p][/p]
LONG DISTANCE GUNSHOTS
[p]Networking range in Rust is made up of grids. These grids are a fixed size and can be adjusted by server owners, they are sometimes reduced on high-populated community servers to lower network overhead. When these grids are reduced, it also reduces things like: gun audio. This makes the world feel incredibly small and closed off.[/p][p]We can now run gunshots at different distances to the network range: helping make Rust feel more alive and shaking up the meta by giving advantages/disadvantages to certain weapons.[/p][p]The new values are as follows:[/p]
- [p]Pistols / SAR / SKS / SMGs / Shotguns - 400 meters[/p]
- [p]AK / LR - 500 meters[/p]
- [p]LMGs / Minigun / Long Distance Rifles (Bolt Action Rifle / L9) - 600 meters [/p]
TEAM BAG LABELS
[p]It was hard to see what bags belonged to which team members, even if they named them correctly: it could be a pain to figure out.[/p][p]MINICOPTER DAMAGE INDICATORS
[p]FOLIAGE DISPLACEMENT IMPROVEMENTS
[p]Foliage displacement has been improved to allow for smooth transitions. This includes when objects are removed and also makes displacement from moving sources like players look more realistic and natural.[/p][p][/p][p][/p][p][/p]VOLUMETRIC CLOUDS ENABLED BY DEFAULT
[p]With the last patch, we introduced new volumetric clouds as an alternative to the 2D clouds. However, we put them under experimental settings and kept them disabled by default.[/p][p]NOTABLE CHANGES
Automated Workshop Screenshots
[p]Workshop submissions using the in-client skin creator tool now automatically take screenshots that are included in the upload.[/p]Players Eyes
[p]For several years, a bug has caused players eyes to sometimes appear closed, this is now fixed![/p]Invisible Respawn
[p]Fixed players being invisible when respawning, whilst asleep[/p]RF C4
[p]Fixed C4 not being stackable after enabling RF[/p]Tugboat Rug
[p]Fixed rugs deleting deployables when picked up, if on a tugboat[/p]Barricade placement
[p]Fixed barricade deployment being blocked on sand dunes around giant excavator[/p][p][/p][p][/p][p][/p]EXHIBIT DECOR PACK DLC
[p]Taking the stage this month is the Exhibit Decor Pack, an illuminating collection of deployable items to glow up your base. [/p][p][/p][p]The pack can be purchased in-game or from the Rust Steam item store[/p][p][/p][p]Bulb String Lights[/p][p]Get that warm and fuzzy feeling with these decorative bulb string lights. Hosting a garden party or wiping a raiding party - it’ll look fabulous.[/p][p]PARALLEL PLAYER PROCESSING - PART 2
Threading Player Updates
[p]Back in Jungle Update blog, I wrote about experimenting with batched processing of players on our servers. To summarize, I talked about how we needed to restructure code and start doing more operations in batches instead of on individual basis, and I showcased how it allowed us to leverage Burst and parallel job execution to speed up NoClip checks on the server.[/p][p]This update I'm taking it a step further - I've converted more parts of our player update code to batch/pipeline form, which allowed to clearly see dependencies between processing stages. This, in turn, confirmed which parts we can try to process in parallel on worker threads. As a result, we can now offload a bunch of player-related logic over to worker threads, speeding up the main thread:[/p][p]
- [p]Faster server occlusion (more on that below)[/p]
- [p]Avoiding redundant calculations of player state by using frame caches[/p]
- [p]Use of managed threads for work offloading (sending entity snapshots and destroy messages have been converted)[/p]
Server Occlusion Optimizations
[p]As part of the above rewrite I took a look at server occlusion, as I noticed that it has been running too many checks per frame. In addition to other problems, this caused server occlusion to eat up to 8ms in some cases, like bellow:[/p][p]- [p]We now deduplicate occlusion queries - if player A and player B want to check for visibility of each other, it's enough to just check A->B[/p]
- [p]We run occlusion queries in parallel[/p]
- [p]We cache results of occlusion queries for the duration of a frame, allowing us to skip them throughout the rest of the frame[/p]
Going Forward
[p]The rewrite of player update allows us to see more clearly how the execution and data flow, but it's lacking further optimizations(aware of 1 bottleneck) and tuning (controlling worker batch sizes). My plan is to use the new telemetry to guide where to focus efforts as I continue to expand UsePlayerUpdateJobs further. I currently don't see a specific end in sight, as the more is converted, the more opportunities to capitalize on data/execution patterns we get.[/p][p]If things go well for UsePlayerUpdateJobs 2 during this patch, it's likely the mode will be promoted to level 1, and a new experimental stage will begin.[/p][p][/p][p][/p][p][/p]ENCRYPTION CHANGES CONTINUED
[p]As mentioned in last patches devblog, we are going ahead with requiring a minimum encryption level of 2 on servers that wish to be considered 'secure' and appear on the Rust Client server browser.[/p][p]As a reminder, encryption level 2 is the default configuration for Rust Dedicated Servers and as a result the vast majority of server owners do not need to take action. For those that do, you will need to update your server.encryption convar to 2 and restart your server.[/p][p]Additionally, we are going ahead with the removal of the server.secure convar. As previously mentioned, any insecure servers will now need to pass the '-insecure' parameter on server startup instead.[/p][p][/p][p][/p][p][/p]SAVE THE DATE - TWITCH DROPS
[p][/p]September 20th-30th
[p]Head to https://twitch.facepunch.com/connect to sync your Twitch and Steam accounts.[/p]