A downloadable asset pack

Download NowName your own price

Auto Tools is a massive GameMaker package of GML functions and systems I've created over the course of my time as a game developer.  They are incredibly useful as I make sure to include on every project I start.

AutoShader

A simple set of useful shaders with their own helpers:

shader_set_greyscale();
shader_replace_color(_replace_rgb, _with_rgb);
shader_set_color(_color);

AutoAudio 

A robust and easy-to-use audio system that allows you to instantly create your own sound groups with a default volume parameters.  This allows you to call:

AUDIO.add_group("sfx", [base_volume]);
AUDIO.play(sound, group, [base_gain], [pitch], [offset]);

...to get the user-set volume for that group.  You can also do:

play_limited(sound, group, [base_gain], [pitch], [offset]);

...which will limit the amount of times that sound can be played within a timeframe (custom set to 20 ms, meaning the second sound of the same index MUST be 20ms after the previous to play, otherwise it will exit).  This becomes incredibly useful when say all enemies play an explosion sound on death, and all enemies die on the same frame...

Also includes a simple music player that allows easy transitions:

MXPLAYER.add_type_loop("menu", menu_music); // adds the tag "menu" to your MXPLAYER with the music index
MXPLAYER.transition_to("menu", [fade_time]); // transitions from whatever you are playing to the menu music

AutoCamera

A script that sets up basic camera settings with some useful macros (VWIDTH, VHEIGHT, ASPRATIO etc.) as well as an o_auto_camera object that has easy screenshake (requires a "screenshake" layer in the room), with optional control-click to move the game window.

 AutoInput

An incredibly versatile, but simplistic input system for gamepad/keyboard/mouse.  Add your control scheme by calling:

INPUT.add_input("shoot", kb_key, gp_key)

Allows multiple players, and tons of simple access methods:

INPUT.is_using_gamepad(player) // checks if the player is using gamepad
INPUT.get_device(player) // returns the device
INPUT.set_unplugged(player, slip) // unplugs the device for this player
INPUT.set_device(player, device)
INPUT.set/get_key(player)

Making it easy to handle all of your controls:

if control_is_pressed("shoot", player) { }

AutoData

A lightweight struct builder useful for storing game data (base weapon damage, base enemy hp, etc.)  You set a default struct:

global.weapon_data = create_auto_data({ name: "", dmg: 0, attack: function() {},})

And then can easily add, copy, or manipulate it as you want:

global.weapon_data.add(weapons.sword, { name: "Sword", dmg: 4, attack: function() { swing(); },});
global.weapon_data.add(weapons.wand, { name: "Wand", dmg: 7, attack: function() { cast(); },});

This makes it easier than ever to now call:

show_debug_message(global.weapon_data.get(weapons.sword, "name"));
var _sword = global.weapon_data.at(weapons.sword);
_sword.attack();

AutoTools

A large heap of useful functions:

SETTINGS / MACROS

  • SHOW_AUTOTOOL_DEBUG_MESSAGE – Enables or disables AutoTool debug messages.
  • SECONDS – Macro that converts seconds into steps based on the game FPS.
  • DISPLAY_TODO – Enables debug TODO printouts in the console.
  • IS_HTML – Returns true when running in an HTML5 build.
  • IS_NOT_HTML – Returns true when not running in HTML5.
  • STEP_SEC - Returns 1/game_get_speed(game_speed_fps)

DRAWING

  • draw_black_fade – Draws a full-screen black rectangle with adjustable opacity (fade effect).

DEBUG

  • print – Prints all passed arguments to the debug console separated by “ | ”.
  • draw_mouse_debug_info – Displays GUI mouse coordinates, a stored offset point, and mouse markers for layout debugging.
  • print_grid – Prints a ds_grid to the debug console row by row.
  • todo – Prints a TODO reminder message if debug TODO display is enabled.
  • draw_canvas_debug_info - Draws text of the view/window/canvas/viewport/surface dimensions

GETTERS & UTILITY

  • len – Returns size of array, DS structure, string, or grid dimensions.
  • remap – Converts a value from one numeric range to another.
  • approach – Moves a value toward a target by a maximum increment without overshooting.
  • in_array – Returns true if a value exists anywhere in an array.
  • array_in_array – Returns true if a sub-array exists inside an array of arrays.
  • concat – Concatenates multiple values into a string.
  • get_centered_positions – Returns evenly spaced positions so items are centered in a container.
  • is_in_grid - Checks your x/y cell to see if it's inside the ds_grid
  • get_random_object - Returns the id (or noone) of a random instance of an object (PLUS a working alternative for HTML5 export)

GUI / VIEWPORT

  • get_gui_x – Converts world X position into GUI surface space.
  • get_gui_y – Converts world Y position into GUI surface space.
  • get_gui_from_pos – Converts world (x,y) into GUI coordinate array.
  • is_on_screen – Checks if a world coordinate is inside the camera view (with margin support).

TWEENING

  • tween – Applies easing math to a 0–1 value and returns smoothed progress.

MATH

  • dt – Returns delta time in seconds.
  • random_chance – Returns true with given percent probability.

RAYCAST

  • raycast – Casts a ray until collision or max distance; returns hit info struct.

ARRAYS

  • create_non_repeat_array – Creates a unique-random subset of array values.
  • create_non_repeating_index_array – Creates unique random indices in range, excluding specified ones.
  • create_sequence_array - creates an array in sequence (eg. [0,1,2,3,4,5])

ANIMATION

  • is_anim_end – True if sprite animation will finish this step.

TEXT

  • draw_text_halign – Draws aligned text with font, then resets alignment.
  • draw_text_align_ext – Draws wrapped text with alignment, color, and alpha.
  • draw_text_align_transform_ext – Draws wrapped text with scale/rotation/alpha transforms.

TILEMAPS

  • clear_tilemap – Clears every tile on a tilemap layer.
  • tile_get_data – Gets packed tile data (index + flags) from a tilemap cell.
  • tile_get_actual_index – Gets only base tile index (removes flip/rotate flags).
  • set_tile_to_index – Sets a tile index while preserving flip & rotate bits.

TIME

  • sleep – Busy-waits a number of milliseconds (blocks game).
  • get_time_as_string – Converts seconds into MM:SS or HH:MM:SS format text.

DESTROY

  • destroy_ds – Safely destroys any DS resource if it exists; returns true if removed.
  • destroy – Destroys given instance, or self if none given.

CREATE HELPERS

  • one_shot – Creates effect instance that destroys when animation ends.
  • one_shot_gui – Same as one_shot but drawn in GUI layer.
  • one_shot_follow – Creates animated effect that follows an object then destroys itself.

SAVE / LOAD

  • save_data – Saves struct/array to disk as JSON.
  • load_data – Loads JSON data from disk and returns it.
  • data_exists – True if save file exists.


Do you use GameMaker and interested in fast-tracking your development?  Make sure you check out my other Auto packages!




Updated 17 days ago
StatusReleased
CategoryAssets
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
Authorome6a1717
Made withGameMaker
Tagsextension, functions, Game Design, Game engine, GameMaker, helper, methods, package, tool, tools
Average sessionA few seconds

Download

Download NowName your own price

Click download now to get access to the following files:

AutoTools v1.2.2 2025-12-15.yymps 54 kB
AutoTools v1.2.0 2025-10-30.yymps 61 kB

Development log