1. BlastZone 2
  2. News

BlastZone 2 News

Native XInput support and UDP multiplayer data syncing improvements (v1.32.1.0)

A new update has been released for BlastZone 2! (v1.32.1.0) The big feature of this update is adding native XInput support for gamepads. This expands gamepad compatibility and adds several new features, including hotplugging support, more descriptive button binds, and binding to triggers. Previously, XInput gamepads were supported through a DirectInput compatibility layer, but some gamepads could not work this way. Most users should use the new “XInput” option in the game options menu, it will automatically use the specified gamepad number without having to set it up manually. The old “Gamepad X” options are still available for legacy DirectInput-only gamepads if needed, but won’t be available if only XInput gamepads are connected.

Another big part of this update improves data syncing for UDP multiplayer, both for DirectIP and over Steamworks. If the connection between players becomes poor, or there is a short connection interruption, the client can now detect this and request a full data resync from the server. This fixes occasional corrupted or missing objects on screen for the client and provides a more stable experience. Countermeasures for connection quality issues were already in place in previous versions, but this provides an additional “last resort” recovery if other methods fail. UDP and Steamworks are the recommended ways to play online multiplayer, but the TCP option is still available if needed.

There are also a few bug fixes and improved particle time scaling. Here are the full release notes for v1.32.1.0:
  • Added native XInput gamepad support
    -Previously, XInput gamepads were supported through a compatibility layer with DirectInput
    --This worked for most gamepads, but some had compatibility issues with this
    --Many XInput-only gamepads that were previously incompatible will now work correctly
    -DirectInput is still supported, but its only used for gamepads that do not support XInput
    --To use DirectInput, select an explicit controller number in the config screen, the same as previous versions
    -XInput gamepads are now the default option
    --For most users upgrading from a previous version, it will seamlessly migrate gamepad selection to XInput without any changes needed
    --Only users who have a DirectInput-only gamepad connected in addition to an XInput gamepad will need to explicitly change the option
    -XInput gamepads are bound to the player specified on the gamepad number display and can't be changed
    -Allows for binding actions to the gamepad triggers
    -Enables more descriptive button binding displays
    --DirectInput only uses button numbers
    --Now, button A, B, X, Y, right bumper, right stick, right trigger, etc. can be specified
    -Allows hot swapping gamepads while the game is running
    --DirectInput required restarting the game for new gamepads to work correctly
    --Fixes bugs when disconnecting a gamepad while the game is running
  • Updated the external configuration program to support the new XInput options and explicit gamepad bindings
  • Full data syncs are now used for very poor connections in UDP or Steamworks online multiplayer
    -The client machine can now request a full data sync from the server when needed
    --The client automatically detects when the existing packet loss countermeasures are not enough on a moment to moment basis
    ---If there is a temporary connection interruption, the client also detects when the connection returns to normal
    --This is only used as a last resort and is almost never needed for good quality connections
    -This greatly reduces the chance of corrupted data on the client side when there is very high packet loss
    --It is still possible to have client data corruption with UDP, but only occurs for extremely poor connections that would be unplayable anyway
    -This reduces the need for a TCP connection, but the option will remain just in case
    --TCP eliminates all data syncing issues, but runs slower
  • Added adaptive time scaling support to the particle system
    -This corrects particle movement slowdown when the particle system is heavily loaded (100k+ particles on slower CPUs)
    --Particles now always move at their normal speed, but can scale to a lower frame rate independent of the rest of the game in extreme load situations
    -This also fixes the particle "pile up" effect that would compound drops in performance when the particle system is heavily loaded
    --This allows particles to evaporate at their normal rate, so the on screen particle count doesn't get artificially inflated during a slowdown
  • Fixed overlapped "Player X" text in the ship selection screen when playing local multiplayer with a mouse as the Player 2 control device
  • Fixed incorrect Player 2 respawn animation during online multiplayer

As usual, to make sure you have the latest update, launch the game and check the lower left corner for “v1.32.1.0” or higher. Enjoy!

Huge technical improvements! (v1.32.0.0)


A big new update has been released for BlastZone 2, (v1.32.0.0) focusing on several big technical improvements to the underlying game engine. Among these is adding UDP Direct IP multiplayer support to the game. This has much better latency, responsiveness, and smoothness than the existing TCP Direct IP option. Steamworks multiplayer already uses UDP, so it is still the best way to play online. However, UDP Direct IP helps when using offline mode, if Steam isn’t available, or when on a LAN. The TCP option is still available as a last resort when using a poor internet connection that may produce bugs with UDP, but this should be very rare. Updated descriptions of each online option has been added so it is clear which is the best option for a given situation.

The second big part of this update is huge improvements to the particle system. Previously, only a portion of particle effects were part of the highly optimized particle system. Now, it has been generalized to incorporate virtually every particle effect in the game. This cuts the draw calls per frame from an average of 500-600, to around 150-170, reducing CPU usage and graphics driver overhead. Also, much more of the particle processing pipeline now scales up to many cpu threads, greatly benefiting quad cores and above. In synthetic stress tests (with over 500k particles), the particle system can now handle up to 4-5x as many particles on screen at the same performance levels for most system configurations. Regular gameplay scenarios will see a maximum of a 100% performance gain in specific situations on older machines with slower CPUs and GPUs and allow for higher particle detail settings. Newer and faster machines will see much less of a performance improvement in game, but will see a reduction in frame hitching. A few new particle effects have been added as well, including firing effects for normal bolts, flurry shots, and wave shots.

A third big part of this update is a brand new model loader. It uses a new proprietary model format that uses half the disk space and loads up 5x faster than previous versions with no effect on quality. Loading the Extreme quality terrain models at startup is reduced from 30 seconds down to about 5-6 seconds on many systems. This reduces ram usage by about 6-7% as well.

This update also adds a few new renderer frame stats. This includes triangle count, draw call count, and particle counts. This helps illustrate how scalable the rendering options are, ranging from about 50,000 triangles at low details, to over 10,000,000 triangles at extreme details. This also shows how hard the particle system is being pushed at any given time. This info is mainly used for development and optimization, but it may be interesting for those who are curious. To access this, press the F1 key 3 times at any time in the game.

This update includes a number of bug fixes and other improvements as well. Here are the full release notes for v1.32.0.0:
  • Added UDP Direct IP multiplayer support
    -This improves online multiplayer responsiveness and smoothness from the existing TCP Direct IP code path
    --Internal testing has shown that devices connected via wifi or a 3G/4G connection gain the greatest benefit from UDP
    -However, this has the drawback of potentially introducing bugs for poor connections
    --Many poor connection countermeasures are in place to mitigate this, but it's not perfect
    -UDP should be used for most users, only use TCP to fix issues for very poor connections
    -Steamworks multiplayer already uses UDP
    --Those who use Steamworks multiplayer will be unaffected by this
    -This new UDP multiplayer option adds more flexibility for those who want to play over a LAN, or cannot connect to Steam
    -To use this, select "Online (UDP)" from the multiplayer menu
    -Renamed "Online (IP)", to "Online (TCP)" to eliminate ambiguity
    -UDP uses the same 50768 port as TCP Direct IP
  • Huge particle system improvements and optimizations
    -Greatly reduces the number of total draw calls during gameplay
    --Cuts the average draw call count from 500-600 down to 150-175
    --Reduces CPU load and rendering overhead to render particles
    -Reduces frame hitching when many player bullets are on screen
    --This mostly affected systems that are just barely able to maintain 60fps
    -Brings many more particle effects into the main, highly optimized, particle system
    --Player bullet trails
    --Player charging animations
    --Player damage animations
    --Player final death explosion
    --Background speed particles
    --Explosion flares
    -General particle management optimizations
    --Improves overall performance and reduces particle thread processing time
    -Added CPU thread scaling above 2 threads for background particles
    --Foreground particles already scaled above 2 threads in previous versions
    --Background particles are not used in the main game, only in a test level pack
    -A greater portion of the particle update pipeline now scales up to 16 cpu threads if available
    --In previous versions, only rendering-related particle operations scaled above 2 threads
    --Now, particle update simulations also scale up to 16 threads, significantly improving performance on high core/thread count cpus
    -Greatly improved thread parallelism
    --Improves game responsiveness and frame rate when the particle system is heavily loaded
    --Particle animations can slow down independent of frame rate if the particle system is heavily loaded with a slow CPU
    ---The above optimizations make any kind of particle-related slow downs more rare anyway
  • Added new particle effects when firing the following weapons:
    -Normal bolt
    -Flurry shot
    -Wave shot
  • Added a completely new model loader
    -Uses a new proprietary binary model format
    -Uses about half the disk space for identical model data
    -Loads model data at startup much faster
    --Game startup now takes 20% of the time compared to previous versions
    -Converted all models in the game to the new ".bin" format
    -Moved all models that used to be compiled into the game executable to separate ".bin" files
  • Reduced the executable file size by 75% without any effect on game functionality
  • Reduced RAM usage by about 3-7% depending on detail levels
  • Updated the player ship booster charging animation during the wave intermission screen
  • Added an additional startup loading thread to reduce loading time
    -The startup loader now scales up to 9 CPU threads if available
    -Loading times are also reduced for lower core count cpus by more consistently loading all available cores
  • Added more frame stat displays
    -Includes the following new stats:
    --Triangle count
    --Draw Call count
    --Foreground particle count
    --Background particle count
    -Press F1 3 times to access this info
    -Shows scene complexity and allow for better comparing each detail level
  • Moved the frame stats display further to the right to improve game visibility
  • Updated the test background particle effect of test_pack_1 to use more particles
  • Updated the online multiplayer menu item descriptions to better describe which option to choose
  • Reduced renderer blocking time after failing to connect to a TCP server
  • Improved game process shutdown time after previously playing a TCP multiplayer game
  • Fixed background enemy animations not being cleared when quitting out of a level
  • Fixed occasional particle-related graphic glitches
  • Fixed incorrect alpha channel of background particles
  • Fixed a crash bug when starting a custom game with test_pack_1, then quitting out and starting a new game
  • Fixed a bug for an online multiplayer client that would use incorrect game settings when the server selects "Training" difficulty
  • Fixed a rare crash in the particle system related to multithreading and particle emitters
  • Fixed a broken TCP server state after creating and shutting down a server when no client was connected
  • Fixed enemies occasionally being stuck in a glowing state when hit
  • Fixed occasionally incorrect background particle Z sorting

As usual, to make sure you have the latest update, launch the game and check the lower left corner of the title screen for “v1.32.0.0” or above. Enjoy!


**UPDATE**
A hotfix was released shortly after the initial patch went live with the following changes:
  • Fixed client ship flickering on the server side during cutscenes and flyin animations in online multiplayer
  • Fixed background flickering on the client side during online multiplayer
  • Fixed an occasional crash when opening the Steam friends list when some friends have special characters in their name
  • Fixed an occasional game freeze when entering Area 5 of Mission mode
  • Changed the rendering order of terrain blocks to improve fragment occlusion culling
    -Will have a

Improved gamepad analog controls (v1.31.3.1)

A new update has been released for BlastZone 2! (v1.31.3.1) This one focuses on a few gamepad improvements. Analog stick controls have been improved, allowing for continuous 360 degree movement angling. This improves movement precision and eliminates the old “snapping” directions. Previously, the analog stick would prioritize moving up, down, left, and right with only a small area of analog angling at each of the diagonals. Also, the dead-zone at the middle of the analog movement area has been shrunk, allowing for finer movements at a small scale and a greater degree of speed range in each direction.

This update also improves gamepad deinitialization when closing the game. This has the potential of fixing edge case bugs for some gamepads on some systems.

Here are the full release notes for v1.31.3.1:
  • Improved analog movement with a gamepad thumbstick
    -It is now easier to move slightly up/down while moving left/right and vice-versa while angling the thumbstick direction
    --Now uses continuous 360 degree angling instead of "snapping" to up, down, left, and right, with smaller analog angling zones between them
    -Reduced the thumbstick dead-zone from 20% to 10% to allow for more precise movement
  • Improved gamepad deinitialization on shutdown
  • Reduced the number of averaged frame times from 10 to 8
    -Helps reduce game speed reaction time when the rendering workload quickly changes
    -Maintains enough averaged frames to smooth out frame hitches well

As usual, to make sure you have the latest update, launch the game and check the lower left corner of the title screen for “v1.31.3.1” or above. Enjoy!

Massive performance gains and greater view distances! (v1.31.3.0)

A new update has been released for BlastZone 2! (v1.31.3.0) This update makes huge performance gains, one of the biggest improvements seen in a single update. Gains range from 15-25% when using lower terrain detail levels, up to 50-60% for Extreme detail settings. This significantly lowers the hardware requirements; If anyone had performance issues with the “VeryHigh” or “Extreme” terrain settings in previous versions, I strongly suggest trying them out again with this new release. This improvement was done by adding lower detail terrain block LODs for areas far in the distance. This has a minor reduction in image quality, but won’t be noticeable in most situations.

This huge boost in performance was also used to increase the view distance for all ViewDistance detail levels. This increases detail for the VeryHigh setting by about 20%, while still having big performance gains over previous versions.

The drawback of this update is more memory usage and a greater workload during the startup loading screen. System ram usage will increase by up to 25mb and vram by 75mb, but any machine that could already run the game should have no issue with this. Also, the startup loader has been improved to scale up to more cpu cores/threads to take on the increased workload, making the increase in loading time negligible in most situations.

There are a few bug fixes as well. For more details, here are the full release notes for v1.31.3.0:
  • Added support for terrain model LODs to greatly improve performance
    -Uses lower detail models for terrain far in the distance
    --Has a small reduction in image quality, but in most cases it is barely noticable
    -Improves performance by up to 50-60% over previous versions
    --Lower terrain detail levels have about a 15-25% boost
    --Higher detail levels have the greatest boost
  • The startup loader now scales up to 9 cpu threads if available
    -These additional threads load terrain LODs in parallel
    -This does not reduce the overall loading time, only loads more data in the same amount of time
    -CPUs with 9 threads or more will see no increase in loading time
    -CPUs with 6-8 threads will only take slightly longer to load, and will have a higher and more consistent workload across all available threads
    -CPUs with 4 threads or less will take longer to load now
    --Previous versions already saturated all 4 threads, and there is a larger amount of data to load now
    --Loading times should only increase by a few seconds at most
    -For reference, previous versions scaled up to 6 cores/threads
  • Increased the view distance for all ViewDistance settings
    -Increased the "VeryHigh" setting by 20%
    --This slightly reduces performance, but overall performance is still much higher from previous versions from the LOD optimizations
    -Each of the other settings are equivalent to one setting higher from the previous version
    --"High" is equivalent to the "VeryHigh" setting from previous versions
    --"Normal" is equivalent to the "High" setting from previous versions
    --"Low" is equivalent to the "Normal" setting from previous versions
  • Fixed the Outer Space background not rendering correctly when using the "Low" ViewDistance setting
  • Fixed some screen elements and objects not rendering correctly for low/normal view distance settings on some hardware/driver combinations
    -Transition screen wipes and fades
    -Final player death red screen fade
    -Ship select stat bars
    -Distant background color for the cave environment

As usual, to make sure you have the latest update, launch the game and check the lower left corner of the title screen for “v1.31.3.0” or above. Enjoy!

Terrain Rendering and Culling Optimizations (v1.31.2.0)

A new update has been released for BlastZone 2! (v1.31.2.0) This update makes several improvements to the object culling system. This includes high precision culling, multithreading optimizations, and early cull detection. These improve performance the most for background terrain, ranging up to a 15-20% boost, depending on system specs and detail settings.

This update also fixes compatibility issues with older GPU hardware and drivers that are limited to OpenGL 3.1 or 3.2. These cases now fallback to the OpenGL 3.0 renderer. Other bug fixes include occasional incorrect sizing and fog for enemies.

A small hotfix update was recently released as well. This fixed a bug that would occasionally get the player ship stuck in a highlighted state during wave intermission and wave intro sequences.

For more details, here are the full release notes for v1.31.2.0:
  • Made several improvements to object frustum culling
    -Offloaded frustum culling calculations to the update thread is many cases
    --Reduces the rendering thread workload, improving overall performance
    -Added support for early object culling in many cases
    --Eliminates most setup calculations for objects that are culled out
    -Added a new high precision codepath
    --More aggressively culls out objects near the edge of the screen without affecting visible objects
    --Is more computationally intensive, but is usually combined with offloading from the render thread to accelerate the process
    --This is handled automatically without any user configuration
  • Big terrain rendering optimization
    -Uses the new high precision frustum culling code path to eliminate more offscreen terrain
    -Also makes use of the offloaded frustum culling calculations and early object culling detailed above
    -Improves performance by up to 15-20% depending on system specs and terrain detail settings
  • Offloaded all terrain matrix operations from the render thread to the update thread
    -Better balances the workload between threads, improving CPU performance
  • Increased the minimum requirement of the OpenGL 4.6 renderer to OpenGL 3.3
    -This fixes issues with some OpenGL 3.1 and 3.2 drivers
    -These drivers will now fallback to the OpenGL 3.0 renderer
  • Player and Enemy bullet trails now smoothly move offscreen
    -Previous versions would remove the bullet trail too soon after the front of the bullet moves offscreen
  • Increased the thread priority for a few startup loading threads and the particle thread manager
    -Improves startup loading time by sacrificing loading bar animation smoothness
    -Distributes particle thread work more quickly for CPUs with more than 2 cores
  • Fixed the player occasionally picking up item drops after death
  • Fixed incorrect enemy sizing in some situations
  • Fixed fog not being applied to distant enemies

As usual, to make sure you have the latest update, launch the game and check the lower left corner of the title screen for “v1.31.2.0” or above. Enjoy!