20 August 2015
Not a big change to the end user, but this needed a lot of back-end coding. When you run a Rust server you have two ports open: one port for player to join the game and to communicate with the server on; one for Steam to talk to, to get information about the server.
The problem is that there's a common denial of service attack that floods the query port. This is getting more and more common and lots of hosts are complaining about it.
So now we accept the query on the game port instead, and pass it to Steam ourselves. This means we can stand in the middle and just not reply if we're being flooded. This wasn't a trivial thing to set up, it involved adding a bunch of functionality to Raknet, so I'm hoping it does some good.
I've been cleaning up and finishing the work I was doing on the workshop skins right before I went on holiday. This is stuff like making sure that the skins people are uploading to the Steam Workshop can be used in game. The good news is they can.
With Diogo's help, I've added a dirt layer to the clothing too. This means we have to worry less about whether items in the workshop "fit" into Rust, because we can just cover them with dirt and make them fit. You can see this effect on the pants here.
The plan with the workshop skins is to sell them in game like in CS:GO and TF2. This should get a lot of varied content in the game whilst rewarding the community for their contributions. To be clear, these are just skins, they don't offer any differing properties, and you need to unlock the item in game to craft them.
You can click on these to buy them. If you're in any kind of doubt - don't buy them, they're just cosmetics.
With the workshop skins being added, it's going to be a lot of work to hand draw an icon for each one. Plus it's debatable whether that's the right thing to do since it's not perfectly representative of the skin.
So most of the clothing icons now are renders of the actual in-game item. I've set a system up so we can tweak and play with the lighting and stuff, and at the moment it looks OK. In the future it might be nice to post process the renders to add outlines or alter the shading - but this is where we're at right now.
I've updated the SDK with new shaders and fixes. You can make skins for the jacket, snow jacket, boonie hat and balaclava now too!
The SDK is on Steam, under tools. Here's a getting started tutorial.
Rubber Banding, Part 2
I identified and fixed a couple more rubber banding and lag issues after last week's patch, which went live in a server update on Saturday. There are still some non-rubber banding interaction delay issues when the server FPS drops below a certain point, but those will have to be addressed by improving overall server performance.
Gunfight Hiccups, Part 2
Overall last week's optimizations seem to have turned out great. The initial gunfight lag is completely gone. However, one thing that's still bothering me are the framerate spikes that occur over the course of extended gunfights.
To address this issue, I reduced the amount of dynamic memory allocations per frame and projectile by a factor of 100. Before those optimizations, a single projectile could easily make up a fifth of all the dynamic memory allocations of an individual frame, and during intense firefights there could be dozens of them flying around at the same time. Why are dynamic memory allocations bad? Because they determine the frequency at which the garbage collector has to do its thing, and whenever that happens it can easily take multiples of our frame time to process.
The next things to optimize in order to reduce frame rate spikes will be sounds, which now tend to cause more than 50% of our dynamic memory allocations every frame, and effect instantiations. Once those are working we should be in a position to get started on speeding up building part spawns when switching networking cells.
Hit Detection Improvements (WIP)
First of all: This isn't finished yet and when it's done it will need some good testing on dev before we can release it to everybody, so the following paragraph doesn't affect this week's update.
I've been working on improving the way bullets are traced in order to allow them to penetrate weak targets (like the player's hands) and hit multiple body parts at once. While testing out different concepts for this, I also noticed that there are some fairly significant inaccuracies in the current body part collision tests, which make certain hit areas way bigger than intended, and therefore too easy to hit, and others way too small, and therefore too hard to hit. This has been making hit detection feel pretty wonky and random for a while now, and I'm hoping to show off some improvements next week.
Player Shadow Lag
This is one of these simple fixes that mean a huge deal to me personally, but I'm not sure if anybody else gives a damn about. It's been bothering me for a while that the shadow you see in first person lags behind the camera movement. For me this made everything look like half the FPS it actually ran at whenever my shadow was visible. This is now fixed, and everything looks nice and smooth.
- Added "teleport playerA playerB" admin console command ("teleport player" still works as before).
- Added "teleport2me player" admin console command.
- Added "client.fps" and "server.fps" console commands.
- Admins are no longer all female.
- Modding: Available UI overlays are now "Overlay", "Overlay/Top", "HUD/Overlay" and "HUD/Overlay/Top".
- PVE servers no longer allow damage to buildings from players outside of the cupboard range.
- PVE servers now always allow building demolition if in cupboard range instead of only for 10 minutes.
- Fixed player bone list including mesh LODs and other non-bone transforms (speeds up certain rig-related operations like rigidbody instantiations).
Get the hit detection improvements done.
I am in the middle of moving houses, so I didn't have time to contribute to the patch this week so it’s probably going to be light one. I should be all set up tomorrow, and will make it up to you guys for next Thursday. Sorry! :(
Just wanted to start my update with a very sincere THANK YOU to everyone that took their time to go to the Unity feedback link I posted last week. Your response has been so overwhelming and effective that we’ve got word saying the requested feature would be available as soon as Unity 5.2. You guys are amazing and I’ll do my best to make it up to you.
Last week I got tired of trying to work around our current SSAO’s artifacts, so I reverted back to SSAO Pro for fewer issues and higher performance.
Terrain PVT (Procedural Virtual Texturing) cache compression has been rocking the development build since last week as well and seems ready for stable. This change shaved off 384 MB from video memory - only added when PVT was enabled, however - as well as improving performance. If you have performance problems, give PVT a try and please report back any issues. You can find the toggle at the bottom of the Performance settings (F2).
As planned for this week, I finished Terrain basemap compression in DX11 mode, for DX10.1+ class hardware. It helped shave off an additional 128 MB from video memory, as well as speeding up terrain rendering in ultra low quality mode and PVT at any quality level.
Finally got back to working on Water2. So far I’ve added high frequency distortion and optimized the shader by caching some computations. Right now, I’m pushing to get reflections working again, albeit with a few improvements, and I’ve asked Andre to enable rendering of clouds into the environment reflection map. The water visuals might change drastically over the next few days, on the development branch, only due to reflection. I’m hoping to get it on Stable next week.
- Fixed a tiny issue preventing automatic Refresh All upon entering the Server List panel.
- Added a Dirt Layer to our Standard Cloth shader.
- Fixed camp fire particles being too transparent
Bring back reflections and other water related improvements and bug fixes.
I continued working on adding more relax gestures for the various weapons. I also noticed they were a bit stiff without the lower body animating, so I went ahead and added some movement to the pelvis and legs. They look more natural now.
I started to add some more wounded animations to add some variety to the game. I added an animation for when the player gets shot in the left arm. Eventually, I want to have an animation for each body part that gets shot.
I also added the standing beartrap animation. Here’s a video for both of the aforementioned anims. Please excuse the hitch in transition when the player gets shot in the left arm. I still need to do the looping animation for when he’s on the ground.
I also got around to fixing a few bugs with the relax gestures where the player’s hands would drift off, and I fixed some bugs with the flinch animations looking terrible because they were using IK to lock their heads to the player’s view.
I’m going to continue working on some more wounded animations for different parts of the body.
This week saw the start of a new chain of tasks for me. I finished the art for the corn plants, as well as a quick improvement over the barrel's art.
Some of you may have noticed a new branch where I have been committing work to recently. It is currently where I am laying the groundwork for the new radtowns/monuments/remnants. I’m grouping them into ‘dungeon stuff’ as it’s easier to keep track of under one single name.
I am currently building sets of roads, train tracks, wagons, pipelines, sewers and underground tunnels, industrial and residential structures (standing or collapsed). The list is pretty long and extends to caves as well. At the moment this is greybox, it gives us a good idea of how much art will have to be made in the end and we can also reject ideas for some things with little wasted time.
When the critical mass of having enough pieces to play with has been reached, we can start to prototype new ‘dungeons’ very effectively and have very early feedback on how it plays, and iterate from there.
I most likely have another good week of greyboxing ahead, to reach that point where I can build complex enough compounds involving gameplay. Most likely something to show as well.
I made a bunch of bandana skins! I have some small tweaks to make to the model before these are completely usable, but that should be fairly quick work. These should be ready for in-game use by next week’s patch if all goes well.
I should have some wondrously multicolored pants in the works.
Short blog entry from me this week since I spent most of my time working on a secret, and that’s where the stuff that would be interesting to write about happened.
I did a second pass over horse footsteps so they don’t sound like coconuts anymore, and made a quick new sound for picking plants and rocks so harvesting pumpkins won’t terrify me every time.
I also started working on some more location based ambience for some of the other monuments, and spent a little time working on some better explosion sounds for the rocket launcher and survey charges, but those aren’t quite ready yet.
Next week I’m going to finish up the ambience for the other monuments, and the explosions that I started this week. After that I’ll be working on more varied rustling sounds for the bushes, and making the triggers that play those sounds a bit more accurate.
I’ve continued on with more concepts for the radtowns, keeping the modular approach in mind.
I’ve also been working on the Steam trading cards again, but I’ll wait until I have the finished set before showing them off.
I’ll be doing more of the same, more radtown layout/building designs, as well as finishing up the trading cards.
So this week I've worked at polishing some of our existing assets with some paintovers, mostly some of the more recent armor. I felt like the factory new look to some stuff didn't quite sit right in the world of Rust, which isn't to say there isn't a place for it, but I think things would stain/tear and dirty quickly in our environment. The plan is to add shaders to generally add more dirt and grime to things over time as they are worn, which should look pretty awesome.
I've also been helping tom with some ideas for the female model.
I'll start helping Howie with some landmark stuff. The new modular approach is looking awesome, so hopefully I can throw a few pieces in there to help with the variety. I'll also continue to look at existing stuff and think how can be polished and improved upon with any paintovers. Refinement is a good thing and always leads to a better end result.
Paul has helped with the female character. There’s not much to show at the moment, but we’re taking our time to make it as best as possible for you all. in my own time I’ve blocked out the flak jacket which people will be able to design skins for on the Steam Workshop.
Next week I’ll be working more on the female character and then I can work more on the flak jacket!
Added "teleport playerA playerB" admin console command ("teleport player" still works as before)
Added "teleport2me player" admin console command
Added "client.fps" and "server.fps" console commands
Added dirt layer to some clothing items
Fixed some more causes of rubber banding and lag
Fixed first person player shadow lagging behind
Fixed player bone list including mesh LODs and other non-bone transforms (speeds up certain rig-related operations like rigidbody instantiations)
Fixed ragdolls sometimes to being able to be harvested/looted
Fixed some ragdoll jitter
Fixed entities sometimes being networked globally when first spawned
Fixed black beenie skin not being black
Fixed PCGamer showing on main menu
Fixed loot tables not generating properly
New plant picking sound
Horse footsteps don’t sound like coconuts anymore
Optimized dynamic memory allocations of projectiles (reduces frequency of frame rate spikes during gunfights)
Admins are no longer all female
Modding: Available UI overlays are now "Overlay", "Overlay/Top", "HUD/Overlay" and "HUD/Overlay/Top"
PVE servers no longer allow damage to buildings from players outside of the cupboard range
PVE servers now always allow building demolition if in cupboard range instead of only for 10 minutes
Loot Barrels new visuals and gibs
Corn Plants new art
Tweaked lighting on player in inventory menu
Master server query port is now shared with game port
Clothing icons are rendered from the actual items
Building blocks can be rotated for 10 minutes after upgrading
Reject invalid player names
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.