This patch wipes the servers. Enjoy!
I’ve been polishing the supermarket for the update. The shelves were looking a bit empty, so I decided to make a
bunch of clutter to give it more of a post-apocalyptic feel. Things such as rotten food, old bottles and newspapers
were scattered around the scene and I’ll add these to other monuments to improve their looks.
With that done, the supermarket and the gas station are finished and will be in today’s patch.
Going forward, my plan is to get back to the snow biome, with the main goal of making it more distinctive
from other environments.
Although this was a short week for me, I began tackling another element of the roadmap which I think will be
very welcome: Item Information Panels. Basically, based on the item you select, we populate the menu with
information specific to that type of item. This means for firing weapons you’ll see what the rate of fire and
damage is; for melee weapons you’ll see how good it is at gathering different things, as well as its attack radius
and range. These panels appear in the crafting window so you can see the stats of an item before you craft it.
I know it looks like crap right now, but I’m just getting all the functionality in place. It needs tooltips and proper
sizing and placement. Also, the values could be calculated a bit better, so some might seem too close together.
I’m working on it.
I think this will help everyone have a better understanding of how items should perform, especially new players.
The gathering information is currently set up so that the ‘value’ is an indicator of the speed that is gathered, and the red portion is an indicator of how much is actually ‘destroyed’ in the process. So harvesting a tree worth 1000 wood with a tool that has Tree Gathering half red would yield 500 wood. It’s a bit convoluted, and I’ll improve it and add some tool tips to explain things next week.
Not too much changed, but I’ve modified the Bradley loot table to drop 10-12 tech trash. The Bradley still needs a few more weapons implemeneted as well as weak spots, so expect this in the coming weeks. However, I think it is safe to divert some attention to other elements on the roadmap before going back to it.
With this wipe we’re changing the default map size back to 16km² (from 12km²). This isn’t simply because we like to randomly jump back and forth between the two, but because the reasons that made us reduce the map size in the first place have evolved. We’ve added a lot of content since the map size reduction and most of that content (caves and new monuments) massively reduced the available space for building a base. Community servers can of course still run smaller maps if they please, but the official servers will use the bigger map.
I’ve spent most of the week upgrading the project to the Unity 2017.1 version. The upgrade came with a number of problems that had to be addressed, but overall it seems to be one of the more stable major Unity releases. Aside from some shadow mapping improvements there shouldn’t really be any front-facing changes, but it contains a number of pretty interesting new features under the hood. The biggest addition for us, and the main reason for the upgrade, is that they finally added a new version of the .NET scripting runtime that includes some pretty major optimizations. Unfortuntaly this is still experimental so we cannot ship it just yet, but they’re planning to have most of the problems ironed out in the next release and now we can start doing some internal testing with it to get a head start.
I’ve identified and fixed a memory leak caused by some UI images that were loaded from the web. It’s not the biggest leak ever, but it’s good to have it fixed nonetheless.
The terrain texturing around cliffs has been looking completely out of place and ugly for a very long time, but it has gotten much worse since the cliffs were changed back to a bright gray color. I rewrote some systems that made this difficult to address and updated the affected cliff prefabs. I think it’s much less of an eyesore now.
I’ve added a prioritization system to monument spawning so we can guarantee certain monuments on all seeds. For now the only monument that’s affected by this is the launch site – which has the highest priority.
The new Untiy version seems to have added some better crash logging. This helped us track down the notorious crash when closing the game and I was finally able to fix it.
Profiling is one of our most important tools in the battle against shitty performance, so it’s important that it works right. While debugging some issues from the Unity upgrade I decided to write a tool that helps us with finding incorrect profiler samples in our code – which are usually a pain to track down since Unity offers very little logging for them. The tool keeps track of all profiler calls, automatically detects mismatches and outputs a call stack with the exact details of the problem. I immediately found and fixed two profiler sample mismatches that have gone unnoticed for months. Pretty good.
This week has seen a lot of clean-up again in the AI systems after they have lived on a branch for a while. I merged the new Navmesh Grid stuff to main, but there are still some performance kinks to work out for high entity counts. Since the process of generating Navmesh is continuous, and doesn’t only happen at server initialization, there’s a higher standard for performance with this approach compared to the previous one. We are testing the Navmesh Grid this week on a few selected servers.
Navmesh links now use position-samples and raycasts to ensure we don’t generate links that make NPCs fly or ghost through things, and generally they will traverse a link between two grid cells more smoothly. Until Navmesh Grid is ready, we turned off Scientist populations.
I started work this week on a Nail Gun concept by Paul, which you can see here. But as I was working on the high poly, Paul decided to rework the concept and it’s a big improvement. That concept can be seen here. I absolutely love this style of weapon concept, and I really want the details to translate into final product (like the chunky welding). The idea is to have this as a visually chunkier ‘small’ gun. Here’s the progress so far.
I made really good progress on the tank sounds this week. I did another fine tuning pass over all the weapon sounds, finished flybys and explosions for the main shells, finished implementing turret rotation sounds and tread sounds, and started working on chasis lurching sounds. We updated to a newer version of Unity this week and I lost some time to a few snags with that update, so I wasn’t able to finish in time to get this stuff out this week. All I’ve got left is finishing up chasis lurches, distant variations of the gunshots, the main explosion when the tank is killed, and some quick final testing. That should all be really easy and straight forward so expect this stuff next week. All in all I’m really happy with how this has all came together so far and I’m hyped to get it out.
I also spent some time tracking down a sound-related perf issue around bases with lots of auto turrets and sorted that out this week.
This week was mostly about rushing to upgrade Unity to 2017.1 on time for the update. Last week, however, Alistair and I noticed that some explosions (e.g. survey charge) were lagging the game for everyone even remotely close to the blast area.
The reason turned out to be related to particle collisions of debris ejected by the explosion. This is also the case for Ore mining and other effects where you see rocks hitting the ground, rocks or buildings. These effects are merely visual and shouldn’t be affecting lag this much.
I rolled out an experimental collision LOD component in order to addresss these. Collisions are now disabled for explosions further than 50m and quality is now also adjusted based on distance.
For now only the survey charge explosion has been optimized. However, if all goes well, I’ll be rolling it out to other effects on a client patch before the weekend peak.