Version 2023.8: Tile Collisions, Font Effects And Custom Debug Views

cover

GameMaker 2023.8 brings text effects, improved debugging, tile collisions and more.

More Debug Tools

You can now make in-game debug windows.

After enabling the debug overlay, call dbg_view() to create a new window.

dbg_view__1_.jpg

Call subsequent functions to add sliders, checkboxes, buttons etc. linked to your variables.

Console Input

svcheats.jpg
Half Life 2, developed by Valve

Remember typing "sv_cheats 1" into Half Life 2 to find the G-Man? Something similar has made its way to GameMaker.

After opening the in-game console, type a function and it will be executed.

console__1_.jpg

It can be a built-in function or a global function from one of your scripts.

The syntax for functions with arguments is "function arg0 arg1 arg2 ...". This is different from what you’re used to in GML, which is "function(arg0, arg1, arg2, …)".

Only function calls are supported for now, but you can still set variables using functions. Custom debug views are more suitable for modifying variables.

Font Effects

Text can now be drawn with an outline, glow, and drop shadow.

fonteffects.jpg

This is applied on a font level using font_enable_effects().

After applying effects, switch to your font using draw_set_font() and draw text to see your effect.

Tile Collisions

The big hit of this release: tile collisions!

Use existing functions like place_meeting(), move_and_collide() to check collisions against tilemaps. It’s as easy as:

// Create Event
tilemap = layer_tilemap_get_id(“TileLayerName”);

// Step Event
var _colliding = place_meeting(x, y, tilemap);

if (_colliding)
{
    // do something
}

All other collision functions also take tilemaps, and also arrays!

Passing an array allows you to check collisions against multiple objects or tilemaps in one call:

var _colliding = place_meeting(x, y, [obj_ground, tilemap, _enemy]);

Bug Reporter

The IDE has a built-in bug reporter now, accessed from Help > Report A GameMaker Bug.

reportabug.jpg

All public issues submitted through this reporter go to our GitHub Issues page.

The reporter allows you to submit issues without needing a GitHub account, however it is recommend to connect your GitHub account to your GameMaker account.

Doing so will link any new submitted issues to your account, so you can get notifications on their progress and add more details later.

Go to the Accounts page to link your GitHub account to your GameMaker account.

Compressor

The newest audio effect is a compressor, helping you keep your audio more levelled.

When your audio signal goes above your given threshold, it’s reduced by your given ratio.

Audio-level-compresion-diagram-01.jpg

Image by Iainf from Wikipedia

Read the page on AudioEffectType for details.

Typed Handles

If you’ve used data structures, you know they’re represented by numbers.

You might make the mistake of passing a DS List ID into a DS Map function, and getting an unexpected result, because it uses the list ID to look for a map which may also exist.

Well, no longer! Each data structure ID now holds its type as well. If you pass a structure into the wrong function – you won’t get an unexpected result.

This also applies to all asset IDs (like objects, sprites etc.), instance IDs and Particle System instances (i.e. what you get from part_system_create()).

See Data Types for more info (there's a section on Typed Handles).

New Particle Functions

You now have more control over your particles with some new functions.

With part_particles_burst(), burst all particles in your Particle System asset at any point in the room.

You can also enable “global space” for particle systems, so that when you move or rotate the system, existing particles stay where they are:

A Particle System moving with the ship, with global space disabled and enabled, respectively.

There are new functions for adding a delay to a particle emitter, and adding an interval between each burst of an emitter when using stream mode.

More GML Updates

2023.8 brings some new GML changes:

  • There are functions that lock your mouse in place and for getting its delta movement, useful for 3D games.
  • Networking functions now support IPv6 on all platforms except Switch, PS4 and PS5
  • Multicast Traffic support was added which is enabled in network_set_config()
  • You can change the depth (Z-axis) for rendering graphics dynamically and get it during runtime
  • The new function nameof() gives you the name of the identifier you pass to it

More IDE Changes

  • The Particle System Editor now has a preview option for burst mode, with adjustable delay
  • The default target is now “Test” instead of GX.games, unless you've manually set a default target in your Preferences
  • The current runtimes have been renamed from VM/YYC to “GMS2 VM” and “GMS2 YYC”, as they are from the GameMaker Studio 2 era. This differentiates them from the new runtimes coming in the future, which will become the default.
  • Sprites, Sounds and Included Files now have a right-click menu option to open the source file in an external editor.

Read the release notes to see all changes.

Download GameMaker 2023.8 and start creating now.

Happy GameMaking!

avatar
Lead Technical Writer at GameMaker, Gurpreet creates documentation and tutorials to make game making easier for you. He loves using the computer to bring new things to life, whether it's games, digital art, or Metal music.
Back to blogs