Ladders, lots of optimization and more.
21 May 2015
Load times have been an issue since we switched to asset bundles. I've optimized everything I can on our end.
We originally switched to asset bundles to split the game's content up into smaller files, so that uploading to Steam and downloading from Steam wouldn't mean transferring 1gb+ every update.
It's probably a bit ironic that load times get infinitely worse with asset bundles the more you split shit up. I mean it's super worse. Loading items at start-up used to take less than 100ms; with stuff split up over a bunch of bundles it takes over 10 seconds.
So now we're treading a fine-line between bundle size and load times. Things will get better over time.
That's right, bitches! We are now on an engine version that is 0.09 more than the last one. This has turned out to bring more problems for us than solutions, so I ended up spending a day fixing bugs and reporting crashes.
Benefits? Well, not many right now. A bunch of graphics stuff was recoded in 5.1, which should bring some probably unnoticeable performance improvements. They implemented the VFACE stuff we asked for too, so Diogo has no excuse to not make trees and water awesome now.
DirectX versions don't really make any difference but people I know people are impressed by bigger numbers, so now if you have a DX11 capable PC the game will run in DX11 mode.
We could have technically done this months ago, but we assumed that if we switched to DX11 it'd stop everyone with DX9 playing. It turns out that was bullshit and it would have just fallen back to DX9 anyway.
When there's nine threads on reddit arguing about a feature you're adding you know you're on the right track. The ladder was originally meant to be for your own base, like stairs. But obviously it's more useful to visit your friend's rock base.
The ladder doesn't adhere to the building privileges. You can place it inside the radius of someone's cupboard. You can place it on the side of their house and climb up to their roof. It's going to change how you design your bases.
Consider this an experimental feature. You're testing it. This game is in development; play-testing is what you're doing. Yes, your one man base is now going to "get owned" by "big clans" because they are "op". We don't think their inability to climb three metre walls was preventing that anyway.
Player vs Player Collisions
You used to be able to run through other players, and now you can't, but you can jump on their stupid bald heads.
This is also an experimental feature. You're testing it. This game is in development; play-testing is what you're doing.
Along with Andre, I've also been looking into any performance hogging stuff that might improve our situation. This is going to be a bit of a theme for the next few weeks, we're trying hard to get the game performing as well as it possibly can, because we understand this is really the biggest difference between the new and old versions of Rust for a lot of people.
When you join a server that has been up for a while there's usually players asleep everywhere. It's not uncommon to spawn in and have 50 sleeping players visible. This can be a bit of a performance hog since each player needs to be animated and skinned. So now it only animates sleeping players that are quite close to you.
One of our foliage models (some clovers) was about 5000 triangles without a LOD. And it got spawned a lot. In a typical foresty scene we saw our scene's triangle count go from 600k to 1.5m when enabling the foliage renderer. So we got rid.
- Status command can be used by clients.
- Fixed audio settings not changing.
- Server console is UTF8 encoded.
- ConCmds added to global namespace if no conflict exists.
- Viewmodels get lowered more when running, etc.
- Optimized trigger memory usage.
- Added server browser filtering.
- Improved server browser performance.
- Anticheat bans are announced to the server.
- Animals animate further away.
- Fixed supply drop blueprint existence.
More of the same. I still have things on my list I didn't get done this week, like throwing and streamer mode. We've started collecting a lot of stats so we're also going to find a way to use them somehow. I also want to start working on vehicles pretty soon, but that's background noise right now.
I threw all of my plans for this week overboard and did some optimizing.
- Converted all building parts to the LOD grid.
- Optimized detection of conditional building part refreshes.
- Optimized detection of required sign texture refreshes.
- Converted various deployables to the LOD grid.
- Added graphics.shadowlights (number of shadow casting light sources, defaults to 1).
- Added F2 menu object quality slider (mostly affects performance around buildings).
- Made F2 menu shader LOD slider apply to all shaders, not just terrain.
- Fixed issues with our SpeedTree shaders when using low shader LODs.
- Made LOD grid cells smaller (leads to more accurate LOD switches).
- Reduced Hapis Island memory usage.
- Optimized refractive heat shader (fixes lag with lots of furnaces/campfires).
- Optimized emissive HDR particle shader.
Performance isn’t something you decide to improve and a week later you’re done with it and everything is suddenly awesome. There are still a bunch of areas left that could use some work: the lowest LOD of pretty much every building part, static batching to speed up the rendering of low building LODs and various scripts that like to keep the CPU busy. However, we’re hoping that this week’s update will improve the situation to a point where most people will be able to enjoy Rust at a decent frame rate using the graphics tweaks in the F2 menu.
I brought back fps.graph. It now takes the number of frames it should track rather than using a fixed amount (i.e. “fps.graph 100” plots the last 100 frames) and renders a lot faster than before. If you go overboard with the number of frames to plot it might still slow down rendering, but it should be fine when staying within a reasonable range. Putting time into this might seem like a strange thing to do, but having a way to identify individual frames that take a lot longer than the other frames is important when looking for potential causes of hiccups.
I added a dev section to the F2 menu that allows us devs to toggle the visibility of various elements of the world in the release builds on Steam. This should help us with future performance analysis.
- Mushrooms no longer collide with player movement.
- Rarely visited / chopped down forests no longer grow insanely dense.
- Fixed radtown barrel spawners reducing the number of randomly distributed barrels.
Since I didn’t do anything I had originally planned for this week, I’ll try to get back to procgen8 next week. I might have to do some more work on performance as well if the stats we get from analytics don’t meet our expectations.
I was away for a few days this week, so I didn’t get as much done as I would have liked to, but I did manage to fix some bugs from last week's patch:
- Fixed reload exploit involving converting ammo types.
- Ammo Type menu now shows up if ammo type in gun differs from that in inventory.
- Tracer effects are scaled by velocity, and below a certain threshold are destroyed. This means no more ‘cyber rain’. RIP, falling bullets.
- Supply Signal smoke is more reliable and will show up to new connectees & people who just enter visibility range.
- Applied Cloth Helmet protection to the back of the Metal Facemask - this means the leather part protects like leather, and the metal protects like metal.
Sorry I wasn’t around, but next week I plan to finish up adding the remaining ammo types for rockets & bullets, and I'll start working on implementing a new gameplay element: Mining
I tried my best to wreck Andre and Garry's FPS optimizations by adding in a sexier looking ambient occlusion system. It should look a whole lot better, but it's worth noting that it may be heavier on certain systems. Let us know.
Other than that, work goes on to unsuck Hapis Island, and while we won't be pushing out a patch and causing a wipe this week, I'd like to give you a sneak preview of what to expect next week when we do.
- That entire barren north edge of the island will be fleshed out.
- More roads.
- Underground road tunnels.
- An issue that causes some areas to become overly barren over will be fixed.
- Some of those overly steep noob-killing beach ramps improved.
- Ore spawns in non-forest regions improved.
- The bush shortage will be less severe.
- Better barrel spawns in all radtowns.
- And finally, trees trunks should not quite be so unnecessarily pixellated anymore. Chopping trees will be totally fun.
There's more than that on my list, if I can squeeze it in -- but right now the plan is to get these big issues fixed, and to turn Hapis into a monthly wiper after next week's patch.
I added some more jump animations for when the player is moving sideways or backwards.
Separated the bolt-action fire sequence. It’s now possible to view your target after you fired a shot. It works by pressing the fire button to shoot, and if you hold the fire button down, it will prevent the bolt from cycling. Release the fire button and the bolt rifle will cycle.
Started work on some climbing animations for the ladder that Garry integrated.
Improved the deer running animation.
I fixed an annoying bug with the animals where if you approached an animal for the first time, it would appear to be running in place for a few seconds.
Several people have commented that the players were animating at speeds you’d expect from a crowd of teenagers at an all-night rave that had ecstasy pills raining from the ceiling, so I went over all of the player animations and adjusted the playback speeds for a lot of them.
Next week I plan on finishing up the player climbing animations and attacking my backlog (handcuffed animations, etc..). If the semi-auto pistol model is done, I’ll probably rig that and animate it.
I finished a few things that I’d been trying to fix for a few weeks, mainly related to fixing skinning issues and LOD models. Being dumb? Bad! Learning from mistakes? Good!
- Fixed skinning on the snow jacket neckline.
- Lowered the polycount on LOD3 of the black jacket.
- Added world models for most of the clothing items in the game (still have a few more to add).
- Updated the metal face mask so that the skullcap and face plate are separate pieces (this should make headshots from the back do more damage, if it’s working properly).
Also, I’m pretty much done with this miner’s hat. I need to do a final texture pass, but then all I’ll have to do is LOD models and make sure it’s working in the game.
Next week I should have most or all of the world models for clothing done, and I’d also like to get started on some other headgear based on a couple of Paul’s wolf headdress concepts.
I started this week working on the first-pass animation on the quarry assets I made the week before. It’s a good step, but the prefab will still need attention later with particle/FX work and sounds for it to look convincing.
After that, I looked into the water catchers made some time ago. We found that the visuals were not matching the rest of the player-built structures, so I revisited the asset between others tasks.
I also quickly pushed a first ladder model in the game so that we can have something to look at on top of Garry’s work.
Next week is going to be another busy week for me, with possibly the oil pump jack, and an attempt at creating new lighting sources with a scrap light/spot light that Megan has produced concepts for. In the next couple of months there are other big things lined-up like the windmills, water pumps, several tiers of engines and slowly but surely we’re going toward a big update in terms of content.
This week I finished going over the animal footsteps to distinguish them from player footsteps more. Those always get pretty monotonous to work on because there are soooo many of them (each animal has different sounds for different movement speeds and the type of ground they are stepping on, and there’s multiple versions of each combination so that they sound less repetitive). I think we’re at 320 separate audio files for these now.
I spent some more time on the gunshots, then I tuned the river sounds a bit so they feel more like they’re coming from all around you when you’re near a river, instead of just sounding like they’re coming from a couple points along the river. I’m going to start swapping these sounds out based on the slope of the river soon too, so steeper sections of river will sound like they’re moving more quickly.
I also started working on polishing up some of the melee weapon sounds.
Next week I’ll be finishing up the melee weapon polish pass and working on gun reloading sounds. If I have time I’ll start working on a second pass at ambience as well.
Smashing people over the head with a crazy spiked bone mace thing is awesome, so I worked up a rough concept for something that's ready to be taken into 3D. I worked on the pistol some more, refining the design with feedback from Garry/Helk/Minh so it actually functions properly for iron sights, looks cool in FP view, and doesn't give Minh nightmare at night when he tries to animate it.
Next week I'll be doing stuff to smash/butcher/bludgeon people with in different ways, so machetes/flails/lances, etc . We're always open to cool suggestions people leave in comments and such, so hit us up with any ideas you guys would like to see in-game. I've also been working on this big thing, and this small thing, but you can't see them yet.
I've been working on a new melee concept from Paul: the bone club! I’ve been working on getting that all nice and juicy, and I’ll probably do a normal version and a bloody version. I’ve still got to play around with the textures and create the LODs, but it should hopefully be done very soon!
This is what the bloody version looks like so far.
As for next week, hopefully I’ll be able to have a go at Meg's crossbow concept.
I’ve been focusing on the windmill player structure. I did some rough sketches about a month ago and decided to take the favorites and realize them better in 3D.
I liked the idea for four, and I tried seeing what that looked like with a few different bases and more detail
Helk pointed out it wouldn’t be very interesting to look at on the horizon, which makes sense compared to the other designs. I think three is probably the one I’m going to take to a final design, because it looks iconic from a distance and has the right “Rusty” aesthetic.
I also started exploring gas powered engines that power the quarry and pump jack structures.
Next week I’ll continue working up the windmill and exploring more ideas for engines.
I narrowly missed this for the blog last week, but I've polished off the brief for the scrap searchlight. Hopefully we may have it modelled and in-game for people to play around with, soon. Also, I have polished up the scrap ceiling lights with a couple of suggestions about painted lightbulbs. Alongside that I've been playing around with a few ideas for paintables and metal signs.
I also did the icon for the new ladders. Tall and short.
Next week I’ll be sketching out some ideas for a tier 2 furnace, probably some more icons, and possibly playing around with some more paintable ideas."
Took some time this week to fix the terrain and custom foliage shaders on DX11 and Unity 5.1. Also added some UV scrolling features to our customized standard shaders.
- Fixed that terrible terrain lighting issue that’s been live for a while.
- Fixed PVT on DX11.
- Fixed lowest quality terrain mode on DX11.
- Updated SpeedTree shaders to Unity 5.1.0f1.
- Added a metallic version of rust standard shader.
- Added optional UV scroll to rust standard shaders.
The new water is going live on development branch today, albeit with a very basic optics. The most important parts are done, so it just needs to be made pretty now. Mostly shader work.
I got some experimental shoreline wetness working as well, to make the terrain-water transition more seamless; foam will also help.
Next week I'll improve the water aesthetics; add a Lake water type option; some optimizations are due that will allow us to get more detailed water (on HQ mode) on the same budget. Will add several quality modes, so everyone can get decent water, and will give another stab at dynamic reflections.
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.