A downloadable extension for Windows

Buy Now$2.95 USD or more

This extension enables your GameMaker games to use system-level custom cursors. Such cursors are framerate-independent and have zero lag.

Use of native cursors is particularly important for any players that might run your game at displays with higher refresh rates or with vertical synchronization enabled, as mouse lag can be disorienting for many.

Included functions:

  • window_set_cursor_sprite(sprite, subimg)
  • window_set_cursor_sprite_ext(sprite, subimg, xscale, yscale, blend, alpha)
  • window_set_cursor_surface(surface, hotpoint_x, hotpoint_y)
  • window_set_cursor_surface_part(surface, hotpoint_x, hotpoint_y)
  • window_set_cursor_normal() (reverts to cursor set via built-in functions)

Supported versions: GMS1, GMS2, GMS2.3+

Supported platforms:

  • Windows: via DLL (WndProc hook).
    Supports cursors up to 256x256px.
    Old systems may only support cursors up to 64x64px (in otherwords, make an option if you want a huge cursor)
    Likely works on UWP/Windows Store native apps, but wasn't tested yet.
  • HTML5: via JS (CSS3 cursors).
    Supports cursors up to 128x128px (as per specification).
    On WebGL, cursors can only be changed in draw event, since drawing operations do not work elsewhere.

Package contains:

  • The extension itself.
  • Sample project (shown on the GIF).
  • Source code (GML, JS, C++).


Buy Now$2.95 USD or more

In order to download this extension you must purchase it at or above the minimum price of $2.95 USD. You will get access to the following files:

window_set_cursor_demo.gmz 152 kB
window_set_cursor-GMS1.gmez 21 kB
window_set_cursor-GMS2.yymp 35 kB
window_set_cursor-GMS2-3.yymps 48 kB

Download demo

window_set_cursor_demo.zip 1 MB

Development log