What’s New

Schedule I — v0.4.6: Gamepad Support + Optimization

v0.4.6: Gamepad Support + Optimization

Added 14
  • Added controller and gamepad support with full menu and input interaction rebuilds
  • Added Xbox controller input prompts
  • Added PlayStation DualSense input prompts
  • Added gamepad-related settings
  • Added virtual cursor for gamepad with friction and lure systems
  • Added platform-integrated fullscreen fade to prevent unintentional input when Steam overlay is opened
Changed 6
  • Game can now be paused in any state instead of requiring menus to be closed first
  • Display settings now apply automatically instead of requiring apply button
  • Police patrols, sentries, and checkpoints now assign 1-2 officers instead of 2
  • Increased max UI scaling to 1.5
  • FOV now has a lower limit of 20
  • Management clipboard object selector mode now multi-selects by default without holding shift
Fixed 1
  • Performance improved by 20-30% through new LODs, shader optimizations, lighting and shadow tweaks, and frame spike reduction

Hey everyone,

Special Customer Update

We planned to release gamepad support at the end of June, and release special customers in mid-late July. Gamepad support took a lot longer than expected, but we've been working on the special customers update in parallel, so it's not far off now. It's shaping up really nicely, and I think it'll be well worth the wait! Here's a sneak-peek of one of the customer groups:

We're very excited (and relieved) to be launching gamepad support - this has been underway since last year, and has been shockingly more involved than initially thought. Every menu and input interaction in the game had to be rebuilt or significantly altered. We didn't want to do a quick and dirty implementation, so we've created a number of new systems to get the game 'feeling good' with a controller:

  • New UI framework: screens, panels, tabs, buttons, etc.

  • New input prompt system.

  • Haptics system.

  • Gamepad pointer with simulated friction and magnetism.

  • Pointer 'snapping' (for click-heavy tasks such as harvesting).

We've tested and validated the following controllers:

  • Xbox Controller.

  • PS5 DualSense Controller.

  • Steam Controller (incl. Steam Deck).

Any generic controller adhering to the Windows XInput API should also work well.

Lots of optimizations

We've created many new LODs and refined existing ones, optimized several shaders, tweaked lighting and shadows, rewrote some code to minimize frame spikes, and made lots of other small improvements. In our testing, these changes have resulted in a 20-30% performance boost, as well as noticeably less visual pop-in.

Additions

  • Added controller/gamepad support.

  • Added Xbox controller input prompts.

  • Added PlayStation DualSense input prompts.

  • Added gamepad-related settings.

  • Added new internal 'state system', integrated with all menus, interactions, etc.

  • Added platform-integrated fullscreen fade. (prevents unintentional input when the Steam overlay is opened).

  • Added virtual cursor for gamepad.

  • Added virtual cursor 'friction' system to make it easier to grab stuff.

  • Added virtual cursor 'lure' system to make click-heavy tasks less tedious on gamepad.

  • Added new client-side code to interface with the new in-game feedback system backend.

  • Added fancy new tree 'billboard' shader that closely matches the tree mesh.

  • Added 'quit' command.

  • Implemented new light source culling solution.

  • Added new shadow optimization tool that reduces/culls shadows at a certain distance.

  • Your organisation name is now displayed in the pause menu.

  • Combined and optimized several buildings.

  • Property contents culling is now staggered over several frames to minimize stuttering when approaching/leaving a property.

  • Tweaked the LOD distances of several buildings, props, etc, to reduce pop-in.

  • Created new, higher quality LODs for several buildings and props.

  • Property light sources now culled when distant.

  • Added new player 'visibility points' at the neck and hips to prevent cheesing NPC vision.

  • Added 'stop arrow' button to the pickpocket interaction.

  • Added some more grime to the police station.

  • Added an option to automatically pause the game when focus is lost.

  • Added 'restore defaults' button for input bindings.

  • Added new stack splitting tutorial.

Tweaks/Improvements

  • The game can now be paused in any state (in vehicle, phone open, active dialogue, etc) instead of requiring everything to be 'closed' before pausing.

  • Rewrote the tree shader to be way more efficient.

  • Police patrols, sentries, checkpoints now assign 1-2 officers instead of 2 all the time.

  • NPC data (name, appearance, voice, etc) is now all centralized to a single data container instead of spread across lots of separate components.

  • Tweaked shop UI.

  • Cleaned up, modularised the UI for all stations.

  • Rebuilt the input prompt system to support gamepad buttons.

  • Improved the audio blending algorithm for going inside/outside when its raining.

  • 'Inventory empty' displayed when trying to pickpocket an NPC with nothing in their inventory.

  • Improved movement animations when moving slowly or diagonally.

  • Display settings now apply automatically instead of needing to press 'apply',

  • Made some visual tweaks to the phone home screen.

  • Optimized interaction physics checks.

  • Tweaked UI alignment in the deal screen.

  • Tweaked counteroffer UI.

  • Optimized lots of shadow-casting lights.

  • Turned off baked occlusion culling (its calculations were actually more expensive than just rendering everything).

  • Adjusted the compression format of lots of audio files to minimize CPU spikes due to decompression at runtime.

  • Separated out lobby logic from interface.

  • Rewrote the platform integration code (achievements, lobbies, invites, etc) to be platform-agnostic.

  • Increased max UI scaling to 1.5.

  • Turned off shadow casting for lots of tiny meshes.

  • Cleaned up weather code, moved several weather components to the core DLL.

  • Removed legacy sky system.

  • FOV now has a lower limit of 20.

  • Converted NPC deal behaviour from schedule event -> behaviour.

  • Increased how much trees/bushes obscure NPC vision.

  • Pressing 'I'm stuck' will now teleport your vehicle back to safety if you are driving.

  • Rebuilt the barbershop and tattoo parlour UI.

  • Rebuilt the 'new mix discovered' interface.

  • Stripped lots of shader variants to minimize memory use.

  • Reduced the resolution of several unnecessarily massive textures.

  • Optimized some UI layout calculations.

  • Rebuilt the vehicle repaint interface.

  • Optimized compass UI rendering.

  • The management clipboard object selector mode now multi-selects by default - no need to hold 'shift' anymore.

  • Rewrote a bunch of miscellaneous code to minimize GC allocation.

  • Police vehicles now pooled instead of spawned/destroyed.

  • Scripts using repeating checks now stagger their logic instead of running everything in a single frame.

  • Implemented Linux-compatible region check (for choosing default metric/imperial).

  • Optimized several distance checks to use square distance.

  • Tweaked texture streaming settings to minimize excessively low-res textures for certain buildings.

Bug fixes

  • Fixed quests involving payphones soft-locking if the call is exited before completion.

  • Fixed suppliers not looking at the player.

  • Fixed suppliers not returning to their meeting location after being interrupted.

  • Fixed police sometimes not 'sharing' their player line-of-sight with other officers.

  • Fixed bushes not obscuring players properly.

  • Fixed cartel influence popup overlapping with compass warning labels.

  • Fixed quest UI too close to top of screen on high interface scales.

  • Fixed jerky vehicle movement when in 'kinematic mode' (optimization used for distant vehicles).

  • Fixed baggies getting caught on the packaging station hopper lid.

  • Changed some Windows-specific file path code to work for other OSes.

  • Fixed z-fighting when building objects.

  • Fixed weird lighting on environmental graffiti and grime.

  • Fixed weird shadow pop-in for trees at sunset/sunrise.

  • Fixed volumetric light beam flickering.

  • Fixed environmental text causing stuttering when enabled/disabled.

  • Fixed lens flare excessive CPU usage.

  • Fixed CPU/memory spike due to audio sources subscribing to an event on enable/disable.

Thanks for reading!

Tyler

View original

Discussion