1. BlastZone 2
  2. News
  3. Huge technical improvements! (v1.32.0.0)

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