Release 1.6 - Huge Improvements & Audio!


This release contains a massive amount of bug fixes, changes and improvements. I have collected the experience of several game jams I did in the last weeks and this was a great way to improve quality, stability and reliability of gml-raptor. In addition, I included a brand new Audio System in gml-raptor! (See below for details).

Even if this is “just” a 1.6 release, I consider it a major update.

All my libraries now have a dedicated *_VERSION_ script included and they print their version to the console when started, so you can always see, which version is active in your project.

As always, have fun! Cheers, Gris

Here is the massive list of changes First, as an overview, see the topic list from the public roadmap at trello: image

The changes in detail

  • Bugfix: Race Unique Detection

    • In some situations, race detected an item drop as unique (in other words: it didn’t drop anything, although it should) because it thought, the item to drop has already dropped in this query.
  • RaceObject now poolable

    • The RaceObject (which is also a StatefulObject) can now be dropped and returned to an object pool. race_query has been enhanced to allow a third, optional, parameter, the pool_name. If set, items will be requested from that object pool instead of being new instances with every query.
  • Double Clicks!

    • All UI clickable controls now detect double-clicks and offer an on_double_click event callback. NOTE: As it’s normal windows standard, that double clicks are done with the left mouse button only, this event also is triggered only from left-double-clicks!
  • InputBox

    • now offers a select_all method to select the entire text
    • Three new callbacks have been implemented: on_got_focus, on_lost_focus and on_text_changed
    • InputBox now detects double clicks and will select the word under the cursor
  • Files

    • The files functions are now better protected against missing files, enryption/decryption errors (like, when trying to decrypt a plain text file).
  • RoomController Particle Systems

    • RoomController now supports multiple particle systems per room, if you need emitters on different layers.

    To make this possible, the particle_layer_name variable definition is no longer of type String, it’s now an Expression, and the variable has been set into plural as particle_layer_names. You may supply a string array here, like ["particles_background", "particles_foreground"] to have the PARTSYS macro no longer resolve to a single ParticleManager instance, instead it’s an array then and the indices are in order of the strings in the supplied array. For the above example, this means, PARTSYS[0] would render on the particles_background layer and PARTSYS[1] on the particles_foreground layer.

  • New ArrayHelper Function

    • The Arrays script got a new helper method: array_contains which is able to search for a specified element in an array with any number of dimensions or recursions. It scans the entire structure. You can avoid recursion by supplying false for the optional recursive parameter.
  • Settings File & Encryption

    • The Game_Configuration script now offers two macros in two versions (one for default, one for release configuration) which allow you to set the output filename and the encryption key for the games’ setting file. These macros are used by the new load_settings and save_settings functions. A new script has been added to the _GAME_SETUP_ folder: Game_Settings it contains a struct that will be put into your settings file, together with the brand new AudioSettings struct and the Highscore Table (if defined). Just add the values you want to store in the settings file to this struct. raptor takes care of the rest.

AudioHelper & AudioSettings

The new AudioHelper feature provides rich functionality for your acoustic implementation. It supports play and stop functions for predefined channels. Currently, raptor offers five channels:

  • Sound
  • Music
  • Voice
  • Ambience
  • UI

The new AudioSettings struct holds volume settings for each of those channels and will automatically be a part of the game_settings file. You can change the output volume of each of those channels independently and in addition, there’s a master_volume value which acts as an additional multiplier for the final output gain.

On top of that, the AudioSettings also offers boolean values, to enable/disable a channel completely.

  • music_enabled
  • sound_enabled
  • ui_enabled
  • voice_enabled
  • ambience_enabled

Files

gml-raptor-demo.zip Play in browser
Sep 06, 2022

Leave a comment

Log in with itch.io to leave a comment.