Thursday, December 5, 2019
The Instrument Update
This month we introduce the Rust Instruments DLC as well as the usual optimizations and improvements and yes, you do have legs!Instrument Pack DLCJarryd Campi
The Instruments DLC pack is now available on Steam for purchase with a 10% launch discount! It includes 10 new instruments with a completely overhauled music input system as well as MIDI support for actual hardware input from compatible devices.
Not sure what all of this is about? The Instrument Pack is our first paid DLC which includes 10 new playable instruments. They all use a completely overhauled music system that allows you to play specific notes (A, B, C, D, E, F, G) across multiple octaves. They also support MIDI input, so you can hook up physical instruments as well as a variety of MIDI related software to really unleash your musical abilities.
The pack includes:
- Wheelbarrow Piano (200 Wood, 100 Metal Frags)
- Junkyard Drum Kit (200 Wood, 100 Metal Frags)
- Shovel Bass (50 Wood, 75 Metal Frags)
- Sousaphone (100 Metal Frags)
- Jerry Can Guitar (25 Wood, 50 Metal Frags)
- Xylobones (50 Bone Fragments)
- Plumber’s Trumpet (75 Metal Frags)
- Cowbell (35 Metal Frags)
- Canbourine (25 Metal Frags)
- Pan Flute (20 Metal Frags, 5 Cloth)
As discussed in the announcement blog post, we want this DLC to be something everyone can enjoy, not just people who purchase it. This means that you only need the DLC to craft these instruments, but if you find one on a corpse or are given one by a friend you can play it as much as you like. You’ll also find some static instruments in a new music stage we set up in the Compound that everyone can play. Put on a show!
As part of this update the existing Acoustic Guitar has also been updated to use the new musical systems. More information is available in the Instruments Blog Post from earlier in the month.
Special thanks to Matt and Thai for the instrument models, Alex Webster for the massive amount of animation work, Alex Rehberg for the incredible amount of actual note audio (over 800 unique audio files!), Lewis for the great branding you can see on the store page and Paddy for the awesome trailer you can see above. Thanks to everyone on Staging who’s helped us iron out the bugs over the last couple of weeks, you’ve all been super helpful!First Person LegsGarry Newman
This is something we’ve wanted to do for a long time and now it’s done. You’ll be able to look down and see your legs.
When doing this we started off changing the controls quite dramatically, so when you looked down you actually leaned forward and down. This was a nice solution because it stopped the camera clipping inside the player model.
Ultimately we decided that it stopped feeling like a proper first person game. So it should really feel 100% like it always did, except you have a body when you look down.
There is probably one big place you’ll feel the difference, and that’s when sitting. For example, when you’re on a horse when you look to the side you’ll now lean slightly. This is required because you’d see down your own neck without it, but it actually feels kind of nice.Load Times OptimizationGarry Newman
The speed difference between an SSD and a HDD is staggering when it comes to Rust. HDD’s are slow as hell.
One of our benchmark tests is called Bootstrap. It records how long it takes from boot to get to the main menu. Here’s our results.
|High Spec SSD||Med Spec HDD||Low Spec HDD|
|Bootstrap (November Update)||8 seconds||2 minutes||4 minutes|
|Bootstrap (December Update)||6 seconds||46 seconds||1 minute|
As you can see we’ve got some decent improvements here. We’ll keep trying to improve, but if you don’t already have an SSD you should add it to your list for Santa.World StreamingAndré Straubmeier
The world in Rust consists of many objects. We disabled their renderers when they were far away from the camera, but we still kept their game objects around at all times to quickly toggle them without much overhead. This had some negative effects on memory usage, physics performance and world load times. To address these I’ve implemented a world streaming system to dynamically add and remove the actual game objects as you move around the world. On a 4k map with recent hardware this ended up saving 400MB+ of memory, 1ms+ of frame time and 10s+ of world load time. On larger maps or lower end hardware the gains are even more significant.Exploit and Hack FixesAndré Straubmeier
We have fixed a number of exploits that could be abused by hacks, both over the course of the month and in the update today. There is some info in the change list but it’s generally better not to go into too much detail with these types of fixes, so you’ll have to take our word for it.Monument Mesh OptimizationsDiogo Teixeira
A few patches ago we rolled out some mesh optimizations that managed to save us around 700 MB of memory footprint. This month we extended that optimization to any monument geometry that fit a predetermined complexity criteria. This allowed us an additional saving of 600 MB across our entire mesh base. Our runtime mesh usage is still fairly high at ~1.6 GB but we’ve reached the limit of how much we can compress without affecting performance under our current limitations. We’ll be focusing additional mesh memory saving and streaming efforts on the HDRP version.More Texture StreamingDiogo Teixeira
This month’s monument mesh optimizations allowed us to add another 1 GB of textures to the streaming pool. This won’t translate directly to savings because we deciced to keep our target VRAM usage for each quality level. It does mean, however, that since we have more space for textures streaming in and out of memory, there’s now room for higher quality textures using the same memory.Player Dressing OptimizationsDiogo Teixeira
This long overdue optimization involved replacing the way we process and replace hair meshes during player dressing. Our hair meshes were both wasting memory and costing us up to 1/4th of the time spent dressing/building player equipment, every time a player spawned. These meshes are now highly compressed, costing us the absolute minimum, and dressing cost is virtually zero. There is still a big overhead in parts of player dressing which will be addressed in coming patches.Horse ImprovementsMaurino Berry
I spent a long time this month trying to improve horses and made a significant amount of progress! It is much easier to navigate on rocks and around radtowns now as horses have a step up/down threshold.
Unfortunately this has lead to a few weird instances where horses might do things like teleport on top of signs or align themselves strangely when indoors. This is being fixed but at the end of the day the general feel and usability of the horses has improved so much we decided to release it anyway, expect another fix soon.Garry’s Mod 15 Year Anniversary Item
To celebrate Garry’s Mod’s 15th birthday we’ve added an new item for anyone that owns it. A replacement for the hammer, this item allows you to repair and upgrade your structures in style.
It’ll also update the screen with the type of building block you are looking at.
While developing the Tool Gun for rust we designed the effects to be 1:1. Unfortunately this felt slightly out of place so we came up with a new less sci-fi effect which is used by default. You toggle the classic Garry’s Mod effects with the console command “toolgun.classiceffects true” but only you will see it.
Note: If you’ve owned Gmod for longer than Steam has been tracking playtime in this capacity you’ll need to, at minimum, launch Gmod for a few minutes to get that timestamped. Once you’ve gotten a few minutes played, relaunch Rust and wait some time. The Toolgun will automatically drop into your Steam inventory.Third Person Weapon AnimationsMaurino Berry
A long-standing bug involving animations on the weapons held by other players not playing has been fixed. This is mostly noticable during reloads and with the bow weaponsSound PrioritiesAlex Rehberg
The instrument updates we’ve been working on highlighted some issues we’ve had with sound voice counts and prioritization for a little while.
I spent some time this month working on reducing our overall voice counts by improving how we handle looping sounds that are out of range and setting up more sensible default behavior for oneshot sounds in some situations.
I also improved how we prioritize sounds, so sounds that are close to you should be favored much more strongly over distant sounds when things get really hectic.Instrument RecordingAlex Rehberg
I had a blast working on the instrument sounds over the last few months. I recorded everything from scratch for each instrument and thought some folks might be interested in hearing a little bit more about that process.
The acoustic guitar, sousaphone, trumpet, and piano were pretty straight forward point a mic at the instrument and record situations, but I had some fun with the others.
First off I built a pan flute out of 1/2″ PVC pipe, which was easier than I expected and a fun project if you have any interest in DIY instruments! Essentially you just cut some pipes to length (plus a little extra for tuning), plug one end with hot glue, and then blow them in a tuner and shave a little length off until they’re in tune.
After that I did the jerry can guitar. I really wanted to inject some extra metal resonance in to this one to distinguish it from the acoustic guitar, so I took a jerry can and clamped it to a guitar with woodworking clamps and stuck a mic inside it which worked pretty well! I also played this one with a pick and the acoustic guitar with a finger to make them sound less alike.
For the drums I recorded myself banging on loads of random buckets and pans and water jugs. My favorite one of these was a paint can that I dumped a bunch of dry rice on which ended up becoming the snare drum (and launched rice ALL over my studio haha).
The shovel bass was pretty straight forward as well. I just recorded an electric bass, but for my sound nerds: I added a little extra metallic resonance to it too by using one of the metal hits from the drum session as the impulse response in a convolution reverb.
Finally, for the xylobones, I took a few bones (my dog’s chew toys) and banged them together. Two of them are hollow and I was able to plug one end with my palm and coax a surprisingly decent tonal sound out of them.Chat Improvements and FixesAdam Woolridge
I made some further improvements to the chat system (again):
- Global chat can now be disabled using the muteglobal convar or in the inteface options UI. This allows you to disable global chat but keep team chat and server messages.
- Added a “Copy Text” chat popup menu item, which will copy the selected message and username to your clipboard.
- Fixed a crash when players with their OS set to certain languages receive a team invite.
Bug FixesAdam Woolridge
I also made a bunch of other general bug fixes and improvements that don’t need their own separate blog sections, so check the changelist for all the details.Change List 222Thursday, December 5, 2019
- Added Instrument DLC
- You can now see your body when you look down
- Added admin.killplayer <playername>
- Added admintime – which allows an admin to change their local time
- Replaced admin.mutevoice/admin.mutechat with admin.mute (mutes both)
- Can also mute sleeping players
- Added admin.mutelist
- Can call combatlog command from rcon/console
- Added camzoomspeed and camlookspeed for debug camera (cinematography)
- Added world grid / world streaming (load time, memory and performance optimization)
- Global chat can now be disabled using the muteglobal convar, or in the interface options. This allows you to disable global chat but keep team chat and server messages
- Added a “Copy Text” chat popup menu item, which will copy the selected message and username to your clipboard
- Reduced seeded player scale differences to make things fairer
- Dedicated server startup is less spammy
- Fixed scrap transport helicopter exploit
- Fixed deployable placement exploit / hack
- Fixed rare case when entity could remain parented after leaving parenting trigger
- Fixed rare server error after entity left parenting trigger
- Fixed rare error when canceling loading mid world transfer
- Fixed several sign exploits / hacks
- Fixed several weapon exploits / hacks
- Fixed a crash when players with their OS set to certain languages receive a team invite
- Fixed items with very long names being truncated incorrectly and looking rubbish
- Fixed supply signal visual effect not always displaying correctly
- Ground footstep sound effects no longer play when scuba diving and walking on sea bed
- Players can no longer access Christmas tree items in building blocked areas (no more stealing)
- Fixed the team UI showing the original (non-streamer mode) player name when receiving a team invite. Same for the chat notification
- Fixed glass of ignited lanterns invisible when viewed through reinforced glass windows
- Fixed footsteps missing / stop when the player is culled
- Fixed see through water when jumping / alt look while on a boat
- Fixed wrecked sedan and warehouse instances on HapisIsland
- Fixed pink military tunnel materials on HapisIsland
- Fixed lighting issues with some semi-transparent models under fluorescent bulbs
- Load times should be much improved for non SSD users
- Dedicated server output messages are formatted differently
- Server sends a chat message when a user is banned due to anti-cheat
- Reduced chance of tree marker jumping to other side of tree after being hit
- Bumped immediate network visibility distance to 128m (from 64m) to give more notice for SAM sites
- Optimized player hair mesh memory and dressing performance
- Optimized monument mesh memory
- Added more textures to streaming pool
- Can no longer order servers by wipe date due to abuse by server owners