We added hand-held maps, research tables, and bean can grenades. And we started to make Hapis Island rad.
You know what would be cool? An in-game map so you can find where you are without using a web-page and a bunch of console commands. You know what would be cooler? If the map was an item you crafted. You know what would be even cooler? If it had persistent fog of war, you could draw on it, and it could be looted.
The basic usage is this: craft it, then put it in your belt bar. It needs to be in your belt to be active. When it’s active and you’re walking around, it will update the visibility automatically. You can open it holding the map key (default G). To draw on it you just press the right mouse button to unlock the cursor.
We have a bunch of future plans depending on how it works out, but for now you have no idea how totally sick I am of looking at this map. You have no idea how much I hate Unity’s RectTransform coord translation stuff. I have suffered through it all for you.
The UI should feel a bit snappier now. This is particularly apparent when opening the inventory menu. I saw consistent times of 50ms+ when scrolling around the map completely disappear.
UnityUI has a setting for “pixel perfect”, which you use if you want your UI to be pixel perfect. Our UI scales with the screen size and we don’t need that enabled, so I turned it off. BAM! Shitloads faster UI.
Speedtree Aren’t Speedy
I’ve been looking into performance again this week, because it fucking sucks that people with BEAST computers are getting shitty framerates. I added a render timings thing to the F2 menu, which renders the camera in a bunch of different scenarios, and it revealed something pretty interesting.
What this is telling us is that on average a normal frame takes around 11.5ms – with no terrain it takes about 11ms. With no trees it takes 4ms. So rendering trees is taking the majority of the frame.
We had more trees in Legacy. A shit-ton more, but Unity could handle it because of these settings…
But most of these settings don’t work anymore. If they worked properly, exposing these settings in the tweak menu would solve a buttload of performance issues with have with the trees right now.
The way trees are handled and culled internally in Unity must be slower with a large amount of them now too, because we get the frame rate drop even if we’re nowhere near trees, and not looking at any trees, and the shadows aren’t being rendered.
To get things kind of under control we’re lowering the amount of spawned trees. There should be less than half the amount of trees after this update, which should hopefully give everyone a nice frame-rate boost.
- Fixed missing feet in player shadow.
- Fixed shadow jitter when dead/wounded/sleeping.
- Fixed accidentally dropping items between inventory cells.
- Fixed blue shirt collisions (was scaled 100x).
- Fixed metal plate collisions (was scaled 0.3x).
- Fixed hazmat helmet collisions (was scaled 100x).
- Console history is less terrible.
- Player animation performance.
- ShaderLOD is clamped (was being used to see through walls).
- Ban command bans family share owner ID too (if family shared).
- Status command shows family share owner.
- Status command can take a player filter string.
- Fixed clearing a texture creating a bunch of garbage collection that caused performance spikes.
- Banned Fake Servers.
I’m going to have more fun next week. The map burned me out. So I’m going to have fun implementing a bunch of stuff we have backed up.
I’m going to look at asset bundles again to see if they’ll speed up our build process and our upload process – because right now it’s taking an hour to upload to Steam and that’s slowing up our iterations a lot. I guess I’m gonna be helping out Helk with stage two of his research stuff too.
I did the first iteration of the long awaited research bench. It’s pretty straightforward: you put your item in, pay the required resources (item cost + 10 paper), and you get a 30% chance to get a blueprint for the item. Here’s the catch: that 30% is scaled by both the item’s condition & max condition, and if researching fails it either destroys the item or reduces its quality to 0. This kind of sucks, but I’ve got a way better idea that I’ll get implemented in the next week or so. This should do for now. Check out the temp art.
Bean Can Grenade
I had a lot of fun programming this thing (header image). It’s pretty unreliable, but that should make for some interesting situations: sometimes it goes off, sometimes it doesn’t. You can pick up dud grenades… but maybe that’s not such a great idea?
Arrows were travelling as fast as pistol bullets and doing 3x the damage. I fixed this. Some of you might not be happy, but I didn’t feel that the bow should outclass the revolver. You’ll need to lead your targets and arc long distance shots a bit more. Also damage was slightly reduced. It’s still pretty deadly, but just not as easy to aim.
I’ve gone through and implemented our second Sub Machinegun! You might remember it from the concepts a while back. You’ll notice this weapon has a higher rate of fire than the Thompson, but weaker rounds. It’s intended to bridge the gap between the revolver and the Thompson. It’s pretty well balanced and a blast to shoot and I’m sure you’ll all like it
It was one of those weeks. For every issue I ticked off my todo list, three more got added. The fixes for a lot of stuff are still being worked on.
Hapis has a bunch of silly stuff, like barrels not respawning (on top of the obvious lack of radtowns) that didn’t exactly make it very playable. The good news is that we *should* get that sorted, but it’ll be next week at the earliest. The island will soon have far fewer empty looking areas, and it will get a set of six radtowns.
One of these six, the biggest and best, will be located right in the middle of the island, up in the freezing mountains. It will not only have the most loot, but I’m also toying with the idea of not having any radioactivity there, allowing gangs to literally camp right inside the place, king of the hill style.
Maybe that will turn out interesting?
(P.s. Don’t read too much into the radtown lighting. It’s probably not here to stay.)
I am currently producing our new research bench, based on Paul’s concept. If things go on as planned, next week I will start work on our first mining block, or at least the first step in a direction that may take multiple iterations before going in.
I originally planned to have both water tanks on the same texture map, but it looked like crap in-game, so I had to rework it. I went back and made sure each tank has its own texture sheet. While I was doing this, I reworked the smaller tank textures and did a proper pass on the bigger tank. I also had to re-UV and re-bake each one.
Next up is an LOD and gib pass.
I have been continuing work on concepting the electric lights. They’re starting to get to a place we’re happy with, so I’m working on making more batches along these line. We’re trying to move away from orange. People seem to like the idea of being able to choose or paint your own glass/lightbulb colour, which could lead to some interesting Rust buildings! I also made the icon for the bean can grenade.
My focus this week has been water simulation and geometry management while aiming for a high performance, yet decent looking water solution. I’m hoping to have a seamless transition with minimal relative overhead. The level-of-detail control is very flexible and can be set to aggressive on low-end machines.
After a bit of a delay, the development-branch integration is scheduled for this weekend. I haven’t nailed the optics yet, but this will be the priority for next week when combined with the other game visuals.
My main focus was implementing and designing animal footstep sounds that are appropriate for the stuff being stepped on (like player footsteps). This also means we get goose’s footstep effects on animals now too. Some of the sounds still need a bit of fine-tuning, but my ears need to work on something else for a few days before I come back to this, or I’m going to start having dreams about animals chasing me. Since I finished this so close to patch time we’ll be merging it next week.
I’ve also fixed wolves being silent, and fixed some important sounds (like bush rustles and wolves growling) getting cut-off early by the per-object voice limiting.
I’ve had an itch to work on weapon sounds so I’m going to be doing a proper second-pass at the gunshots next week, and a first-pass over all the gun reloading sounds. I’ve also got a pretty big list of adjustments that I’ve been gathering while I played this week that I’m going to run through.
I fixed the texture for the bullets for the revolver, and I finished up on the flammable RPG ammo type. Here’s what it looks like.
Also made another RPG ammo type, but its type is currently a secret.
I’ve started on the next ammo type too! Hopefully should be done by the end of the week or by Monday!
I went over all of the animal models and further optimized their LOD models. They are now using 50% less polygons and they taste the same!
I worked on the new SMG. It’s a lot of fun to blast.
Next week, I’m going to be finishing up some player animation stuff I put on hold (leaning while running + turning), and some improvements to the jumping animations.
I’ve been doing more cleanup and behind-the-scenes stuff to make work easier for myself and other artists. In addition, I’ve been fixing some pretty weird issues with clothing that I hadn’t noticed before. These changes won’t go live for a little while yet since other people need to be involved to get some of them working in the live game.
- Fixed skinning issues with one of the jackets.
- Remodeled some of the lower level of detail models for better performance.
- More work done to create world models of folded clothing.
- More cleanup of folder structure, along with removing all kinds of unnecessary textures and materials.
Work on the bridges continues at a steady pace. I’m trying to be more efficient with texture use on these big boys, lots more high quality tileable textures and floating decals for all the detail. Apart from the Satellite Dish monument, I think everyone agrees that our big environment assets haven’t turned out as great as we would have hoped. They lack that sense of scale, and all of them feel plonked on. That’s something we need to work on. Hopefully the new bridges will go along way to fix that and give us a benchmark to work to.
As an artist, I can’t go without adding an image to the blog, so here’s a picture of all my UVs laid out on top of one another. Sometimes I dream that I’m unwrapping the same UVs again and again and again.
Last week we started kicking for checksum mismatches, which led to a few people being unable to connect to all servers running a procedural map. The good news is that I got some decent data from some of those who were affected, and while I wasn’t able to reproduce the issue on any of my machines, I now have a pretty decent idea of what the underlying problem seems to be. Long story short, checksum mismatch kicks are disabled again–for now–since none of the data I received pointed towards any serious game-breaking differences between those clients and the server. I’m planning to fix the issues I identified and try again next month.
As announced last week, I reworked the way we check whether or not a certain world position is underwater or not. This means rivers and lakes are now correctly detected as water and affect the character. The whole thing also got quite a bit faster, and should be more scalable than it was before as the time that’s required for a water check no longer depends on the number of water bodies in the world.
Procedural Components On Custom Maps
Procedural components are now fully supported on custom maps, and Petur started experimenting with them on Hapis Island. It’s possible that custom maps will be partially modulated with the server seed using those, but I’ll leave that up to him.
- Fixed mushrooms disappearing with the decor quality slider (they have colliders and therefore have to be the same for everybody).
- Fixed mushrooms bleeding when hit.
- Fixed some cases where clutter decor could spawn in places it shouldn’t be allowed to spawn.
- Fixed black sun behind clouds when bloom is disabled.
- Cargo planes no longer drop their loot into lakes and attempt to avoid other unreachable locations.
I started working on the next iteration of the procedurally-generated worlds right after last week’s devblog. All the features in this section will not go public for at least another 3 weeks as part of the next wiping update. However, I decided to document the changes every week since it’s easy to forget all the details when writing about a full month of work at once.
Procedural maps are currently using a combination of artist-created mountain prefabs that are fitted into the world and procedurally generated mountain lines that are used to subdivide the world and introduce more randomization than exclusively using pregenerated mountains would do. Naturally the mountain lines that are created on the fly tend to be lower quality, which this week I tried to compensate for by adding back the procedural pseudo-erosion I wrote about back in the early days of Rust experimental.
Since the procedural generation has to be done on every client in exactly same way, even those with very old hardware, it has to be relatively fast. To achieve this, we’re using a highly optimized noise back-end, which to a certain degree comes at the cost of noise quality. To compensate for the tendency of our noise source to generate unnatural-looking regular shapes I added proper noise distortion to the height-map generation this week. This basically makes everything look more natural, but it’s mostly visible on mountain ranges.
The prefab mountains on the other hand have to be smoothly fitted into the rest of the terrain, which so far was done with a very basic blending method that could lead to visible discontinuities between prefab and procedurally generated terrain. I decided to improve this blending while maintaining detail in the transitional areas. This change also affects various other terrain elements like monuments and all types of procedurally generated terrain features.
Other changes include a randomized monument placement order that is modulated with the map seed such that tiny maps no longer always spawn the same radtown, underwater bridges are now really fixed and lighthouses no longer interrupt bridges.