We added signal grenades to call in airdrops, ammo hot-swapping for multiple weapons, candle hats, and we built six radtowns on Hapis Island.14 May 2015
It’s back! It’s exactly the same as it was in Legacy, albeit a little better looking. Simply throw it to mark the target... and likely have the entire server converge on your location
I re-added the headshot sound from Legacy. This means if you score a headshot, you’ll hear it at full volume locally. If you witness a headshot, you’ll hear it within 30 metres. It’s definitely satisfying and I’m glad to have it back.
This was a long time coming, but I’m pretty satisfied with the results. Basically if you hold down R, you get a menu letting you select the desired ammo type for your weapon. It really kicks ass.
Here's a breakdown of some of the changes and additions made using this new multi-ammo system:
- Eoka can fire any type of Shotgun, Rifle, or Pistol ammunition.
- Added a High Velocity Rocket: less damage, more accurate and faster.
- Added High Velocity Pistol and Rifle ammo - moves much faster, bonus damage.
- Shotguns can take either Shotgun Shells or Handmade Shells.
I also shuffled a bunch of code around so the ammo items are more in charge of how they behave rather than the weapons. Expect lots of cool new ammo types in the future!
Bean Can Changes
The Bean Can Grenade was a bit too unpredictable. I changed it to be a little bit more event based and now it’s more fun than ever!
- 70% chance bean can is predictable with a 3.5-4 second fuse.
- 15% chance to explode very shortly after throwing.
- 15% chance for extra long fuse.
- 25% chance for dud.
- 50% chance dud re-ignites when picked up.
- Firearms lose half as much condition per shot as they did before.
- Modified viewmodel positions to avoid clipping as much as possible.
- Revolver has a lot less palm in your face.
- Fixed revolver bullet texture being missing.
I’m going to add a bunch more ammo types and rockets, and I'll add some bells and whistles like having different ammo sound slightly different when fired, dealing more or less condition damage to the weapon, different/modified impact effects, etc. Beyond that, the rest of my time will be spent performing maintenance and small jobs (like making armor have condition and take damage).
We've been running into a problem: if we change a 100 byte material file in our project then commit it, the build server kicks in and builds and uploads it. We have OSX, Linux, win32, win64, server, and the debug versions of each of those to upload. That's 10 versions to upload to Steam. The clients weigh in at around 2GB each, so when we change that 100 byte file, we could potentially be uploading 10GB+ to Steam, which sucks.
What asset bundles are meant to do is give us more control over the file layout. We can split the content into logical groups, so when you change a material it uploads some materials instead of the whole project. We used asset bundles in Legacy, but it turned into a huge burden. The way the asset bundle system was programmed in Legacy made developing the game hard work. It was literally easier to commit code untested, let the build server do its thing, then download from Steam to test.
In Unity 5, the asset bundle system is much improved. It's incremental--meaning it only builds the bundle if it has potentially changed--and it works really well, bringing our build times for four platforms down from 10 minutes to one minute.
The ideal situation with asset bundles is that we'd only build them once and all the platforms could share the data. This isn't happening at the moment, because the shaders seem to be incompatible between OSX/Windows. Unity support generally aren't very supportive unless you can make a repro project (or upload your 18gb game project to their FTP), so I haven't contacted them yet. But will do next week, because it would take our Steam footprint from 10gb to more like 3gb.
Doing this wasn't a small task, and there might be some issues with it, so please keep that in mind when shit goes wrong.
You either love the candle hat or you hate it. Either way, you probably hate it going dark when you swap away from your torch at night. And we can all probably agree that this would definitely work in real-life, so there's no need to question that.
Implementing the candle hat wasn't trivial. We didn't really have any systems in place for clothes to be functional like this. Now we do, so we can start work on some other stuff.
There are some bugs with lights in the sea right now. Don't worry: Diogo is going to look into those.
When implementing the candle hat, it became apparent to me that the fire was all wrong. It wasn't emissive: it was just additive sprites, and it wasn't emitting light--like the sun does--so it wasn't getting bloomed and tone-mapped and all that good stuff like it should.
Now any particles that should be emitting light are emissive. That's pretty much just fire, embers, muzzle flash.
You may have noticed that when you launch the game it no longer asks you if you want to play the new version or the old version. They're no longer installed side-by-side. The good news is that if you really only want to play the old version, you can so do by switching to the Legacy branch in Steam's properties.
Vince made these barricades a few weeks ago. Now you can give your base a legit insurgency feel with sandbags, concrete and stone barricades. They don't do anything special other than look nice and stop bullets.
Added Floor Spikes
Vince also made some floor spikes! You probably want to walk AROUND these.
Added Language Selector
You can now select your language in the main menu. Translations are community provided, so I'm sure there's a few things that are wrong, and maybe a couple of racial slurs. If you want to help translate you can do so here.
Fixed Sleep Talking
I'm a bad programmer, so I see a lot of bugs. Not many of them make me laugh, but this one tickled me. Tickled me good.
When you use in game voice chat we use Steam's peer-to-peer stuff to try to send it directly to the other players around you. We weren't careful about this though, and tried to send voice chat to sleeping players.
This normally wouldn't work because the sleeping players aren't usually connected (or they'd be awake). But what if they're playing on another server? Well, they'd receive the voice data and ignore it because they couldn't find a player that it was meant to come from. But what if it found the player's sleeping body on the server we're connected to? Well, the player's sleeping body would sleep talk - from the other server.
So we have a situation where players can use their sleeping bodies to communicate to each other across servers. This is how you tickle a programmer.
- Fixed melee attack exploits.
- Fixed missing pickup icon.
- Fixed map being all blue on lower graphics settings.
- Fixed weapon models at feet.
- Fixed dropped items falling through rocks (potentially).
- Fixed escape not working properly on rename sleeping bag screen.
- Can cancel in progress craft.
- Crafting cancelled on die, resources returned to corpse.
- Crafting cancelled on disconnect, resources returned to sleeper.
- Fixed clicking invisible crafting buttons when looting.
- Updated Steam SDK.
- Fixed player stats not uploading.
- Tweaked building components to prevent building in rocks.
On my list for next week are ladders, some mining work, some stats work, some server browser improvements, some throwing stuff, some streamer mode stuff.
Craig just told me I’m allowed to keep my segment for the devblog short this week because we’re already at 2500 words. This makes me a happy coder. So here we go, devblog speedrun!
Biome Material Blending
The smooth material parameter blending from rocks in the procedural map can now be used by any object with any shader and any material. So far the only things that use it are the tinting and terrain blending parameters of the procedurally placed rocks on Hapis Island and the procedural maps, but the plan is to have more objects utilize it over time.
Unity has this thing called LOD groups, which at first glance look great. They’re easy to use, have nice visualization features and are fast to setup. For average-sized projects they’re probably close to the perfect solution. But Rust is no average project, and LOD groups were starting to cause trouble.
- LOD groups check the distance to the camera every frame for every object. This means the time they take every frame scales linearly with their count.
- Every LOD group switches LODs at a different distance than its neighbors, which means objects switch LODs all the time all over the place when you move towards a group of objects that aren’t in the same LOD group. You can somewhat counter this by making more objects use a single LOD group, at which point they’re not really all that much fun to use anymore.
- Every individual LOD of a LOD group has its own game object, mesh filter and mesh renderer component, which are pure, distilled memory overhead.
- At around 35000 LOD groups they start spamming a cryptic group < 0x7fff error.
Long story short, I set up a custom grid-based LOD solution that addresses all of the points above. Its runtime is constant, it automatically switches the LODs of entire clusters of objects rather than doing it for every object individually, it only uses a single game object, mesh filter and mesh renderer per object and you can have as many of them as you want. On top of that it can be used to toggle entire objects (including their scripts) for which we needed a separate cull grid before. This means a fair amount of the LOD grid’s runtime is compensated for by being able to get rid of that separate system.
The switch to this new LOD solution isn’t entirely done yet as we’re still analyzing for which parts of the world it makes sense to use it. It’ll also take some time to get the LOD distances right.
Petur threw a SMAA implementation into our project and I enabled it. The advantage should be less blurriness even if sharpen is disabled. If you’re having issues with it disable anti-aliasing in the F2 menu and let us know.
I’m hoping to get as much as possible from my TODO list into procgen8 next week, since the next wiping update could hit as early as 2-3 weeks from now. Dynamic weather has also been something we’ve been wanting to do for a long time, so maybe I’ll put some time into that as well. I’ll also try to find out what the word “short” means.
Lots and lots of changes have been rolled into Hapis Island this patch, so much so that we haven't really had a chance to test it all properly. Oh well, what could possibly go wrong? It now has a bunch of radtowns, and they’ve been split into 3 tiers.
For the noobs, we've got lighthouses and some beached cargo containers. These are not radioactive, but only spawn a small amount of loot.
Then there are three full-size radtowns. These are radioactive, and summon a fair amount of loot. Approximately the amount you're used to seeing on the procedural maps.
And if that's too lightweight for you, we've also added a single high-yield, zero-radiation facility in the middle of the island. Noobs probably need not apply, as you'll need warm clothing to survive a night there.
Other than that, you'll find that the island now has fewer empty and flat areas. It's not perfect or final by any stretch, but... baby steps.
Next week I'll improve it some more, and possibly add in some pretty sweeping biome-specific visual changes to both Hapis and Procmaps.
I rigged up and animated the new smoke-signal grenade model, and I set-up all the world models for it.
I also spent some time on some particle effects, one of which is a fire-bomb effect that spreads out. I thought this could be used for things like a fire grenade or perhaps a rocket.
I added a large blood spray when shooting fleshy things (making it easier to see if you hit your target from long range).
I added better third-person animations for when the player holds an SMG (or Thompson). The supporting hand is positioned better and works for both the new SMG and the Thompson.
I set-up a script allowing the rocket launcher view-model to easily swap-out different rocket types.
Next week I’ll be working on some more player animation stuff, such as adding a jump animation for when the player is running backwards/sideways.
I've been working on a crafted handgun to 'spiritually succeed' Legacy's P250, and to blend the gap between the Revolver and the SMG. Naturally it has to look pretty junky and thrown together, but I still wanted it to have a pretty brutal look to it. I envision it behaving a bit like a Deagle, with some beastly kick back.
I've also been working up some ideas for bone weaponry. Our fav is the chunky leg bone club: simple and brutal. I've also concepted some kind of spiked mace.
Next week I'll be polishing the pistol design to make sure it doesn't suck in first-person, working up some more bone weaponry, and then maybe looking at some armour/clothing.
I finished up working on the new RPG ammo type. It looks like this.
I made the smoke-signal grenade, too!
I’ve started work on Paul's concept of the brutish bone club, so I’ll be spending some time in ZBrush trying to get it to look as brutal as the concept. That should be ready for next week.
Not a great week. Progress is still happening with the water remake, but it's mostly code that doesn't work 100% yet or is transitional. I was working on a separate project during testing and half-way during the move into the Rust project I noticed there were a few problems, like figuring out that my LOD transitions weren't as water-tight as I thought. Small problems that take time to fix.
So yeah, no fancy pics this time. Sorry guys. As for next week: still working on improving the water, obviously.
I started on a basic miner's hat/headlamp. That's right, kids! The verisimilitude of your experience will no longer be hindered by the candle on your head blowing out in a horribly unrealistic simulation of practical night-time activities! Also, if you're interested in what kinds of janky problems a character artist has to solve, just take a look at what 3ds Max and Unity have been doing to a very unfortunate jacket. There may be something amiss here.
Next week I'll be finishing the miner's headlamp, two separate clothing pieces (hopefully, if I can fix a bunch of weird broken skinning issues), and the world models for dropped clothing.
For the last three days I have been working on the quarry asset. The challenge so far is to reuse as many textures as we have already to speed up the process and keep your install folder lighter. In this case I reused textures from our various building skin tiers, and customized them a bit using blend layer materials for colour variation and dirt. The thing that gel all these different textures together, on top of the blendings, are the metal edge and welds decals that help make the silhouette pop. Texturing an asset this way comes a little more expensive on the polygon budget side of things, but the cost is generally offset in the long run over production time and memory management. This is a current WIP of the asset:
Next week I will be rigging, animating and LODing the quarry piece most likely, and possibly start on the windmill.
I’ve continued work on automated resource gathering buildings and have most recently focused on the pump jack to allow players to extract oil/fuel out of the ground. I did some 3D sketches exploring a few different designs. F seemed to be the best route to take because of its iconic shape,so I took it to a final concept.
It should look pretty sweet once rigged/animated. Next week I want to revisit the windmill concept so we can finally have something that generates electricity.
I spent the majority of the week fiddling with our gunshot sounds. Everything is a lot snappier, and there’s a lot more little detail to the gunshots now. The part of this that I’m most excited about is the way the reverb tails feel now (I think I might have a bit of a reverb fetish): when you’re playing back audio in Unity, you have control over something called 'spread' that essentially fans a sound out across your speakers. Turning the spread up can really make a sound feel like it’s enveloping you, but you also end up losing the directionality of the sound, which is a bit crap for important things like gunshots. I’ve set the gunshot sounds up to have no spread during the initial bang, then around a half second in we fade the spread up which makes the reverb fan out and surround you. I really like how much more depth this gives. It actually feels like the sounds are echoing off the environment around you now.
I also merged in the new animal footsteps (and a few other small tweaks) I did last week. I’ve started revising these footsteps to distinguish them from player footsteps a bit more. The revised versions should end up in game next week.
I also did a quick hitmarker sound for Maurino, and spent a little time playing with some music ideas in between gunshot sessions. I’ll be trying to polish that up in my spare time over the next couple weeks. After I finish the animal footstep revisions, I’ll be shining up some of our melee weapon and gun reloading sounds.
This week's icons are the candle hat, some more types of rocket launcher ammo, three different flavours of barricade, and the floor spikes.
I also continued on the electric lights, with a few more ideas. I also tried out a few power outlets that you could plug all of your electrics into. I also roughed out an idea for how you could arrange wires on walls, this is by no means how it's going to work, just a suggestion. We've opted to try out the floodlight and a basic ceiling light to see how it'll look in-game, and I'm currently polishing them up.
Next week I’m going to try out a few paintable ideas, refine the lights, and probably doing more icons...
We have seen an increase in cheats over the last couple of weeks. EAC are battling them, and they're doing a decent job blocking and banning. They've just started blocking the method that the latest cheats are using, so hopefully there'll be fewer now.
That all said - it is useful if you report suspicious behaviour. This means that EAC or ourselves can check it out and take action. That's why we've set up @rusthackreport. If you come across someone cheating then please tweet to it with as much information as possible (server, steamid, what they're doing). We won't reply from this bot, but your messages will get read.
This is just a temporary measure. We're going to get some in-game reporting set up soon. Not just for cheats but for people generally being assholes by spamming chat etc.
If you want to follow this project you can sign up to the mailing list.
We'll only update you about this project, we won't spam you about other stuff or sell your email address.