The UI Update – Major Engine Upgrade

Unity 6

The UI Update Release

This one took a while, but the UI Update finally releases today. It’s more than just UI changes though, 1.40 marks a milestone engine upgrade to Unity 6 and the end of Early Access. This update tidies up many loose ends with fixes and improvements and paves the way for improved workflows for both developer and modders.

Complete UI Rewrite

New UI

The entire game UI has been rewritten using a data-driven approach. Although most of the interface will structurally look similar to before, there’s a better separation of presentation and logic as well as stylesheets to provide unified theme management. To put it bluntly, future UI work won’t be painstaking as the old component-based workflow and should perform better as an added bonus.

World Builder Improvements

Rebuilt World Builder

The World Builder had major rework and optimizations done. I still need to do another styling pass to resize things a little better but there’s generally more safety and sanity checks than before. You shouldn’t be able to set item counts or chance percentages outside valid ranges and there’s better error handling so modders should have a more stable mapping experience in 1.40 overall. There’s new enum support built in too so the State property on vehicles should be updated on old maps or else all existing vehicles default to Unlocked.

General Modding

Expanded Modding

1.40 makes some small gains in modding capabilities, both in scripting and asset modding. Some more code was moved into GameSource for modding like the Consume event which handling everything from healing to reviving players. Each player character can have a custom carry capacity (which can be modified by clothing like backpacks). Also guided projectiles have a FlareEffectiveness property that lets modders set how easily they can be spoofed by countermeasures. There’s also an updated AssetBundleBrowser/Builder in BPResources though this is an optional upgrade for modders.

Physics Fixes

Vehicle Physics

The last version was plagued by physics issues for a long time now. Everything from cars bottoming out to spastic motorcycles should be fixed in this update (fingers crossed). Player fixes such as some rotation weirdness and corrupted ragdolls should also be fixed. There are still some lingering engine bugs that may or may not cause issues, so I’ll be listening to the community for feedback on this.

Hit Registration Overhaul

Hit Registration

Hit registration (i.e. confirming valid hits on the server) has been cursed since the very beginning. The problem was relying on the engine physics system to handle bullets and collisions. But since the physics timestep runs on different intervals to the main game loop, this causes all kind of timing issues and irregularities. The calculations have been rewritten on the main game loop for accuracy and it should be more performant as well without the extra physics components.

Thanks to everyone who stuck around for this long trek out of Early Access 🙂

Here’s the full UI Update changelog:

v1.40 UI Update Changelog

  • UI rewritten using new UIElements system
  • Better asset transfer throttling
  • Added country codes to server list
  • Fixed often broken vehicle physics
  • Original music restored
  • Parse color codes for Text Displays
  • Added range check when updating Text Signs (Thanks unitaz)
  • Allow blank text for Text Signs
  • Fixed small bomb collider and mass
  • Safer implementation of ignoring colliders
  • BPA’s can now cross reference each other and load order doesn’t matter
  • Minimap camera now always remains upright
  • Some AI aim calculation tweaks
  • Hit registration rewritten and optimized to be more accurate
  • Fixed broken Player/Ban Records menus (Thanks TheUnishark)
  • Fixed broken material on Train waypoints with low settings
  • Fixed for occasional laggy player physics
  • Color space set to Linear for accuracy (some mods/lighting may look different)
  • Updated to latest Unity 6 (No more splash screen)
  • Slight changes to ForSale states on Default map
  • General project cleanup for Unity 6
  • Updated networking library with latest fixes
  • Rewritten AssetBundleBrowser/Exporter
  • Delete old directory if importing BPResources into existing project
  • Better custom UI stretching depending on parent mode (Thanks TheUnishark)
  • Player weight limits are now moddable per character
  • FlareEffectiveness is a moddable property of SvThrown entities
  • Replaced language display from flags to language codes
  • Moved all Consume code into GameSource event
  • Fixed Thai language text rendering
  • Steam Workshop and Uploader general fixes and error handling
  • World Builder general rewrite and optimizations
  • Fixed some memory leaks with item snapshots
  • Cache lookups for item previews
  • Player icons randomly colored based on username if left at default
  • Fixed ragdoll recovery animation corruption
  • API Changes:
    • UI ShowText API: Removed some screen anchoring and sizing parameters from old UI system
    • Removed custom Callback delegates, now using System.Action/Func
API Changes

See you!

-Benz

Official Discord