Skip to content

Releases: Grisgram/gml-raptor

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.

Release 2.7

06 Jan 09:37
Compare
Choose a tag to compare

This release comes with several bug fixes and lots of new functions

Bug fixes

  • Many minor bugs and documentation/comment fixes in this release

New functions

  • animation_run_exf works like animation_run_ex with the difference, that instead of animation_abort_all for the exclusive mode, animation_finish_all is invoked before starting the exclusive animation
  • run_delayed_exf is the same as animation_run_exf above, but for delayed tasks
  • name_of(_instance) resolves the name of the current instance to a string (or undefined), containing also the ref id, so it generates a unique string for each instance for easier compare, especially in the HTML5 runtime, which is all but stable in GameMaker and causes so much headache.
  • is_child_of has been rewritten completely and now safely detects, whether an instance is the same class or derived from a given class, no matter if you run the windows runtime or HTML5.

GrayScaleShader

  • A completely new shader that renders any object in grayscale. Easy to use. Documentation at GrayScaleShader

New global UI setting is_enabled

  • All UI controls in raptor now have this flag. It works like the .Enabled flag you probably know from Windows programming.
  • Set .is_enabled to false to stop the control from receiving any events
  • Control is rendered in grayscale (through the new GrayScaleShader mentioned above) while it's disabled

Broadcasting

  • All broadcasts now have a uniqueid you can track if you need
  • A new flag .handled in the broadcast message prevents this broadcast to be sent to any more recipients, if you set it to true while processing the message. This works similar to the .Handled flag in .net/C# for cancellable events. You probably know that from there.
  • Log messages from the broadcaster can be turned off for release mode through the new DEBUG_LOG_BROADCASTS macro. See the GameConfiguration file in the project template. By default, these logs are turned off.

StateMachine

  • A new method get_active_state offers a comfortable way to retrieve the state object for the currently active state

StatefulObject

  • Create entire animation chains with the new sprite_animate_once subsystem. Everything about it in the wiki at Functions-in-the-StatefulObject
  • A new variable on the object, protect_ui_events will make sure, no mouse_* events arrive as state request in your StatefulObject, while any of these conditions is true:
    • its is_enabled flag is set to false
    • its visible flag is set to false
    • its hidden behind a popup (i.e. the ShowPopup method of raptor is active and you are displaying a message box or any other kind of modal overlay)

Release 2.6.1 - Library update

16 Dec 07:23
Compare
Choose a tag to compare

Hey all,

I had quite a busy year 2023, so it went a bit silent here on the raptor side.

Anyways, I am back now and updated raptor for GMS 2023.11 version and also updated SNAP to 6.1

Release 2.6

31 May 14:16
Compare
Choose a tag to compare

Huge list of changes and optimizations!

OutlineShader

  • Outline Shader 3.1 is now included, which offers many new features:
    • Shader pre-baking
    • Caching
    • Pulse Animation
    • Color Rotation
    • All details about the new shader in the wiki.

ParticleManager

  • **ParticleManager ** has gone through a strong rewrite and optimization.
    • It's interface changed heavily but is now way more clean and easy to use
    • streaming, bursting and on-the-fly creation of particles has been reworked
    • cloning and attaching of emitters is now straightforward

Animation

  • Animation is now completely independent of the real frame rate and fully realtime-based
  • You still specify "delay" and "duration" in frames, but internally this means "seconds", so if you specify a duration of 60 and your game is set to 60fps, the animation will last one second, no matter how many frames the computer really renders
  • Skipped Frames are detected and all missed frametriggers will fire
  • .finish() is a new fast-forward function that will end the animation now, but at the state it would have, if it finished normally. In contrast to the abort() method, which will let an object end "in the middle of nowhere", .finish() runs all the steps to the end of the animation and it will look like the animation finished normally
  • A bug has been fixed in animation_abort_all where sometimes not all animations for a specific owner were found

TileScanner

  • TileScanner is a new utility class to help you scan the tiles of a level you created, check it out!

CanvasDrawer

  • This is an object that lets you place any Canvas in a room and it will act like a real sprite
  • the new script sprite_to_canvas supports this greatly by allowing you to copy and sprite of your game to a canvas by keeping the frame information. A perfect solution, if you want to pre-render a sprite with some shader applied (OutlineShader uses exactly this combination to prebake the outlines)
  • raptor now includes the latest version 2.0.1 of the Canvas library by @tabularelf

Various fixes and changes

  • A bug was fixed in ObjectPools where an instance was detected wrong
  • ObjectPools now have a pool_get_size method available
  • InputBox now has a property select_all_on_focus which will ... well, select the entire text when the InputBox receives focus
  • draw_debug_info has been enhanced