You might know me from my commerical work but I spend my free time making libraries to help developers.
GML is something of a quirky language and has led me to evolve particular techniques to establish a personal "best practice". You can read some of my thoughts on the nuances of developing in GameMaker here.
![]() |
Scribble Deluxe Powerful, fully featured text renderer Optimised for dynamic effects and dialogue |
![]() |
Input Comprehensive cross-platform input Now maintained by offalynne |
![]() |
Scribble Jr. Fast and lightweight text renderer Optimised for UI text and performance |
![]() |
Vinyl Live updating modular audio system |
![]() |
SNAP Struct and array export/import and utilities |
![]() |
Chatterbox Narrative scripting tool |
![]() |
Dynamo Dynamic data loading |
![]() |
Snitch Logging and crash handling system |
![]() |
iota Miniature fixed timestep library |
![]() |
Bulb 2D lighting and shadows |
![]() |
Texan Texture group manager |
![]() |
DoLatercall_later but with arguments |
![]() |
Clean Shapes Antialiased primitive drawing |
![]() |
db Simple savedata database |
Other stuff you might like too:
dotobj Comprehensive .obj importer |
PRNG PRNG functions |
Elephant Advanced struct/array serialization |
Coroutines Asynchronous functions for GameMaker |
Shockwaves Shader-based ripple distortion |
Kawase Blur Kawase dual filter blur |
LUT Commonly used for colour grading |
A Message from Amalthea Procedural audio toy |
Quaternions Simple quaternion library |
Matrices Matrix manipulation functions |
Sphinx Simple encryption |
HMAC-Secured Savedata Featured on the YoYoGames tech blog |
Unity Analytics Unity Analytics implementation |
Google Analytics Google's Measurement Protocol v4 |
gl_FragDepth How to enable gl_FragDepth in GLSL ES |
BIG Integers Big integer handling |
Extending JSON Experimental JSON-like data formats |
Splat Vertex buffer-based sprite caching |