Archives for:
“April 2017”

Devblog 157

Muzzle Brake Nerf

I guess the Muzzle Brake was a little OP after all! I spent some time testing it in a controlled environment and its TTK was nearly the same with and without, except you didn’t have to control recoil with it. This was unintended. It really was only supposed to be good up close and quickly have its effectiveness fall off with distance. To that end, I’ve made the following changes to bring it back in line with its original specifications.

  • Projectile velocity decreased 20%
  • Projectile distance decreased 25%
  • Aimcone drastically increased

What this means is the bullets take longer to reach their targets, their damage falls off sooner, and it’s even more inaccurate due to aimcone than before. Hopefully this will bring it to a place where it is advantageous to use in close range, but terrible at long distance.

Eoka Buff

Setting up early on a wiped server last week, I managed to scrape together some tin cans, gunpowder and junk from the caves to produce an Eoka with a few rounds of ammo. Some asshole was chasing me and I blasted him point blank–thinking it would be a clutch move–and he wasn’t even phased. Eoka needed a buff. To that end, I’ve drastically decreased its aimcone so that more pellets will actually hit the target you’re aiming at.

Animal AI Improvements

Work continued on Animal AI this week. It’s still not perfect, but I did fix a few issues. Animals will bump up and down less often, and some animals have a bit of a blind spot behind them so you can sneak up on them. Wolves and bears will flee less often, and most animals have increased health. They’ll also figure out when they’re stuck and attempt to flee. There is still a tonne of work to be done here, and things are going to keep on changing as I get better at using Apex AI, so stay tuned.

Navmesh Generation Improvements

I was messing around with the navmesh settings and I reduced its resolution for the time being, which seems to have no affect on how the animals behave, but it does reduce load times to a quarter of what they used to be. In addition, CPU and memory usage seems to have dropped as well. I’ll keep on tweaking these settings moving forward and try and find the perfect balance.

Shop Names

I added a feature this week that allows you to name your shops! When people mouse over the icon on the map they’ll see the name. It’s limited to 32 characters right now, but it should help shopkeepers differentiate themselves from all the other little green dots on the map.

More Pooling

I added pooling support to a bunch of fairly common entities that were still missing it. This reduces the overhead when their objects load in and out of the world, eliminating frame rate drops in the process. The affected entities are as follows:

  • Animals
  • Locker
  • Search light
  • Water catchers
  • Recycler
  • Repair bench
  • Turrets
  • Hidden stashes
  • Wildlife traps

Stricter Hack Prevention

We’ve been experimenting with the parameters of the anti hack system over the course of the week and improved any parts of it that were causing false positives when the detection was configured to be stricter. I think we made some good progress on most of the server side hack prevention systems this week, improving the detection rate while simultaneously lowering the amount of false positives. This is of course still an ongoing process since we have to do these improvements one step at a time so we can verify the changes on the live servers.

 

Improved Hack Reporting

One of the major issues with community hack reporting were cheaters that either scrambled their name or changed it to the name of other players on their server. This made it difficult for people to find the person they want to report as a hacker. Given that we allow a massive set of unicode characters in player names simply disallowing exact duplicates of other people’s names really doesn’t address the core issue. So what I ended up doing was to change the death screen to show the name the other person currently has on Steam rather than the name that’s cached on the server. In addition to that I changed the F7 player selection such that the last person to kill you will appear at the top of the list. This should help make community hack reports easier for you to submit, more reliable and easier for us to process.

Rocket Factory Building

This week I have went back to working on the rocket factory building. I have focused on finalizing the floor layout and creating a jumping puzzle inside the building. The puzzle requires some tricky jumps alongside cranes and broken beams in order to access the higher levels of the area, where we plan on placing some higher quality loot. In addition, I’ve been working on finishing the interior geometry and textures, as well as general polish.

Viewmodel Locomotion Test

For a while now, I’ve wanted to try out what movement would look like with some more reactive animations in first person. By that I mean having a separate animation for running, anticipation for directional changes, overlap and settle on jumps, etc. Whether this ends up going anywhere or not it’s been an interesting test. At the very least, changing the pose when running seems to make the movement feel more urgent, IMO.

Player Animations

I went over some of the player animations and noticed we were missing lateral climb animations. I added couple of climb animations for when the player is climbing to his left/right, so climbing rope walls should look much more natural now. I also fixed some slight glitches with the walk/run animations.

Music

Music was my focus this week. The new system is capable of everything the previous music system was now, and we gained some immediate benefits & flexibility from the timeline based approach we’re taking over the rigid sections we had previously.

The new editor UI is finished and a lot nicer to work with now. I added multi-selection and the ability to copy intensity restriction/fade settings from clip to clip this week, which is a huge improvement over the old UI. Not super exciting for you guys, but it helps my workflow a lot.

I started working on a couple new features this week now that the foundation is nice and solid. First I’m adding the ability to place special clips in the timeline that can give me precise control over when intensity reduces. Right now music intensity holds for a few bars when it’s raised and then starts to slowly drop, which doesn’t always feel as snappy and responsive as we want. Adding these control clips will allow us to drop intensity more drastically in spots that make sense musically (under a main drum hit so that the tail of the drum rings out over a low intensity melody that just started, for example).

Second is the ability to specify fade in points on a clip by clip basis. Right now clips can fade in and out as they’re playing, which keeps us from having to wait 8 bars to bring a more intense track in, or to drop out a melody. We can also prevent certain clips from fading in or out, and can specify fade in and fade out times for individual clips. This works alright, but it can sound really awkward if a drum track fades in when a long drum tail is ringing out after the initial hit has already played, or when a recurring melody fades in half way through a musical phrase. With the ability to specify fade in points I’ll be able to drop a fade in point just before every drum hit on a drum clip and always have the drum track enter on a hit, or to place fade in points at the start of important phrases in a melody so we know the sections of a melody will always play in full.

After those two are sorted I’m going to experiment with a few more ideas for special control clips to allow us to do things like loop x bars while intensity is above a certain level or skip the next x bars unless intensity is below a certain point, and randomly jump to one of a handful of playback positions. I’d like to add the ability to randomize regular clip playback a bit more too.

I may also change the way intensity works so that we can drive music changes with more than one parameter (turn sadness up when you die, turn wolfiness up when a wolf is chasing you, etc). I’m still trying to decide if I want to drive sad/happy type mood changes within each song or just handle it by switching songs though, so I’m not sure if I’ll implement this part yet.

Sound mix

I made a few minor tweaks to sounds this week as well. This was mostly bringing levels down on a few sounds that felt a little too loud after I dropped levels on most super loud stuff last week.

Devblog 156

Heavy Armor Nerfs

Lots of people have been complaining about the Heavy Armor and how it protects too much. I disagree, but only because I know how it really should behave and the fact of the matter is it was only half implemented. I’ve taken some steps to bring it more inline with its original concept. First thing you’ll notice is that if you wear the helmet your view will be seriously impaired

Second thing you’ll notice is that if you wear the jacket you will not be able to aim down the sight thanks to how bulky it is. This means you’ll have to get good at hip-firing, use the lasersight, or rely on shotguns/flamethrowers etc.

Lastly, wearing either the jacket or the leggings fully reduces your movement speed to that of the full set rather than each piece providing a small reduction.

Lets see how this plays out. It may be too much, in which case I’d like to increase the protection even further. Or it may not be enough, in which case I’d like to add some more nerfs like being unable to swim. I still have some work to do with the view occlusion, I’d like to to eventually be a mesh and bounce up and down as you walk, and it probably occludes super widescreen multi-monitor setups too much. More on this next week.

 

Minor AI Fixes

I didn’t do much with AI this week, but I did fix an issue where some ore nodes were not properly carving the navmesh, resulting in AI potentially getting stuck between them. I also adjusted the bear walk animation to properly match its move speed.

Helicopter Rocket Fix

Shout out to arodax for pointing me in the right direction and finding the fix for our helicopters randomly shooting explosive rockets instead of napalm. For those interested: it happened when the helicopter was shot and forced into a strafe pattern, but the napalm cooldown hadn’t finished yet so explosive rockets were considered available. This should be fixed now

Shadow Improvements

I made a few changes to shadows this week. One issue that’s been bothering me for a while was the resolution of the shadows changing according to the camera orientation, so I went ahead and switched to a more stable solution. You should note that resolution is more predictable and hopefully less distracting.

In order to maximize shadow resolution, Two Cascades now has a maximum distance limit of 200 meters, regardless of the value you set on the graphics options. The No Cascades option already had a limit of 50, which is also the minimum. Only Four Cascades will give you the full range now.

Another shadow cascade related problem is that the hard border between different cascades can be quite distracting. I added blending between these regions in order to mitigate the distraction.

Finally, water caustics now get shadowed properly from the sun/moon light.

 

 

Ambient Lighting Improvements

We’ve been struggling with ambient lighting for a long while now, due to Unity limitations handling fully dynamic scenes. We’re now slowly working to solve some of these problems with the ultimate goal of improving overall visual fidelity of the game.

Until we have a proper global illumination solution, this week I took the opportunity to switch to spherical sky-based ambient lighting. It looks wrong in some cases but still beats what we had before, which was basically a dark flat color. It’s not final yet, but it’s a start. The ambient occlusion was also tweaked to cover a larger radius and higher intensity to add more depth.

 

 

 

Better Movement Violations

I spent some time reducing the false positive rate from the server side flying detection and eliminated some overhead from the water checks to free up some time to do other, more advanced verifications. Overall these improvements led to a much better detection rate with fewer false positives, which allowed us to push the detection strictness quite a bit. We’ll be experimenting with the parameters on some high population servers over the course of the next week in order to determine how far we can push the system without running into false positives.

Smooth Player Movement

You know how in Rust players in the distance looked like they were walking at half your framerate? Well, that was because in Rust players in the distance were walking at half your framerate. This was caused by some ancient optimization that no longer makes any sense and made every gunfight feel kind of shit, so I removed it and made shooting people feel buttery smooth in the process.

Large Furnace Exploits

Oops, looks like last week’s furnace placement changes fucked shit up. Those exploits are now fixed.

Garbage Collection Reduction

Nothing interesting to see here. I removed a bunch of needless memory allocations that were done every frame, which reduces the amount of garbage collections that occur.

Water Catcher Exploits

I realized that the various water catcher exploits were still around and finally addressed them with this update. Sorry, we really shat the bed there.

Launch Site Crane

I spent this week building a crane on the rocket launch site:

It will have two lifts running in the columns left and right of the crane, and not all floors will be accessible using it. For some I’ll have you jump because I know you all love it. As always, some juicier loot will be where it’s hard to get to. When I’m done with this, the next undertaking for me will be the rocket itself.

 

 

Rocket Factory Site

I’ve been working on a variety of tasks around the rocket factory site. I focused mainly on getting all the buildings textured, and I also did a quick dressing pass in parts of the level to get a better preview of what the finished area would look like. In addition I’ve been working on polishing the fuel silos, added pavements and curbs alongside buildings and tweaked the layout to allow for more open spaces. Next week, I will be going back to the rocket factory interior and getting it done to a presentable level.

Roadsign Armour Rework

A few weeks ago Helk and I talked about reworking the Roadsign Armour, so I’ve been taking a look at it this week. It’s a bit of a delicate one: on the one hand it’s an iconic part of Rust; on the other it’s just a few signs loosely dangling round your neck. Not to mention it already has a bunch of skins, so the textures all need to line up properly to keep the skins intact.

Fortunately there’s a lot of spare space on the old texture so I’ve got a bit of leeway to add some straps, buckles and rivets to make it all feel a bit more constructed. I’m using a few tricks to cut the plates up while maintaining a nice edge bevel and I’ll be taking another pass on the textures. Here’s where I am with it so far:

Water Jug Viewmodel

Animations and states are now setup for the Water Jug, so it’s ready for when there’s time to get it in game.

Player Animations

I’ve been going over the various player animations and fixing minor little details that looked a bit off. For example, the crouch walking animations had the spine jutting out a bit awkwardly, so I fixed that. I’m also polishing up the jumping animations and re-adding the multi-directional jump animations so it looks more natural when you jump sideways/backwards.

Viewmodel Tweaks

I finally finished going through all of the viewmodels, fixing minor cosmetic issues such as awkward looking wrists and clipping animations.

Tier 2 Workbench

Finished up grounding the props onto the main model, and also finished up on the textures. Now finalising the LODs–those loathsome LODs–and setting up the prefab, it’s so nearly finished!

Footsteps

After playing and taking a bunch of notes after the last patch went out, I’ve gone through and polished up some of the newer footsteps this week. Barefoot concrete and wood sound a lot better now and most of the grass footsteps are a bit softer and sound better as well.

Animal Sound Polish

I’ve polished up most of the animal sounds that weren’t playing before the AI update (sleeping sounds were the really bad ones). I’ll do a full pass over all of these once the animal animation updates are finished.

Mix Pass

I also did a higher level mix pass over our audio this week. There was too wide of a difference between our quietest sounds and our loudest sounds, which caused people to turn their volume up to hear the quiet bits, and then get their ears blown out when an explosion or gun goes off nearby, so I’ve brought some of the quieter stuff up a bit and most of the louder stuff down a bit. This was a fairly quick rough pass, so I’m sure there’s some bits that are out of whack still, but most of the core sounds should be a lot more reasonably balanced now.

I made some EQ adjustments and swapped a few ambient sounds out for better versions as part of this too.

Metal Recording

I got my hands on a bunch of chunky, solid pieces of scrap metal the weekend before last so I’ve spent some time recording that stuff this week. Metal has been one of the harder things for me to get good recordings of because I have mostly had access to fairly thin metal, and that doesn’t always have the tone or texture that I’m looking for. Some of this stuff will be used to improve weapon sounds and some will be for UI/physics sounds.

Music

Music system updates are coming along nicely! The back-end updates are fairly nailed down now, and I’ve spent a good chunk of time on editor side UI this week. Here’s a little peek at the old UI vs the new UI (although the length in bars bit on the old one is actually newish too):

In the previous system music playback was divided into layers and sections. Sections divided a song up in the time domain and layers were divided a song by instruments (ambience on one layer, drums on another, etc). This worked okay, but the strict section time division thing was getting in the way, so I’ve got the music system working much more like traditional audio software now. Layers still exist but clips of music can live anywhere in time on a given layer. This means I can lay drum stings in right on the timeline with the meat of the music, and we have the flexibility to do clips that have lead ins instead of every clip needing to start right when a section starts.

After the core UI stuff is finished up I want to explore adding some randomization to music playback. Playing random clips is an easy and obvious first step here, but I’d also really like to jump around the timeline a bit a specific points. Being able to loop a section of the timeline a random number of times, or to randomly jump to one of a handful of different playback positions could be really cool.

Bumps And Bugs Fixed As We Head Toward Next Wipe…

Fixes and tweaks

1:15pm EST – After a large launch last week, the team is focused on tweaks and fixes. Let’s get into it…

Player boosting kicks

After some shifts to the ingameantihack system last week, players have been getting kicked for violations while boosting on other players’ heads. This has been fixed, so player boosting should no longer result in a kick.

Viewmodel tweaks

Minh is continuing his work on viewmodel animation fixes. After tweaking a ton of them last week, there are only a few more to go before he moves on to animal animations.

Shooting through/under stone doorway

There has been an issue with being able to shoot through a small slat under a stone doorway in certain situations (mainly during raids). This has been resolved.

Other things

  • Fixed various issues with dungeons
  • Fixed issue with players being culled when looking over a low wall
  • Fixed being able to drop items between icons

What’s New In Rust

10:10am EST – We have confirmation from the official Rust Twitter that the update will hit in a couple hours. Also,

Also, new skins are live!

 

What’s in store? A new animal AI, improved sounds and models, better large furnace placement,

a fresh version of Unity, along with a bunch of other changes and tweaks.

New animal AI

After weeks in development, the new system for animal ‘intelligence’ is set to go live with this update.

Although the Rust wildlife will still look the same, they should move much better than before –

no more jutting up and down sheer cliffs or running through stuff. Some also now have meaty gibs!

As with any first iteration – especially one of this magnitude – there is still a lot of work to be done.

This launch is the baseline functionality. Once in place, the team will be able to build over time;

adding new models, animations, sounds, and hopefully creating unique behavior for each animal.

Don’t be surprised to see bugs, glitches, or just overall wonky animal behavior this week and expect more

improvements and optimizations to AI over the coming patches.

Better large furnace placement

A great quality of life improvement this week, large furnaces are now much easier to place on uneven terrain.

Also, their foundations extend down further than before.

 

Rust Hack Report is back

After being silent for over a month, the Twitter feed of game banned cheaters, @RustHackReport, is back.

How better than to come back with a bang? It added ~2,400 bans to the still growing list (although much of that is probably backlog).

Hopefully those bans keep coming; this hacker situation has been out of control lately.

 

New footstep sounds

A whole slew of new sounds have been added, mainly footsteps based on where you’re walking and what type of footwear you’re sporting.

This accounts for barefeet, boots, burlap, hide, and hazmat on surfaces like grass, dirt, sand, snow, concrete, carpet, metal, wood, stone and more!

Great work by Alex on this one, walking around is much more dynamic now.

 

Updated models and animations

Mihn has done a ton of tweaks and fixes to animations and viewmodels for various items in game. Although nothing may be immediately apparent,

it’s likely you’ll notice some differences as you settle in this wipe.

Deer meat added

Supplementing the new animal AI, a fresh type of meat has been added. No longer do deer yield chicken – deer meat is now an item.

 

Unity 5.6

A big step forward for the underlying engine which runs Rust – Unity has been updated to version 5.6.

This is a significant change, as up till now, Rust has been running on Unity 5.4.2f2.

What does this mean for you? Well, along with making the new animal AI possible (Navmesh),

Unity 5.6 boasts better tools for developers, improved performance (or so they say), better graphics,

and a slew of bug fixes and improvements. You can find more on Unity 5.6 here.

 

Performance concerns

As always, with large launches months in the making, a major concern is performance.

Although the team has made strides forward in both client and server performance over the past several weeks,

this new version of Unity (and specifically Navmesh) currently causes some issues.

 

Mainly, starting a server is now a much longer process due to the Navmesh creation. During that time, CPU usage on the server box

During that time, CPU usage on the server box shoots up to 100% and holds there for up to 5 minutes.

This generates lag and sometimes mass kicks on all other servers running on the box – which stands to be a big issue,

especially for servers on shared hosts (you know, like most of them).

On top of that, with any change this massive, you can’t really know how server performance is going to hold up with

people in one server until you actually have 300+ people in the server. This is all to say, we’re entering a bit of

untested territory with this update; fingers crossed it all goes smooth.