Releases: Grisgram/gml-raptor
Release 2410
Top Feature: Async File Access and Async Unit Tests
- raptor now will perform all file operations async.
- All existing
file_*
function are unchanged and still backwards-compatible. - A new wiki page tells you all you need to know about file access with raptor.
LG
multi-file support. The functionLG_add_file_async
allows you to split your locales into multiple files and load them piece by piece during game start or dynamically any time. You can create small files for your dialogs, or one file per room, or keep it all in one huge file, it's up to you!- The
Skins & Themes
had a big overhaul and now really work CSS-like, with inheritance and all. - The skin/themes changes also required many changes in the UI System. Good news is, the interface has not changed, it's all backwards compatible.
Affected subsystems
- Savegame System
- LG
- Race
- Skins & Themes
- UI
Bug Fixes
- The
LayerManager
used a GameMaker internal function in a wrong way and sometimes could not deactivate objects when a layer was hidden. This is now fixed. array_pick_random
had a wrong duplicate-detection- The
ControlTree
sometimes tried to update a no-longer-existing control hierarchy (mostly on RoomEnd). This is now fixed. MessageBox
did not resolve local variables correctly when aLG
string was supplied
New Features
async_loops
can now be performed through theGAMESTARTER
instance, optionally showing a loading screen while they are activeunit testing
has received a big feature addition: Tests now run in a dedicated test room and show you the results with a GUI. You no longer need to analyze the log (but you still may, if you want! Log output has not changed)LG_hotswap
now uses the newasync_loop
feature in raptor to reload all file parts when switching languagesvsget
andvsgetx
now can also handle the entire struct being undefined and will return the _default_if_missing- new functions
string_format_number_left
andstring_format_number_right
allows left/right aligned string formatting with leading zeros or blanks - the
implement
method now allows you to supply constructor arguments when implementing other structs
Library Updates
Canvas
updated to 2.2.0SNAP
has been updated to version 7.0.1scribble
(deluxe) has been updated to version 9.3.1- Due to the new features in scribble 9.3.1, all UI-Controls now offer three new variables:
outline_color
,shadow_color
andshadow_alpha
to support this cool new feature of scribble to allow us to change the outline and shadow at runtime and we no longer need to bake an exclusive font for each variance.
Release 2406
Bugfixes
- The
Panel
control now respectsmin_width
andmin_height
when auto-sizing - Fixed a bug, which could cause a missing-text warning to appear on screen when using
.add_sprite
on aControlTree
- Fixed false positive inheritance detection of
is_child_of
- Sprites added to a
ControlTree
through.add_sprite()
no longer have an undesired highlighting effect when the mouse touches them invoke_if_exists
now detects correctly when you supply a method as second argument, and not a string- StateMachine's
bc:
sprite broadcasts now send the correct event if you used a comma-separated list for multiple broadcasts in a single frame - Ctrl-A/X/C/V now work correctly in the
InputBox
in the HTML target
Room Templates Update
Important
Due to some changes in the base objects of raptor, all room templates have been updated and regenerated.
Make sure, you update your local templates to the ones attached with this release!
New features
-
Panel
now offers a new variable definitionmaximize_on_create
which will make the panel use the available screen space (VIEW or GUI, depending on thedraw_on_gui
setting). This is helpful, when you want to create a "full screen" panel to align your UI hidden on a different panel (to show it later withshow_popup(...)
than the UI_ROOT (which is always visible) -
_baseControl
offers a new functionis_window_hidden()
which allows you to determine, whether the root parent (window or panel) is currently hidden or behind any popup element. -
ControlTree
now allows direct access to its children, if you give them a name using.set_name(...)
. You can access the children throughtree.controls.your_name
. This also works for theUI_ROOT
element and all control trees in Window and Panel controls. -
I finally put
// Feather ignore
statements to raptor's folders so you no longer get annoyed by the false positives of this (awful) syntax checking system in GameMaker, if you have Feather active -
ObjectPool
now allows you to send a struct argument to theonPoolActivated
andonPoolDeactivated
callbacks to your instance. -
A new convenience function
layer_set_background_sprite
allows you to change a background layer without doinglayer_background_get_id(layer_get_id(...))
ugly code. Just by its name.
I'd like to mention at this point, there's alsolayer_set_background_color
available. This function is not new, but maybe some don't know, that it exists. -
Improved
async
support through theGAMESTARTER
object. Read all about it here
Release 2405
Release 2405 of raptor is one of the biggest in history of this library!
There were tons of fixes and improvements, some new UI controls, like the ListBox, but this version has some real highlights in its package:
Highlights
- RACE (The Random Content engine) has gone through a complete rewrite and is now more powerful than ever before
- Read all about it in the wiki, which has been updated on many places to reflect all the changes
- File encryption for your release builds! A new tool, the raptor-json-compiler will be delivered with this release and it is embedded in the build job of GameMaker
- When you do a release- or beta-compile, the json-compiler will encrypt all your json files to make it harder for “bad guys and girls”, to modify your files
- Automatic build numbers! Yes, the build batch also takes care of counting up your build number, so you get real build information in your version number
- Crash dumps. When your game crashes, a snapshot of the log is written to disk (encrypted). You can pick this file up and ask your players to send a report
Bugfixes
- A bug, which caused too many property bindings to get removed when objects get destroyed, has been fixed
- Several bugfixes for the Slider control, including a good performance boost on rendering
New Features
- A brandnew ListBox control has been added, which supports dropdown and listview styles
- The UI Themes have been enhanced with new color constants, which are spefically for UI design (control, control_text, control_dark, control_border, ...). Themes now support pretty much the standard ui theme colors you probably know from Windows development
- To reflect and use the new theme options, all the default UI sprites have received new optics
- release compiles are now supported in raptor and
gml_release_mode
will be set for you when you set thebeta
orrelease
configuration as active configuration
Changes to existing functionality
- All the theme constants have been renamed, from
APP_THEME_*
toTHEME_*
Of course, the json-compiler is also open source and part of the raptor repository. You can find it in the new “tools” folder of the repository
As always: Have fun! Make Games!
Yours, Gris
2404
April 24 - Update
- I re-uploaded the release as we found a bug in GameMaker that had destroyed some sprite's
.yy
files. - No other changes, just make sure you update your project template again, if you downloaded it before April 24.
Release 2404
- A fast-growing memory leak related to the UI controls has been fixed
- Strong performance improvements on recursive UI designs
- Several UI-related bug-fixes with control alignment and min-sizes, which have been partially ignored
- A new class
ExpensiveCache
has been added, which can store/cache outcomes of expensive (in terms of cpu-load) functions for a set amount of frames - Watch for Window Resize is now disabled by default. For tool apps, enable it through the
Game_Configuration
script. - A rare savegame bug has been fixed, where some real/int values have been misinterpreted as being references
As always,
Have fun! Make Games!
Gris
2403.5 Savegames and Audio
Patch 2403.5.3
Important
This patch contains all files from the previous patches. You only need to import this one!
The project template and the raptor-full yymps have been updated to this patch level.
Savegame
now supports room transitions when loading a game and changing roomLittleHelpers
contains a new function for working with tagged assets- Bug fixes in various components
This is the final patch for 2403.5
The next update will be a full release, likely 2404.
Patch 2403.5.2
- A memory leak in animation-data-binding has been fixed
- Bindings now have a toString() implementation for debug output
- A wrong setting in LoggerConfiguration has been corrected. That one slipped through in patch 2403.5.1
ROOMCONTROLLER
camera flights received a bug fix and can now combine zoom+move in two independent animation curves
Important
The gml-raptor-full
package and the project template
in this release have been updated to patch level 2403.5.2
Patch 2403.5.1
From now on, I will patch the latest release instead of launching new releases.
I will try to stick to a two-monthly release cycle, and all patches in-between will be added to the latest release.
Today we start with patch 2403.5.1 (see Assets below to download).
The patch is safe to install via "Add All" in GameMaker, as it contains fixes for raptor-internal objects only. No modifications in user objects.
Patch contents
LoggerConfiguration
has a new flag to turn DataBinding log output silent- The
RoomController
base object received a fix in the event processing order between Animation, StateMachine and DataBinding - The
Animation
class received a fix for animation chains that contain a final state in a followed_by continuous animation StatefulObject
now also delivers global mouse events as states. **NOTE: As global events are not tied to any coordinates, the flagsprotect_ui_events
andmouse_events_are_unique
on the StatefulObject have no effect for them. They are delivered always, unless the object is disabled (is_enabled is set to false)!- DataBinding received some improvements on change detection
- The
.add_receiver
method of theBROADCASTER
is now chainable - A new group of macros
ROOM_*
are available to have a comfortable way to retrieve room edges and center coordinates. - The raptor-version ob the
OutlineObject
and its child,OutlineObjectBaked
received some fixes for the shader when drawn in the GUII layer
As always,
Have fun! Make Games!
Gris
Audio System rework
The Audio System (wiki link) has been reworked big!
New features include:
- Audio overlays for each channel
- Fading and overlapping
- Room Audio
- A new configuration script for the Audio module
Savegames
This module has received lots of love in the past week.
It is now able, to save any struct, even with circular references (like child-parent-pointers) and all databinding settings in your savegames!
In addition to that, the save game file size has been decreased a lot by avoiding double-writing of the same struct, if it is linked in multiple places. Each reference is now saved only one single time, even if it had no constructor.
How to update
You should update this version in your current project, if you already use raptor3
.
Just download the gml-raptor-full-2403.5
package and import the modules shown here into your project (the other folders had no change and need no import -- so all your custom settings and UI are save!)
As always,
Have fun! Make Games!
Yours, Gris
2403.4 Parallax Scrolling & Data Binding
Featured object: The Eye
The Eye
has been with raptor since day 1, but with this release, it receives its own stage:
- It now has excellent support for parallax scrolling in your game, with any number of moving layers
- It is now fully documented in the wiki
DataBinding / PropertyBinding refined
This very young feature in raptor has gone through intense testing with thousands of active bindings and there have been some possible memory leaks and "dead" bindings around. All known issues are now fixed and the performance is great!
Read all about property binding in the wiki
As always,
Have fun! Make Games!
Yours, Gris
2403.3 Borderless Fullscreen
Borderless Fullscreen now supported
Hey there,
I thought, I push the change with the implementation of the new borderless window mode (windows only) right now, instead of waiting for next regular release.
- Demo Project is updated
- New constants in the
Game_Configuration
script allow you define your borderless window mode - These are stored automatically in the
Game_Settings
to make it easy for you to allow the user switching between borderless fullscreen and exclusive full screen through any settings screen you might develop in your game - Access the runtime values through
GAMESETTINGS.start_fullscreen
GAMESETTINGS.borderless_fullscreen
- Both are
bool
values. Ifstart_fullscreen
is true, thenborderless_fullscreen
decides, whether to activate the borderless or the exculsive fullscreen mode
Have Fun! Make Games!
Gris
2403.2 Hotfix for Savegames
Thank you all for your very kind feedback!
- Save games now work flawlessly with the new control trees
- Windows are perfectly restored, including all anchoring/docking/spreading/alignment information!
- To support this: A new method
.build()
has been added to thecontrol_tree
to complete the builder-pattern. With that function, the control tree has all information it needs to restore a window after loading
Other changes
InputBox
will not receive focus after load, when it is not in the focussed window- A small drawing/rendering bug in the checkable controls (RadioButton, CheckBox) has been fixed
Wiki update for the new function follows.
coldrock.games and raptor ui themes
- I've added two
UiThemes
to this release asyymps
package. It's just two files, containing the coldrock and raptor standard colors, in case you are interested in the rgb values or when just want "another template" to see some more themes - Those themes are also used in the demo project when you clone the repository
Have fun! Make Games!
Yours,
Gris
2403.1 - All new UI
raptor is called raptor3 from now on - new versioning
I will move away from historical x.y versioning. For the time to come, from now on raptor will be referenced to as "raptor3" with a date-based build information, most modern systems have.
This version is raptor3 release 2403.1
(where the "03" of 2403 can be read as "March" - it's a simple year.month naming).
raptor changes
Important
Due to the huge amount of changes in this version, I do not think, raptor3 is compatible with previous raptor releases!
These breaking changes were necessary to move forward
From today's point of view, the new structure looks stable to me, I do not expect such hard changes again in the foreseeable future!
All new UI
- UI system has been rewritten completely
- Control positioning in code through the new ControlTree class
- Supports all you know from Desktop development: Anchoring, alignment, docking, free positioning, spreading
- New UI demo available in the Example Project
- Brand new Data Binding (or "property binding") now available for all raptor objects (not only in the UI!)
- Create consistent look & feel through your entire game with UI Themes
- Change the complete layout of everything on the fly through UI Skins
- Fine control over input events, mouse clicks react on the top-most item only, unless you specify different behavior - see Utility macros and _raptorBase and click-through for more information
- New
room template
packages have been added to the release (see below) - A new
raptor-ui
package is now available (please read through the UI System wiki mentioned at the top of this list, to fully understand, how many benefits you have from this!)
Bug fixes
- Bug fixes in the
Pythagoras
class - Unit tests added for the pythagoras class, proving, that the calculations are correct
- Bug fixes in the
is_child_of
function. It now works correctly in HTML and Windows - Bug fixes in control alignment, especially for checkboxes and radio buttons
Other new stuff
- Brand new
raptor-room-template
andraptor-html-room-template
packages have been added as downloadable yymps to this release. This is an empty room, set up for use withraptor
, which contains all the default layers, a RoomController and a mouse cursor. Use these packages as your source when adding a new room to the game, import it and simply rename the room and its controller. This way you can quick-import any number of needed rooms - A new Logger system has been added to raptor
- Crash Log Reporting is now available with raptor
- Two new string helper functions,
string_first
andstring_last
, which return the first (or last, respectively)n
characters of a string - Unit tests added for the new string functions to verify their correctness
- A new script,
Game_ParticleTypes
has been added to the_GAME_SETUP_
section. You need this for the Particle Systems, which have been also added to the wiki (see wiki changes below) - A new compile time constant,
DEBUG_LOG_BROADCASTS
has been added which allows you to turn off log entries from the broadcaster - A new configuration,
beta
has been added to the project, so you can better set up your macros for dev (default), a beta release and the release version. Note:beta
is a child configuration ofrelease
, so you need only to adapt those values for beta, that are different from release, like a server address or similar things - New #macro constants have been added for each project configuration:
CONFIGURATION_DEV
,CONFIGURATION_BETA
,CONFIGURATION_RELEASE
which resolve to true for their respective configuration. The others resolve to false. - A new class,
RingBuffer
is available in theTools
folder of the raptor project template. Useful little helper for keeping stored values without growing forever. Best use for chat history, logs, whatever shall keep the latest x entries. Scribble
has been updated to 8.7.1, containing the latest fixes for GMS 2402- And very likely a hundred more changes and fixes that would only let this list explode, if I'd name them all here!
rewrites
- global variable naming has been streamlined
- All log lines have been updated to the $"" syntax and no longer have string+concatenations
wiki changes
- All wiki pages have received an update, with new screenshots due to so many changes originating from the UI rewrite
- New wiki section UI system
- New wiki section Logger which also covers crash-logs
- New wiki section Particle Effects
- The Vector helper classes have received their deserved wiki pages
- The Broadcasting pages have been updated
- Feel free to comment and correct any spelling mistakes you find, it's a lot of new pages and english is not my first language. Apologies, if something is hard to understand. Please help me, making it better!
Release 2.7.1
Broadcasting
- To give you better control for the new
.handled
flag in broadcasts, the order has been changed:- Broadcasts are now sent "order-by-depth", means, the "highest" object receives the broadcast first
- This way, if used for UI or click-events on game objects, the broadcasts are received top-to-bottom and they stop when the first object handles the broadcast by setting
.handled
to true. All lower objects will not receive the broadcast then - This way, you can easily develop any "click-through" scenarios
Bugfix for HTML
- With credits to @tabularelf, a bug in the key translation in html5 could be located and fixed. When pressing a non-printable key combination, like
Ctrl+PrintScreen
, html froze. This is now fixed.