VEIN Weekly: Balancing & Bugfixes

VEIN Weekly: Balancing & Bugfixes

Hi everyone! Welcome to another weekly update. We've been pretty busy, specifically with a large Unreal Engine upgrade, which should improve performance, among other things. More details below.

Before we get into it we want to remind you that these weekly updates are just updates as to what we're doing internally. The updates in these columns are coming in a later update, but right now they're still just in our internal builds. The one source of truth as to what's in the game is the Steam changelogs/update posts.

With that out of the way, let's get into it!


Hotfix 9/10

Last week, we shipped Hotfix 9, followed by Hotfix 10 quickly after to address a pretty nasty UI issue. Check the changelogs for Hotfix 9 and Hotfix 10 on Steam.

In that hotfix, we did a couple more fixes after the last weekly blog post. We fixed the direction of the flag on the military jacket clothing item. We fixed keys for vehicles not spawning in multiplayer, and improved the efficiency/CPU performance of the AI spawning system quite a bit. We fixed the bunker house junction boxes not being wire-able (that is, the double-houses in Lyon Mountain).

Corrected uniform.

We did some more work on vehicle attachments, and fixed painting vehicles in multiplayer, though we are still receiving some bug reports about this. We also modified the bed/location saving system, so when you sleep in a bed, it's relative to the bed's location. This seems trivial but it allows for camper van bases where you wake up in the camper van, and sets the groundwork for train and boat bases in the future. This had the side effect of some people with existing beds ending up spawning up in the air way above the ground. Sorry. If this is still affecting you, sleep in your bed again after spawning at a random location and it will be fixed.


We also fixed some localization issues reported by the community. We intend to translate VEIN into as many languages as we possibly can once we've received the first funds from Steam, starting with the languages/countries that have the most VEIN wishlist volume.

Working on some visualization tools.

We did some work on asset fixes and tooling. I wrote some tools to detect problem assets (like 3D assets that are too large, or surfaces that are wastefully complex). Detecting these assets lets me fix them quickly and ease up some pressure on your graphics card. I've fixed a bunch of these for the next hotfix update.

For the next major update, we've added some more lifetime stat tracking (like birds killed or items scavenged). We want to get these in early for two reasons: first, they're really easy to add, so they take very little time, and second, they'll impact Steam achievements when we add them. We need to track them or actions you take won't count towards achievements.

We're working on refactoring a lot of user interface text under the hood. We've had requests for specifically text scaling, not necessarily UI scaling, but to do that we need to technically replace all the text in the game with text objects that have the ability to do this. This isn't super difficult, just tedious. We may or may not have this done for the next major update.

Text scaling, obviously work-in-progress.

Gas Pumps

We added a requirement that gas and diesel pumps require power and a tank connection for the next update. Rewiring electricity is fairly easy, but the tanks are underground, so we have to make sure you can't unwire these easily (if at all). I think once we start working on the electronics/mechanism rework, e.g. requiring skills and tools/resources to wire things (see the roadmap here), it'll be somewhat difficult to unwire things like gas tanks.


Controller Support

We've been continuing work on controller support. Disconnecting a controller now pauses the game. We've added support for an on-screen keyboard in Steam's Big Picture mode. The tutorial now has gamepad/keybind rendering support. We added an 'invert horizontal' setting, and added a radial menu for opening UI, like the inventory or construction menu, for gamepads. We also made the in-game map zoomable with gamepads.


Unreal 5.6

A large part of this week has been dedicated to upgrading the game from Unreal 5.4 to Unreal 5.6. This will have a few large effects. In testing, we've seen performance improvements of up to 180% in some areas of the map, specifically where many things are being rendered, like in Clinton Correctional Facility or Werrenrath Island.

Before, 52 FPS, Werrenrath Island
After, 90 FPS, Werrenrath Island

To get technical, this is thanks to render thread parallelization. To put it simply, the way rendering works in most graphics engines is that the CPU prepares work for the GPU to execute, then uploads it to the GPU. While the GPU is working, the CPU does 'thinking' tasks, like loading the world, AI, physics, and anything else not graphical. The CPU then waits for the GPU to finish and repeats that all over again, 60+ times per second. Unreal 5.6 has various improvements to the preparation and upload stage for the GPU, such that a lot of the work can be executed in parallel with (that is, at the same time as) other CPU work. That means it doesn't cost nearly as much performance to render a lot of stuff. VEIN has a lot of stuff in it to send to the GPU, so this helps a lot.

The engine upgrade also brings some asynchronous physics performance upgrades. I'm sure some of you have noticed that in some cases you have the capacity to walk through trees if you arrive at them fast enough. This is because we load in tree physics slowly compared to their visual representation to prevent the signature Unreal Engine hitching/frame drops when moving quickly. Unreal 5.6 promises some tooling to prevent this natively, which should be a lot better than our solution. We have yet to test this though, so we can't promise this will work or be in a future update. Fingers crossed!


Art & Sky

We've started planning a redo of our sky and weather graphics. Reports of rain falling through buildings are common, and our clouds are a bit flat. Our moon, especially the new moon, looks very weird especially at sunset/sunrise. We're going to be upgrading our sky and lighting over the next few weeks.

We're also continuing work on graphical upgrades to foliage.


Wood Logs

We've made it so wood logs burn 30 times longer than before. Generally when we make game design decisions about how players will use systems in VEIN, we have to make assumptions about how players will play the game. One of those was that players will use fireplaces and campfires specifically for cooking alone and not much else, so they'd value higher temperatures from fast burning. We didn't consider players trying to make long-burning fires for comfort and decoration reasons, so now it's adjusted.

10 wood logs last around an hour.

On that note, we want to remind you that a lot of timing/quantity/balance things can be adjusted by us usually changing one number. If we want to make hunger accumulate slower, or affect the player more or less, it is in fact one number. We just try to avoid changing them too much because we don't want to damage balance elsewhere. If we make thirst more punishing, then suddenly you need more water bottles. If you need more water bottles, we now need to adjust loot spawns. If we add more water bottle spawns in refrigerators, that means fewer food spawns in refrigerators, which affects hunger, etc.

However, if there really are things that are unpleasant to work with, that's where we need your feedback. We read as much of it as humanly possible, even if we don't always respond to it. If there are balance changes that you think are problems for most players – by all means let us know!


Item Balance

We've been rebalancing all items in the game. As we mentioned last week, we've been working on altering the weight of items to be more realistic and easier to work with. This week, we've started work on adjusting dismantling results for most items. Oddities like screws appearing when dismantling bowls or getting glass shards from cleaning wipes are fixed, and we've added dismantling to many items that previously could not be dismantled.

Some changed items.

In order to properly balance the item economy, we need to have a clean base to start from. I'm aware a lot of people found, for example, screws specifically from dismantling plastic junk. After the next major update, if there are significant issues with dismantling balance or the loot economy of the world, just tell us and we are more than happy to fix it. Our only goal is to make the game better.

On that note, we're going to be adding dismantling level requirements to both furniture in the world and items. Some complex furniture or items will require specific stat levels to dismantle.


Stats

While we're on the topic of balancing, we are also very aware of severe imbalances with stat leveling rates. We'll be rebalancing this as best as we can based on your feedback. Again, we want to avoid rushing into balancing as we risk upsetting other systems around the game.


Multiplayer

One aspect of the game we have heard all-too-much feedback on is the multiplayer performance. This is a priority for us in the short term.

I'm in the process of rewriting some major systems to distribute the network load more spatially, such as persistent corpses and decals, and inventory and vehicle networking. We probably won't be shipping these in a hotfix, as they're pretty complex and we don't want to cause any crazy bugs without a ton of testing first.

I've rewritten the persistent corpse and decal systems. They are now spatially localized to active players, which should significantly reduce network load and fix reliable buffer overflow crashes/disconnects.

I've added some more data to be submitted from the 'auto trace' button mentioned last week which should help us debug networking and performance problems even more. That will come in the next hotfix.

We're working on fixing some security holes to do with base raiding. We've added a few buttons to the admin menu to help reverse vandalism and respawn containers and furniture, and are patching exploits daily, which will be in the next hotfix.


Temperature

We've started planning a rewrite of building temperature. This is all over the place. In games, air has no temperature; temperature isn't real. We have to write algorithms to simulate the temperature at any one place or for any one object. For buildings, it's complicated, because buildings in real life are heated by a combination of insulation as well as heating elements like radiators, air conditioners, air furnaces, etc.

In VEIN, we have air conditioners and radiators. By default we assume building insulation will cool or heat a building to room temperature, which isn't true for all buildings in real life. We assume radiators will adequately heat the entire building, which isn't true either. We assume air conditioners will decrease the temperature of buildings uniformly, which isn't true. These were conveniences made when we first planned temperatures in buildings, but we're at a point where they're starting to result in very silly outcomes, like entire buildings being below freezing or above boiling.

So, we're in the design phase for rewriting this to something that results in more realistic temperatures, while responding to seasonal weather-based temperatures and conditions.


Vehicle Hitching

We've added vehicle hitching for 0.023. This has been in a while but caused a crash when I first wrote it. I've finished it now that our engine upgrade is complete!

You can attach most if not all vehicles to each other, but towing a vehicle is physically accurate, so it's incredibly difficult to tow e.g. a school bus using a utility vehicle. There will probably be bugs, but that's why we test as much as we can before pushing major updates. You can check it out if you like on the Experimental beta branch on Steam.

Towing vehicles.

So that's about it for this week! Lots to talk about in this one, and lots of work still to be done as always. We're still sorting out business/legal/accounting stuff, and still haven't received any funds from Steam, so we're still technically broke until that comes in. We're assuming it'll come in in the next few weeks at which point we can start the process of expanding the team and improving... well, anything we can that we've had to cheap out on so far.

See you next week!

-- Kyle & Azi