Rust Marque Logo

Primitive

The Primitive update is here. And it's a big one! Featuring four siege weapons, a new bow, shields, and a new game mode. As well as updates to horses, ragdolls, and much more!

06 February 2025
DEVBLOG
The early game of Rust can be the most exciting, unfortunately players rush to fully automatic rifles as fast as possible to get an edge over their enemies. What if the early game could last forever....?

The primitive mode brings us to a distant future where the knowledge of high tech items have been lost, leaving the inhabitants of the island only able to make basic items.
The following changes apply to the primitive game mode.

Allowed Weapons
  • Melee
  • Bow, Compound Bow, Crossbow, Mini Crossbow
  • Speargun
  • Eoka
  • Beancan Grenade, Molotov
  • Flashlight Attachment
  • Shields
Restricted Armor
  • Removed Facemask
  • Removed Metal Chest Plate
Resources Changes
  • Less Sulfur Nodes Spawn (50%)
  • Increased Tech Tree Tax (2x)
Loot Changes
  • Jackhammer & Chainsaw (loot only)
  • New travelling vendor trades
Raiding Changes
  • Removed All Rockets & C4
  • Removed MLRS
Building Changes
  • Removed Metal Building Grade
  • Removed Armored Building Grade
  • Removed Armored Doors
  • Removed C4, Rockets & Explosive ammo
World Modifications
  • Removed Monuments (Oil Rig, Missile Silo, Excavator, Underwater Labs)
  • Removed Underground Train System
  • Removed Scientist NPCs (vendors remain)
  • Disabled Patrol Heli Event
  • Disabled Cargo Ship Event
  • Disabled Bradley APC
  • Increased Wild Horse Spawns (2x)
Travel Changes
  • Removed Helicopters (Minicopter, Scrap Transport Helicopter, Attack Helicopter)
Introducing 4 new vehicles: Siege Weapons!
Designed for early game raiding, they're all craftable and deployable in the wilds. A great addition to your raiding and grubbing arsenal.

In addition to the cost to craft, building them will require extra materials and a hammer.

They are both available in the primitive and vanilla game modes, from the workbench level 2.
The catapult is capable of launching powerful projectiles with a large impact radius.
It comes with 3 new ammunition items:
  • Scattershot: multiple rocks in a spread
  • Firebomb: ignites on impact, spreading flames
  • Propane Explosive Bomb: high-damage explosives, damages construction
It can also launch players. Use at your own risk.

You can also use the Firebomb and Propane bombs as a deployable raiding tool. Once deployed they will start to spark when they take any damage and explode after several seconds. When used in this way bombs will do less damage.



The Siege Tower provides a new way to get into compounds, high open windows or help with a raid. As the heaviest Siege Weapon, these towers lack some mobility, but make up for it in strength. Like the other Siege Weapons: The Siege Tower can be towed by a horse, or pushed to get it into position. 

Each tower is 3 levels tall, with a drawbridge on each level. Use the drawbridge to provide some protection as you assault a base.
Each tower can have a door placed at the bottom for an added layer of security.
The battering ram is a heavy fuel-powered vehicle you can drive around. Its reinforced arm can be used to destroy wooden and stone constructions.

The ram takes damage with each hit and will need high-quality metal to stay operational.
The ballista is a massive, wheeled crossbow designed for long-range combat. It can be deployed on terrain and towed by horses.
It can fire 4 new bolt items:
  • Pitchfork Bolt: large sweeping projectile
  • Piercer Bolt: penetrates armored vehicles
  • Hammerhead Bolt: heavy and solid, deals damage to doors
  • Incendiary Bolt: ignites on impact, spreading flames
A stationary version is also available, which can be deployed within your base for defensive use.
Shields are a new backpack slot item that allows you handle frontal threats with ease. Simply equip the shield in your backpack slot and equip a compatible single handed weapon and the shield will automatically appear.
While holding a shield, it takes over the function of RMB, so you won’t be able to aim down sights or throw weapons. Instead holding RMB will raise the shield in front of you, giving you more protection at the cost of reduced visibility and not being able to sprint.

You can only hold a Shield up for 4 seconds before having to put it back down, this is shown via a small progress bad near the crosshair (similar to the Compound Bow).
There are 3 shield variants, each with a different damage block amount. This amount is the percentage of damage that the shield absorbs from any incoming attack, the remaining portion will be received by the player holding the shield. While equipped, you’ll see a new shield durability bar appear above your health bar, any damage a shield takes is applied to its durability and once broken the shield will be unequipped.

Items that are compatible with shields will mention this on their item information panel when selected.

When not in use, Shields will appear on your back. Note that while they are on your back, they provide no protection. You will need to equip the shield in order to block any attacks.
In the spirit of a primitive mode, we wanted to add another arrow weapon. The Mini Crossbow is a fresh take on the Crossbow. Providing 4 shots in a rotating barrel, at the cost of some damage and range.
The Mini Crossbow will not only be a great addition to the base game, but also the new primitive gamemode.
Horses have been completely overhauled and should feel much better to play with.
  • They can now traverse most terrain types and monuments
  • New movement mechanics allow them to skid by pressing CTRL when galloping
  • They can swim, auto-avoid trees and be pulled when led
Horses can also tow siege weapons, including the catapult, siege tower, and ballista.
Additionally, their impact on server performance has been massively improved.
This month, we’re introducing the new Medieval Pack DLC - a themed collection featuring 8 new items and skins consisting of the new Medieval Barricade, Knights Armour clothing skins, Medieval Large Wood Box skin, the Medieval Assault Rifle skin and Medieval skins for the Sheet Metal Door and Double Doors.

Knight Armour Set

Arise a brave Knight with these chivalric skins for the Coffeecan Helmet, Roadsign Jacket and Roadsign Kilt.

Medieval Barricade

Lay down this barricade to stave off the most ardent attackers, or augment the battlefield with its unique middle-age-themed visuals. Note that you will need to know the Barbed Wooden Barricade blueprint to craft this.

Medieval Assault Rifle

Kingmaker or Kingslayer - you call the shots with this resplendent relic.

Medieval Large Wooden Box

Every Lord needs a sturdy coffer to store their spoils of war. Look no further than this stalwart companion.

Medieval Sheet Metal Door & Double Door

Survey your lands from behind these imposing castle doors, uniquely adorned with spikes to keep the p̶e̶a̶s̶a̶n̶t̶s nakeds out.

The pack can be purchased from the Rust Steam item store.
Temporary player ragdolling has been added for bikes and horses.

Taking large amounts of collision damage on bikes and horses will result in the player being flung from their seat and eventually getting back up (assuming they haven't died in the process). Players can also be flung from the saddle of a horse if it's had too much airtime or has slid too far. Horses will ragdoll in these cases as well.

If you're unlucky enough to be used as ammunition for a catapult, you'll also ragdoll and are guaranteed to die on impact.

Collision damage on bikes has been re-balanced with ragdolls in mind, with the aim of making it less likely to instantly die from hitting obstacles on a bike. 
We're rolling out a social integration layer to Rust this month, no more messing around with overlays or alt-tabbing - you can now view, chat, invite, and add friends, all from right inside the game.
Your Steam friends list will automatically sync up in-game. No setup required. Prefer using Discord? No problem! All you need to do is link your account, and your Discord friends will be right there, ready to connect. This way, you’ve got the best of both worlds.

Give it a try, and as always, let us know what you think.
Pickup sleeping bags
Players can now pick up any sleeping bag as long they are in TC range
IO Reskinning
Can now reskin IO deployables with the spray can without disconnecting it entirely
Phone names
Phones can now have names up to 30 characters long
Pumpkin Rolling
Dropped pumpkins no longer roll indefinitely
Backpacks on Weapon Racks
Backpacks and shields can now be used with weapon racks.
We've been slowly building up the feature set of our admin ESP system over the years, mostly due to the demands of various streaming events. This was restricted to using the debug/flying camera, it will now work as expected while in first person perspective spectating. Many server admins have asked for this to have better situational awareness while spectating players.

It uses the same convars as the normal ESP system so you shouldn't need to do anything new. All of the existing convars will apply, this includes:
  • ESPCanvas.MaxNameplates
  • ESPCanvas.OverrideMaxDisplayDistance
  • ESPCanvas.DisableOcclusionChecks
  • ESPCanvas.ShowHealth
  • ESPCanvas.ColourCodeTeams
  • ESPCanvas.UseRandomTeamColours
  • ESPCanvas.DisplayDistanceMultiplier
If there are further improvements that would help in live spectating, please let us know!

Twitch Drops are back!

And from more of our favourite creators on the rise that you should definitely start to recognize!

Be sure to sync up and claim your Drops after watching these fantastic creators on Twitch.
TL;DR - Shipping Linux binary; Server profiler should have less impact when idle and recording by gathering less data; if it fails to generate a snapshot, you can now export a debug binary snapshot and share it with us.

Linux Support

This update will contain a library built for Linux environment. The library is a native recorder, so the interface (the "perfsnapshot" command) works the same.

The library has been built on Ubuntu 24.04.1 via GCC 13.3 in C++20 mode and it depends on POSIX utilities (dlopen, dlsym) - so it should be accessible everywhere. 

Profiler Overhead

Since the first release of our internal profiler, we got the opportunity to test it in the real world conditions. My first tests were rough (could only capture 1-2 frames worth of data before ballooning to multiple gigabytes of data) and I got feedback from number of server owners that not only it doesn't produce snapshots in some situations, it also has idle overhead - just enabling profiler can have a 5-10fps on a high-pop server.

I've spent some time this update cycle to to reduce this overhead, as in the current conditions it severely reduces the benefit we can get out of the tool. I've tackled it from a couple angles:

Reduced how much Code we capture

The profiler works by annotating every code method that it encounters, wrapping it in a set of calls that dispatch to different Mono profilers. Comparatively, for complex and expensive methods these call are unnoticeable, but for small utility functions that do a trivial thing (change a bool, set a bit, append to a list, etc) the dispatching calls add massive overhead (we're talking 10x+ the cost of the utility function). Lastly, these dispatching calls are cheaper when the profiler is enabled, but not capturing - but they are still not free.

Originally I set up a number of annotation filters to exclude some known and safe code (stuff from System.Collections.Generic namespace, for example), but it still left a lot of "fat" that we could trim. Here's the before and after of the changes affecting our player processing loop:

As you can see there's much less of nested calls(reduced verticality), and instant calls (triangles, they take less than Perfetto is able to track) appear much earlier.

This update we no longer capture:
  • Hash functions
  • Casting & comparison operators
  • Property getters
  • UnityEngine.CoreModule related code
  • Enumerators
  • Anything Math related
  • Our internal collections (like BufferList)
  • Serialization code
There's more, but hopefully you see the principle behind the choice - anything small, trivial or reliable gets ignored.
This allowed us to massively reduce the amount of data we generate during capture - on staging server, we used to generate about 17MB of json per player, after these changes it's gone down to ~0.5MB of json per player. This should also reduce the "idle" overhead, since there's much less "dispatch code" that's scattered around.

Improved json generation logic

One of the quirks that we have to deal with profiler-gathered data is that it doesn't know where the frame begins and ends - it's just a stream of "method enter/exit" records + "frame end" record that happens somewhere deep in the managed callstack. And since we want to display the data in a per-frame organized matter, we need to scan this stream to figure out how to partition all records.

Originally I implemented a less-efficient version of this because I assumed that there wouldn't be too much data to overwhlem this process. Since the previous section showed that I was wrong on the scale of data, I've also spent a bit of time to improve the export process - we now only need 2 whole-data-set scans to figure out frame grouping, instead of 3 originally, so using napkin-math, this gives us 33% export speedup.

Additionally, I've received reports that profiler can fail to generate snapshots. There are a couple scenarios in the above frame-reconstruction logic that can cause it to fail, so for these cases I've added the option to dump a binary debug snapshot - just run "perfsnapshot <delay> <name> <frames> 1", and you should see a "<name>.bin.gz" in "<root>/server/<identity>/profiler/" folder. I'll be able to inspect it in our internal tool to see what am I missing:

Future Plans

I've been using this tool on the daily to inspect the state of our Staging servers, and I'm hoping to do the same with our medium and high-pop release servers as well. To squeeze out the most, there are additional improvements that I'd like to pursue when the time allows:
  • Continue trimming down on annotated functions - there's still plenty to reduce.
  • Need to expose the annotation filter to server owners - right now it's all hardcoded which is limiting
  • Need to expand allocation tracking - right now we just track how much we allocated on main thread. We could track allocated object types, and figure out a better way to display it on Perfetto.
  • Emit more metadata about the performance state - provide manual annotation tools to emit the scope of workload for our team, or to show cross-thread dependencies.
  • Explore automatic capture during frame spikes.
The wait is over!

The exclusive Rust x Wellipets wellington frog boots have started shipping, and codes for the in-game frog boot helmet are ready to redeem* from 11AM GMT on Friday 7th February.  

Thank you again to everyone for taking part in this special collaboration, and don't forget to redeem your codes here.

* The digital item is complementary to the purchase and only redeemable for the PC version of Rust. A unique product key code will be sent after the delivery of your physical item. Should you wish to exchange sizes of the physical item, please refrain from submitting your digital keycode until you receive your exchanged sizes. Once the digital code is redeemed, you forfeit the right to return the physical item.

To celebrate the release of this month's Primitive update, we're having a flash sale!
For the next 48 hours, Rust and all Steam DLC's will be 50% off.

Treat your new squad mate to a copy on Steam.


add_circle

Features

  • Added Primitive game mode
  • Added Shields
  • Added Catapult
  • Added Siege Tower
  • Added Ballista
  • Added Battering Ram
  • Added 4 Shot Mini Crossbow
  • Added DLAA option to the graphics menu
arrow_circle_up

Improvements

  • Overhauled horses
  • Horses now increase comfort from a fire when in proximity
  • Improved the client performance of industrial lights, ceiling lights, search lights and electric heaters
  • Improved the client performance of moving vehicles
  • Various client optimisation when opening/closing the main menu, inventory and other UI screens
  • Players can now pick up any sleeping bag as long they are in TC range
  • Can now reskin IO deployables with the spray can without disconnecting it entirely
  • Static payphones now have more accurate grid numbers in their phone directory
  • Phones can now have names up to 30 characters long
  • Added a breaking server rules option to the F7 report window (will not be enforced on Facepunch servers)
  • Added squeeze, barrel and current bone parent readouts to the debug cam info readout
  • Industrial lights have been merged into a single item, red and green versions are now skins (so they can be changed with the spraycan)
  • Added teleportteam2me command, will use the local players team or the provided team id
  • Added a toggle to the Admin F1 UGC panel to hide wanted posters
  • Can now use multiple commands with a midi bind via the ‘;’ symbol (same as binds)
  • Reduced the chance of a player getting killed at the end of a zipline, particularly if the zipline was arriving at an extreme angle
  • Fixed wording of vending machine dynamic price multiplier when looking at vending machine on a map
  • Added “debug.deleteentitybyid” convar
  • Fixed ClearUGCByPlayer convar requiring the player to be online
  • Admin ESP features can now be used in first person when spectating
  • Can now loop the entire timeline (Demo Editor)
  • Allow spaces in shot and folder names (Demo Editor)
  • Automatically switch control to the camera when a shot recording starts (Demo Editor)
  • Added accessibility.disableMovementInInventory convar to block player input when the inventory screen is open.
  • Backpacks and shields can now be used with weapon racks.
  • Improved performance in the workshop menu. Both when open and after the window is closed.
  • Admin: Added authradius_radius <playerRadius> <entRadius> to authorise everyone within playerRadius of the command user on all entities within entRadius of the player.
  • Admin: Added deauthradius_radius <playerRadius> <entRadius> to deauthorise everyone within playerRadius of the command user on all entities within entRadius of the player.
  • Admin: Added authradius_multi <radius> <player> <player> <...> to auth multiple players on all entities within radius of the command user.
  • Admin: Added deauthradius_multi<radius> <player> <player> <...> to deauth multiple players on all entities within radius of the command user.
  • Admin: Added a "Stack" button to F1 menu item icons to give a full stack of item.
  • Admin: Added clear_trees_radius to clear all trees in a radius form the player
  • Creative mode: Added Creative.bypassHoldToPlaceDuration convar to bypass the hold to place time of deployables such as High External Walls.
  • Improved TAA implementation by reducing blurring and artifacting.
  • ServerProfiler: added linux binary
  • ServerProfiler: reduced capture overhead
  • Horses now use anisotropic materials for more realistic hair shading
  • Admin :'chat.mutelist' now exposes SteamID's
handyman

Fixed

  • Fixed F1 Grenades not saving Specular maps on the Community Workshop.
  • Fixed Lumberjack Hoodie not rendering when equipped.
  • Fixed item store Prototype Pickaxe being referred as Protoype Hatchet
  • Fixed the performance issues impacting Chinese, Japanese and Korean fonts when opening menus or using the chat
  • Fixed missing Chinese, Japanese and Korean characters in the UI
  • Removed the "GiveItem failed!" error message that appeared when looting an item with a full inventory
  • Dropped pumpkins no longer roll indefinitely
  • Fixed spraying the factory skin twice would result in a broken texture
  • Fixed some packs in the store displaying their store page incorrectly at low UI scale
  • Fixed fish traps needing to be reset after a server restart
  • Fixed a calculation error when applying dynamic pricing to a vending machine sale
  • Fixed holosights looking different based on the accessibility colour selected while in NVG
  • Fixed certain AntiHack errors preventing the placement of deployables (e.g. barricades)
  • Fixed occasional errors when saving shots (Demo Editor)
  • Fixed shot and folder input fields resetting when pressing escape (Demo Editor)
  • Fixed Ice Assault Rifle's name and description to be in line with other similar items.
  • Fixed an issue with player inventory being locked if kicked when surrendering.
  • Items can no longer be swapped into softcore reclaim bags, fixing an exploit.
  • Submarines can no longer be stolen when purchased at Fishing Village.
  • Submarine fuel can no longer be stolen from a submarine purchased at the Fishing Village.
  • The patrol helicopter will no longer shoot at scientists.
  • Remove an error logged by wolves that could spam server logs.
  • Fixed DLSS Ultra Performance Mode artifacts.
  • Fixed formatting issues with importing and exporting normal maps via the workshop.
  • Fixed Fishing Villages spawning too close to harbor
  • Fixed Cargoship being able to abduct NPC's
  • Fixed Road Bradley and Travelling Vendor events not outputting the correct printouts
  • Fixed respawning static planter causing hash conflicts on sockets
  • Fixed Vending Machine stats panel incorrectly separating combined purchases as single purchases
  • Ensured phrases are translated properly on Vending Machine stats panel
  • Fixed death and auth commands not working for locks on tool cupboards

Newsletter

Recieve monthly updates straight to your inbox