POLISH AND PROGRESS
Author: Errn,
published 2 weeks ago,
[h1]RUST'S 11TH BIRTHDAY CELEBRATIONS[/h1]
We can't believe it either.
It feels like just yesterday that we were celebrating 10 years of Rust, getting emotional over our [url=https://youtu.be/y95DhDZgjhs]recap video[/url], but it is true - Rust turns 11 years old on Wednesday the 11th of December!
It's been another incredible year for Rust, with record player numbers, Twitch events, and monthly content updates bringing some of the most significant changes to the world of Rust in the past 11 years.
[img]https://files.facepunch.com/paddy/20241202/rust_bday11_cake_01.jpg[/img]
Here are just some of the key gameplay additions we've delivered as we look back on 2024:
[list]
[*] World Update
[*] Backpacks
[*] Tutorial Island
[*] Digital Clock
[*] Night Light
[*] Harbour Monument Rework
[*] Cargo Ship Docking
[*] Minigun + Flamethrower
[*] Seismic Sensor
[*] Handcuffs + Prisoner Hood
[*] Motorbikes + Pedal Bikes
[*] Travelling Vendor
[*] Tin Can Alarm
[*] Metal Detector
[*] Wallpaper
[*] GCO Attachement
[*] Hand-held Diver Propulsion Vehicle
[*] Refreshed Divesites
[*] Radtown
[*] Radioactive Water
[*] T1 SMG + T3 SKS
[*] ...and much more!
[/list]
To celebrate Rust turning 11, next week, you'll find a cake and balloons in-game. And your friends can enjoy [url=https://store.steampowered.com/app/252490?utm_source=blog_campaign=r11_medium=blog][b]40% off Rust[/b][/url] for 10 days, starting on Monday!
On behalf of everyone at Facepunch, we'd like to thank you for a great 2024. In January, we'll release a full end-of-year blog in which we'll discuss how 2024 has gone, with highlights, learnings, and our plans for 2025.
[h1]QUALITY OF LIFE CHANGES[/h1]
[h3]Peacekeeper Turret Hostile Indicator[/h3]
A turret icon now appears next to the usual hostile indicator when you are hostile and near a peace keeper auto turret.
[h3]Workcart Storage[/h3]
A small box has been added to all Workcarts so you can store that extra loot.
[h3]Waterpump Depth Change[/h3]
Waterpumps now work with a smaller depth of water, perfect for the new rivers.
[h3]Propane Tank Stack Size[/h3]
Propane tanks can now stack up to 20.
[h3]Dropbox Input Increase[/h3]
Increased to 4 input slots.
[h3]Junkpile Despawn[/h3]
Junkpiles will now be eligible to despawn after they are partially looted.
[h3]Fridge Storage[/h3]
Fridge storage increased to 48 slots
[h3]Homing Missiles[/h3]
Homing missiles have been added to Bradley and attack helicopter loot crates
[h1]WOLF PACKS BALANCING[/h1]
We spent this month bug fixing and improving the counter-plays to the wolves, as we want them to feel challenging but not unfair.
[h2]The problems[/h2]
Using fire against wolf sometimes felt less impactful than expected, especially when wanting to avoid the fight. Even though wolves wouldn't attack as long as you kept distance and a lit torch, they would [b]follow for a very long time[/b].
This was especially aggravating when driving wolves away from your corpse to get back your loot, but then having them still follow you and potentially cause a death spiral.
Furthermore, when jumping on an elevated position to escape the wolf, it would ignore the lit torch and rush to jump up.
The wolf could do very fast [b]huge jumps[/b] sometimes up to your base's roof. The jump motion also looked weightless and not really believable.
Another problem was [b]packs of 4+ wolves[/b]. They didn't appear all the time, but players that had to face them had a really hard time. Even though packs never spawn with more than 4 wolves, they could sometimes merge. That's because wolves always come to investigate when their hear a howl, even if it comes from a wolf that does not belong to their pack.
Once the player shot a wolf or they got close enough, wolves would give up stalking and [b]weave at high speed[/b] towards their prey. For players that only had a bow, this made it hard to land more than one or two shot as the pack of wolves closed the gap. And once enough wolves were in melee range, while it was possible to prevent a single one of them from attacking thanks to hit stun, you easily got overwhelmed.
Lastly it felt harder than it should have been to crouch and sneak around wolf packs, forcing players to take very long detours if they didn't want to fight.
[h2]Closing words[/h2]
You can find more details about how we addressed those issues in the patch notes at the bottom of the page.
Congrats to the players who found some of the hidden features that could be used to get the upper hand on wolves!
[h1]ELECTRICITY QOL[/h1]
[h3]Tesla Coil[/h3]
Reduced tesla coil maximum power usage from 35 to 25 (no difference in time to kill)
[h3]Storage Monitor[/h3]
Added a passthrough slot to the Storage Monitor
[h3]Elevators speed[/h3]
Increased speed of player placed elevators by 50%
[h3]Battery full charge indicator[/h3]
Added an output slot for when your battery is fully charged
[h1]MODULAR CAR RADIOS[/h1]
Modular car radios are now in Rust!
[img]https://files.facepunch.com/paddy/20241129/rust_car_radio_01.jpg[/img]
This means that you can now craft a radio to place in your modular car for 120 metal fragments if you own the [url=https://store.steampowered.com/app/1670430/Rust__Voice_Props_Pack/]Voice Props Pack[/url].
Simply craft the radio and then deploy it onto the cockpit of your modular vehicle. The radio will only be operational whilst the car engine is switched on. Once the radio is deployed, anyone will be able to interact with it.
Anyone with authorisation to the vehicle will be able to pick up the radio with a building hammer.
The radio comes with all the same built-in and internet streamed radio stations you find in the Boom Box
[h1]HELICOPTER SHREDDING[/h1]
Purchased Helicopters can now be picked up by the magnet crane and shredded at Junkyard. You will receive Scrap based on the helicopter type and it's current health (50% health = 50% of the Scrap).
[img]https://files.facepunch.com/paddy/20241202/helicopter_shredding_01.jpg[/img]
[list]
[*] Minicopter - 200 Scrap
[*] Scrap Transport Helicopter - 300 Scrap
[*] Attack Helicopter - 500 Scrap
[/list]
Stolen a helicopter from your neighbours? Why not destroy the evidence and get paid at the same time!
[h1]UPGRADABLE HIGH EXTERNAL WALLS & GATES[/h1]
Wooden high external walls and gates can now be upgraded to their stone versions via the hammer context manner, similar to regular building blocks.
[img]https://files.facepunch.com/paddy/20241204/highwallupgrade_01.jpg[/img]
Additionally, high external walls now craft in batches of three. The stone high external walls requiring 1 sheet metal per craft.
The stone high external gate has also been adjusted to require 1 sheet metal and only 3 gears, with its crafting cost reduced to 4000 wood/stone (down from 4500) for improved inventory management.
[h1]VENDING MACHINE STATISTICS[/h1]
You are now able to see a bunch of statistics about your vending machine. This includes:
[list]
[*] Transaction History
[*] Highest Revenue Items
[*] Best Sold Items
[/list]
You can browse these stats in a wide variety of timescales: from the last 30 minutes to all-time.
Some 'long term stats' are also available (all anonymous), these are:
[list]
[*] [b]Total Sale[/b]s: The total number of items purchased from the vending machine
[*] [b]Total Unique Customers[/b]: The total number of individual customers who have made a purchase
[*] T[b]otal Repeat Customers[/b]: The total number of instances where existing customers have returned to make additional purchases.
[*] Best Customer: The customer who has made the most purchases (total count of their transactions)
[/list]
These stats are processed on the Serverside then communicated to clients.
Here are a few Server Convars to help server owners:
[b]vendingmachine.max_returned[/b] - Specifies the maximum number of entries to return when fetching purchase history or aggregated stats (e.g., best-sold items, most revenue-generating items, etc)
[b]vendingmachine.max_processed[/b] - Limits the maximum number of sales records to process when performing operations like filtering or aggregating data, even if more records are available
[b]vendingmachine.max_history[/b] - Defines the maximum number of purchase records that the vending machine will store in memory (on Serverside) before removing older entries to make space for new ones
Server owners can also run: [b] vendingmachine.clearallvendinghistory[/b] and [b]vendingmachine.clearallvendingcustomerhistory[/b] to clear all Vending Machine stats and long term stats respectively.
[h1]LEGACY SHELTER REVOKE[/h1]
Once you placed your Legacy Shelter, it was possible to die and then be unable to place another. When placing down another shelter, your first one is now destroyed.
[img]https://files.facepunch.com/paddy/20231204/legacyshelter_01.jpg[/img]
There's one trade off: Shelters now take a few seconds to place (just like high external walls). This gives enough time to warn you that your old Shelter is going to be destroyed, as well as preventing them from being used in PVP.
[h1]VARIABLE ZOOM SCOPE[/h1]
The 16x scope was significantly under-used considering it's intended to be military loot. This seemed to come down to it being too high of a zoom.
[img]https://files.facepunch.com/Errn/1b0511b1/chrome_QSQxVFr7df.png[/img]
This scope has now been renamed to the "variable zoom scope" and supports 3 zoom levels: 4x, 8x & 16x. This makes it better than both of the old scopes combined & adds in a new zoom for quick target acquisition.
The default keybinds are 'Page Up' to increase zoom and 'Page Down' to decrease zoom, however I fully expect more experienced players to rebind these.
Try scroll wheel (if you aren't using it to switch weapons) or mouse 3 & mouse 4 (if those aren't already bound).
[img]https://files.facepunch.com/paddy/20241205/optionsmenu_zoomcontrols.jpg[/img]
[h1]SCRAP EXCHANGE VENDOR CHANGES[/h1]
Now that we've reached a point where we are happy with the [url=https://rust.facepunch.com/news/road-renegades#dynamicvendorpricing]dynamic pricing behaviour[/url] when purchasing items with Scrap, we've decided to apply the same logic to items being sold for Scrap. Starting this month, you will notice that items that you sell to NPC vending machines for Scrap have a dynamic price applied to them. It will start the wipe with 50% less value per item sold, and can increase to an extra 100% value per item sold if no items are sold.
[img]https://files.facepunch.com/paddy/20220331/peacekeepers_01.jpg[/img]
This will hopefully make it more valuable to sell items as a wipe goes on. As with the previous changes, we'll be monitoring these and making changes as needed.
[h1]UNDERWATER VISIBILITY[/h1]
We recently tweaked this, but your feedback made it clear there was further room for improvement. So we did just that. Underwater visibility is now nearly doubled, allowing players to see further and more clearly underwater.
[img]https://files.facepunch.com/paddy/20241003/rust_worldUpdate_diveSite_01.jpg[/img]
Additionally, we've slightly increased the depth of water players can sink to before the oxygen level starts to tick down. During swimming, you are now less likely to drown to high waves.
[h1]RISKY LANDMINE DISARMING[/h1]
Landmines now have a 15% chance to explode when being disarmed by another player, so be careful when clearing out minefields!
This was always meant to be the intended gameplay behaviour for landmines, but I discovered an old bug that prevented this from working as intended.
[img]https://files.facepunch.com/paddy/20241126/rust_landmine_disarm_01.jpg[/img]
[h1]NODE SPARKLE CHANGES[/h1]
We've slightly modified the behaviour when hitting nodes this month. Nodes will no longer show a sparkle before they are hit for the first time, once they are hit the sparkle will appear underneath the first hit. This first hit is considered a sparkle hit and will reward the appropriate amount of resources, so it's a very slight buff to ore collecting.
We did this for a few reasons:
[list]
[*] This brings their behaviour in line with the tree X marker minigame
[*] Finding the sparkle at first was slightly awkward, this feels smoother
[*] Each sparkle was a networked entity that had to be streamed in and out as the player moves around
[*] We had a sparkle per node in the world, so an average server will now have around 4.5k less entities in the world
[/list]
While I was at it I made some slight memory improvements so each node will take up less client and server memory.
[h1]QUEUE IMPROVEMENTS[/h1]
While looking at collecting some data around queues, we decided to do a few minor improvements to the queue system. Up until now, the client was unaware of being in a queue, it was simply using server messaging to show the queue. Now the client knows when it has entered and exited a server queue, and can act accordingly. We now display Steam rich presence for waiting in a queue and connecting to a server. This also opens us up to do more client side related queue features in the future.
[img]https://files.facepunch.com/paddy/20241203/WaitingInQueue.png[/img]
The other change to queues we made impacts modded server owners specifically. The queue messaging system was being leverage by modded servers to implement loading screen messages via a plugin. These loading screen messages would often fight with the client messaging, and generally didn't look great.
As a nice compromise, we've implemented the ability to change the "menu tip" message displayed in the loading screen. This can allow modded server owners to implement their own tips that may be more relevant for the particular game mode and changes specific to the server. To keep things backwards compatible, the same network message sent before will continue to work with one caveat.
[h3]// Old[/h3]
var net = Net.sv.StartWrite();
net.PacketID(Message.Type.Message);
net.String("Top Text");
net.String("Bottom Text");
net.Send(new SendInfo(conn));
[h3]// New[/h3]
var net = Net.sv.StartWrite();
net.PacketID(Message.Type.Message);
net.String("Bolt");
net.String("This server has instant craft!");
net.Send(new SendInfo(conn));
[img]https://files.facepunch.com/paddy/20241203/loadingscreen_custommessage.jpg[/img]
Instead of having top and bottom text, you can change the menu tip icon displayed. Existing loading screen plugins will continue to function, but won't display a top message as that field is now used for an icon. A list of available icons names has been published on our [url=https://github.com/Facepunch/Rust.Community/blob/master/Icons.cs]Community GitHub repository[/url].
[h3]Only servers clearly listed in the modded section may utilize this feature.[/h3]
[h1]RCON SECURITY ENHANCEMENTS[/h1]
Another one for all the server owners out there. We've started updating the security around RCON. The server will output very prominent warning messages if you're using an insecure RCON password. In some cases, the RCON server will fail to start if the password is bad enough (i.e. "password" or "changeme")
We've also added some safeguards against brute force attacks. Now when a RCON client attempts to connect with a bad password, after 5 attempts the IP address will be banned for 5 minutes. These values are all configurable through a number of new convars. There are also a few convar commands that allow you to permanently ban both IP addresses and networks.
[list]
[*] rcon.banduration (default: 300)
Number of seconds to apply to any automated ban.
[*] rcon.maxpasswordfailures (default: 5)
Number of failed password attempts before applying a temp ban
[*] rcon.logfailedattempts (default: true)
Debug.Log all the various failed password / ban connects. Defaults to true, but large servers may want to disable due to spam
[*] rcon.permanentbanfailedips (default: false)
Permanently ban IPs that exceed the failed password threshold
[*] rcon.ban_ip
Permanently bans an IP or network
[*] rcon.unban_ip
Removes an IP or network ban from both the permanent bans, and any temporary bans/attempts
[*] rcon.print_rcon_failed_logins
Prints out the table of attempted logins that failed and if they resulted in a ban or not
[*] rcon.clear_rcon_failed_logins
Removes all of the temporary failed login history/bans (does not remove permanent bans of any kind)
[*] rcon.print_rcon_bans
List the permanent IP/network bans
[/list]
[h1]NATIVE ARM64 HARDWARE SUPPORT[/h1]
We've been waiting for a while for all of our third party software to natively support ARM64 hardware. This has now finally come to fruition and as the first platform to test this on, we've switched the Mac version of the game to use our native ARM64 build on Apple Silicon hardware. At the moment, Intel hardware is still supported on Mac as well and remains unaffected by this change.
If this works out well, we will investigate native ARM64 support for other platforms in the future. The next most important one would likely be to natively run on ARM64 hardware in Windows laptops, but we are still waiting for some third party software to fully support this, so this will stretch a good amount into the next year at least.
[h1]BUILT-IN SERVER PROFILER[/h1]
Up to recently we've been focusing on server performance health via tracking aggregating performance telemetry. It allowed us to have a general overview of a server's performance from birds eye view. There are point where high-level overview is not sufficient to identify where exactly slow-downs are coming from.
This past month I've been working on a built-in profiler for the server. If used, it allows us to see all the code that is executed for a particular frame - allowing us to see more detail about what & how things are going wrong.
[img]https://files.facepunch.com/danielprihodko/1b0211b1/VLSYR7Arpk.png[/img]
With this, we can now combine our high-level telemetry as an "hotspot-warning" system, while using the built-in profiler will allow us to investigate what those hotspot consist of and which parts are the most worthwhile to optimize. This will help guide our efforts in optimizing the server performance while also validating that we have successfully optimized a particular block of logic.
The profiler comes with an extra benefit: this feature is going to be available for public use. Any server owner will be able to trigger it and take a look at the data. You'll be able to see both what vanilla server does, as well as if there's anything that Mods are actively doing.
[h3]How to Generate a snapshot[/h3]
[i][b]Note 1[/b]: This is currently only available for servers hosted on Windows machines. Linux support is next to come.[/i]
[img]https://files.facepunch.com/danielprihodko/1b0411b1/jCm3Ix8EAJ.png[/img]
[list]
[*] First, the feature needs to be activated when starting the server. You must launch the server executable with `[b]-enableProfiler[/b]`
[*] Once the server boots up, you can run the following console command: `[b]profile.perfsnapshot [delay] [name] [frames][/b]` (all parameters are optional)
[*] [b]delay[/b] is in seconds, by default set to 15
[*] [b]name[/b] is the name of the snapshot file, by default is "Profile"
[*] [b]frames[/b] is the number of frames to includes in the snapshot - default is 10, has a max of 10
[*] Once the delay expires (you'll see messages in global chat), it will record the requested number of frames, generate and compress a snapshot - you will find it in /server//profiler/.json.gz
[/list]
[i][b]Note 2[/b]: if something goes wrong during generation the file won't be created(youl'l can it in server log file). I'll be continuing iterating on the profiler, so I'll iron out any left-overs.[/i]
[i][b]Note 3[/b]: Taking a snapshot causes server to take a performance hit for a couple seconds. Make sure to give enough delay to avoid disturbing the server population too much. When not taking a snapshot, the impact is none/unnoticeable.[/i]
[h3]Exploring The Snapshot[/h3]
You can extract the compressed snapshot using any utility that understands GZip (Windows11 explorer, 7zip). The snapshot uses [url=https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview?tab=t.0#heading=h.yr4qxyxotyw]Google Event Format[/url], so you can use any tool to view it. For example, I've been [url=https://ui.perfetto.dev/]Perfetto UI[/url] to visualize the data - just drag and drop the json into the view and you can start exploring.
[h1]TWITCH RIVALS IS BACK![/h1]
[img]https://files.facepunch.com/lewis/1b0311b121/tr5_image2.jpg[/img]
That's right, Twitch Rivals - Team Battle V is almost here!
Starting Monday 9th of December and finishing Friday 13th, up to 150 Twitch creators from around the world will compete in our yearly global Rust PvP competitive event, with a prize pool of $100,000!
Last year's event saw some incredible plays from some rather understated competitors so be sure to tune in every day at [b]1900 GMT / 1400 EST[/b] to watch as tensions rise and the teams find their feet while they gather their resources, build to protect themselves, then raid, loot, and fight it out to be crowned victorious!
This year's Captains include Team Battle IV's winning team captain, Blooprint, as well as Oilrats, NoraExplorer, Willjum, and more! Full schedule and teams list from Twitch [url=https://schedule.twitchrivals.com/events/rust-team-battle-v-on-twitch-rivals-lkKoK]here[/url].
As usual, there are some incredible looking Twitch Drops available to collect by watching the competitors, and by tuning in to the official competition [url=https://www.twitch.tv/twitchrivals]broadcast from Twitch Rivals[/url].
Sync your accounts and find links to all channels at [url=https://twitch.facepunch.com/]twitch.facepunch.com[/url].
And don't forget, there are generic Twitch themed Drops that you can grab by [url=https://www.twitch.tv/directory/category/rust]watching your favourite creator on Twitch[/url] not participating in the event too!
As always, we'd like to thank [url=https://rustoria.co/]Rustoria[/url] for working with us and Twitch to make this event possible.
[img]https://files.facepunch.com/Errn/1b0411b1/twitch-drops-36_Team-Battles-V_blog.jpg[/img]
[h1]MAP MAKING & MODDING PREFABS[/h1]
We've added more prefabs for the mapping and modding community this month.
[img]https://files.facepunch.com/paddy/20241112/woodpanel_tiledcubes_preview.jpg[/img]
Below is a list of the additions and changes:
[list]
[*] Additional concrete, charcoal, gravel, ceiling, roof and plaster tiled cube prefabs
[*] Coloured wood panel tiled cube prefabs (pictured above)
[*] Road and tarmac tiled cube prefabs
[*] Cold and heat volume variants (low, med, high)
[*] Radiation cube volumes - minimal, low, medium and high rad levels
[*] Toxic/radiation water cube + cylinder prefabs
[*] Admin spawnable invisible 3x3 cube + wall
[*] Static xmas light string prefab
[*] Static fire prefabs
[*] Static spraycan decals
[*] Birthday cake prefabs (from previous years)
[*] Invisible static PressButton
[*] Fixes for material changes to glowing cubes and glass cubes
[/list]
[h1]CHRISTMAS[/h1]
We'll release a mandatory update at [b]19:00 UTC on December 16th[/b] to enable this year's festivities.
[img]https://files.facepunch.com/paddy/20221206/gingerbreadmen_header_01.jpg[/img]
[img]https://files.facepunch.com/paddy/20211215/xmas_town.jpg[/img]