Devblog 186

Trees now topple, but we've aimed for stability in other places.

16 November 2017
Video Update
Tree Redux

Finally! Harvesting trees just became a little less boring: I've added a mini-game similar to harvesting nodes.

It's pretty straightforward. You hit the tree, a spraypainted mark appears where you should hit it next. Every time you hit one of the marks, your gathering multiplier increases, meaning you'll harvest the tree faster.

You may notice that you're gathering fewer resources than before with the same tools. This is due to the fact that I've changed how tree resources are distributed, because you now receive half while harvesting and the other half as a finishing bonus. You'll know when you're finished because the tree will actually fall over now! This is a clientside effect and has no impact on the server, maybe in the far future we can do something to allow falling trees be part of real gameplay, but for now we don't need to add any additional stress on the server.

This may seem like a trivial addition to the game to some--I remember when I got a bunch of shit for adding "stupid sparkling nodes"--but I think in retrospect we can all agree that these touches really break up the monotony of farming resources, and makes the task feel a lot more interactive and fun.

FYI: Some trees, namely the small bare trees and a few oddly shaped palm trees, have the mini-game disabled because you basically just hit them in the same place anyway, and they do not yield many resources. I still need to add adjustments to the speed at which the larger trees fall to make them more realistic, and the sounds are placeholder. other than that we're good to go so I've ticked this as 'complete' on the roadmap. Onward!

Oh, and as an added bonus... check out what grenades and rockets do to them!

Building 3.0

I've continued the grind on the new building system. This week I optimized the building ID refreshes when placing and removing building blocks, so we're not running into performance issues on large buildings. Then I started tackling the building privilege changes. Building privilege will no longer be emitted in a radius around the tool cupboard. Instead any building blocks that are connected to a tool cupboard emit building privilege for the cupboard they belong to. This means you no longer need more than one tool cupboard per building.

I also extended the building API that tracks all entities that belong to a certain cupboard. It can be accessed on the client as well as the server so the building placement guides can be updated accordingly. Entities like campfires, boxes and furnaces also connect to the building when placed on building blocks, which will be very useful for calculating the building upkeep costs.

Lastly I extended the entity link and socket code to allow new and improved ways to counteract honeycombing and wall stacking. I'm currently adding those new prevention methods to the building blocks, which is almost complete.

My plan for the rest of the week and the weekend is to look into half height walls and half height foundation snapping, so the artists can get started on the required art next week. Then all we have to do is add the upkeep frontend and the new building system will be good to go.

EAC Troubles

You may have noticed an influx of undetected hackers this month. This was caused by an unfortunate bug in EAC's server code that could trap the runtime in a zombie state, at which point it no longer processed any kicks for banned players and even failed to enable network encryption on new connections. Alistair has been working with EAC to track it down, and though it took longer than it should have to get this fixed we're finally shipping a new version of the SDK this week that no longer has this vulnerability. Long story short, things should get better again starting with today's update.

AI

This week I mainly focused on moving us back to baking the full Navmesh on server startup, porting over the most important upgrades from Navmesh Grid. NPCs will be rendered dormant when at a certain distance away from players, and Andre's terrain technology was also brought over to this Navmesh system. The change puts Navmesh loading back to the server startup and away from when the game is running. Due to the reduced complexity for NPCs to navigate on this system, we should see improved NPC behaviour after this change.

With baking all the Navmesh on startup, server owners need to be aware that Unity's Navmesh baking process will demand 100% CPU for the duration of the bake. The workaround to prevent this (that it doesn't freeze other processes on the computer), is to reduce the Processor Affinity. The convar nav_wait is recommended to be on (it's on by default), as the Navmesh baking process will still freeze the game itself while spending all available resources on baking the Navmesh. We are reaching out to Unity to resolve this issue.

Here is a how-to for setting up Processor Affinity on Windows and Linux.

Navmesh Grid is still available as an option. Enable it by placing `+nav_grid 1` in the startup / bat script. This is the recommended option for hosts where adjusting Processor Affinity will not help prevent freezing of other processes.

I added the ability to change how much Navmesh carving we perform on servers. Navmesh carving should get faster when we upgrade Unity to 2017.2.

I also started collaborating with Alex on animal locomotion this week, but how long it will take until we can have this ready for release is too early to say.

Craftable Hazmat Suit

I've started on the low poly and bake for the craftable hazmat suit I've been working on. I've been improving my baking workflow, which allows me to be a bit more flexible in making changes to the high poly, so there'll still be some back and forth adding wear and tear. Here's a shot of a test bake of the legs with some very basic materials on it.

I'm trying to keep the suit split up in different sections (head/torso/hands/legs) to make swapping pieces out a bit less of a headache, possibly allowing for some rag-tag combinations in the future.

Admire Animations

I've looked a few minor things this week, but work also continues on the admire animations.

I've had some questions regarding when these will go in. Similar to when I worked on throwable weapons, once the code starts calling this feature it will break in game if all weapons do not have this animation. So, the plan is to work through the complete set of weapons, at which point I can then set up the animators with the appropriate trigger and hand it over to Helk for code implementation.

Stability Pass

After pushing too many changes at once last week, I was forced to spend a few days focusing on stability. Some of the more critical fixes already went in at the beggining of the week, while the remaining are being delivered with this update.

Hair

Hair was arguably the most problematic, affecting visuals as well as peformance:

    • Fixed beard sometimes not showing
    • Fixed hair-related memory leak
    • Fixed hair motion vectors; used in motion blur and TSSAA

Temporal Anti-Aliasing (TSSAA)

The first iteration was showing some black sludge artifacts when dealing with particles, which we fixed right before launch. However, we ended up having other issues causing the same problem, which required a different approach:

    • Fixed TSSAA related black sludge
    • Fixed TSSAA related water shoreline flickering
    • Fixed TSSAA on inventory player preview
    • Improved TSSAA performance + reduced GPU memory usage; ~150 MB to ~25 MB at 1920x1080

Motion Blur

This one has been bothering me for a long while now and, while I was hoping this would be a quick fix, it ended up eating an entire day... sad. Unity doesn't zero motion blur vectors when swapping LODs. Had to find a workaround to ensure they weren't blowing up:

    • Fixed player motion blur popping when swapping LODs

Other Changes

These are unrelated to last week's update though they have been around for a while and deserved some time:

    • Downscaled some textures to save ~100 MB of GPU memory
    • Eliminated a few small recurrent memory allocations
    • Fixed projected decals not showing sometimes (e.g. bullet impacts)
    • Added basic projected decal draw ordering for tree mini game
Launch Site Layout

Although all launch site changes that I showcased last week are finished and ready to be merged, they won't be appearing in game until the next wipe. These changes will require servers to be wiped, due to the removal of the elevators. In order to avoid compatiblity issues, we have put them on the backburner until December's wipe.

Primitive Box

I was given some new concepts to work on: a series of tiered boxes. This one is the lower, more primitive tier.

Next week, if all goes well, tier 2 will be ready for implementation. In the meantime, have fun spinning the box above.

Sound

I've been doing some sound related bugfixing and polishing this week. Physics sounds shouldn't spam like crazy anymore if an object gets stuck inside something. Song shuffling will kick in properly before the first song is played now, which means you won't hear the same thing on the menu every time. A rare bug where a music clip would try to unload before it was finished loading should be fixed, and a rare bug where bush rustle sounds would get stuck on should be fixed. I couldn't reproduce the last one at all, but I've added failsafes for them and will continue trying to find the proper cause of the issue.

I tweaked cave reverb a little bit. It's a little less sharp now so it should blend in and feel a little more natural.

I've also started working on sounds for the tree harvesting updates. I've wanted to do falling tree sounds for ages now so I'm having a lot of fun with this and really trying to get it to sound nice and crunchy and satisfying. I'm going over some weapon/tree impact stuff as part of this too.

186 November 16 2017
  • fixed

    Failsafe for occasional stuck bush rustle sounds

  • fixed

    Fixed song shuffling

  • fixed

    Fixed repeated phys impact sounds when an item is stuck inside something

  • fixed

    Fixed occasional attempts to unload music clips that aren't loaded yet

  • fixed

    Fixed projected decals not showing sometimes

  • fixed

    Fixed player motion blur popping when swapping LODs

  • fixed

    Fixed beard sometimes not showing

  • fixed

    Fixed hair motion vectors; used in motion blur and TSSAA

  • fixed

    Fixed hair-related memory leak

  • fixed

    Fixed TSSAA on inventory player preview

  • fixed

    Fixed TSSAA related black sludge

  • fixed

    Fixed TSSAA related water shoreline flickering

  • updated

    EAC SDK update

  • updated

    Cave reverb tweaks

  • updated

    Beenie hat deforms hair when worn

  • updated

    Workbench can no longer be locked

  • updated

    Improved TSSAA performance and reduced GPU ram usage

  • updated

    Trees can be knocked down by explosions

  • updated

    Trees yield half res during harvesting and half as finishing bonus

  • new

    Added Tree Minigame

  • new

    Added Falling Trees

Mailing List

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.