Skip to content

Releases: Grisgram/gml-raptor

Release 2410

25 Sep 16:52
Compare
Choose a tag to compare
Release 2410 Pre-release
Pre-release

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 function LG_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 a LG string was supplied

New Features

  • async_loops can now be performed through the GAMESTARTER instance, optionally showing a loading screen while they are active
  • unit 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 new async_loop feature in raptor to reload all file parts when switching languages
  • vsget and vsgetx now can also handle the entire struct being undefined and will return the _default_if_missing
  • new functions string_format_number_left and string_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.0
  • SNAP has been updated to version 7.0.1
  • scribble (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 and shadow_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

04 Jun 13:32
40fd2b1
Compare
Choose a tag to compare

Bugfixes

  • The Panel control now respects min_width and min_height when auto-sizing
  • Fixed a bug, which could cause a missing-text warning to appear on screen when using .add_sprite on a ControlTree
  • 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 definition maximize_on_create which will make the panel use the available screen space (VIEW or GUI, depending on the draw_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 with show_popup(...) than the UI_ROOT (which is always visible)

  • _baseControl offers a new function is_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 through tree.controls.your_name. This also works for the UI_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 the onPoolActivated and onPoolDeactivated callbacks to your instance.

  • A new convenience function layer_set_background_sprite allows you to change a background layer without doing layer_background_get_id(layer_get_id(...)) ugly code. Just by its name.
    I'd like to mention at this point, there's also layer_set_background_color available. This function is not new, but maybe some don't know, that it exists.

  • Improved async support through the GAMESTARTER object. Read all about it here

Release 2405

10 May 10:03
Compare
Choose a tag to compare

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 the beta or release configuration as active configuration

Changes to existing functionality

  • All the theme constants have been renamed, from APP_THEME_* to THEME_*

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

07 Apr 17:20
Compare
Choose a tag to compare

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

25 Mar 16:30
Compare
Choose a tag to compare

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 room
  • LittleHelpers 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 flags protect_ui_events and mouse_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 the BROADCASTER 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!)

image

As always,

Have fun! Make Games!
Yours, Gris

2403.4 Parallax Scrolling & Data Binding

17 Mar 15:45
Compare
Choose a tag to compare

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

11 Mar 16:27
Compare
Choose a tag to compare

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. If start_fullscreen is true, then borderless_fullscreen decides, whether to activate the borderless or the exculsive fullscreen mode

Have Fun! Make Games!
Gris

2403.2 Hotfix for Savegames

08 Mar 19:23
Compare
Choose a tag to compare

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 the control_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 as yymps 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

07 Mar 05:01
Compare
Choose a tag to compare

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 and raptor-html-room-template packages have been added as downloadable yymps to this release. This is an empty room, set up for use with raptor, 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 and string_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 of release, 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 the Tools 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

07 Jan 16:09
Compare
Choose a tag to compare

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.