Frameworks
All you need in one bundle!
Welcome to the hub for all documentation related to the GameMaker focused frameworks created by RefresherTowel Games.
Each framework is built to solve a specific pain point, with a clean API, full Feather support, and detailed docs.
- Statement decides what the game is doing.
- Pulse describes what just happened to anything listening.
- Echo tells you, in plain text, what all of the above actually did.
STATEMENT
Turn your states into a Statement!
Sick of juggling if chains, tangled transitions, and forgetting which state == means what?
Statement is a clean, powerful state machine framework for GameMaker that makes your game logic not suck. It gives each object (or struct!) its own brain—with clearly named states that handle Enter, Update, Exit, and optional Draw logic, all in one tidy place.
- Built-in visual debugger: Statement Lens lets you see your state machines live in-game—inspect flow, watch transitions, set breakpoints, step frame by frame, even drive them manually. It’s wild.
- Simple to start: one machine, a few named states, one
Update()call in Step. That’s it. - Scales when you need it: opt into advanced features like queued transitions, state stacks, history, transition payloads, per-state timers, and non-interruptible states.
- Debug-friendly by design: full API introspection, transition history, heatmaps, and logging (via the included Echo debug console).
- Works with structs or instances, so it plays nice with all your systems.
Use it for players, AI, UI, abilities, cutscenes—anywhere things need to behave like… well, states.
Statement handles the boilerplate so you can focus on the behavior. It’s the state machine I wanted, so I built it. Hope you like it.
EXPLORE THE STATEMENT DOCS
PULSE
The beating heart of your game
Want your damage event to update the health bar, play a sound, spawn some particles, and poke the AI… without wiring a dozen scripts / instances together by hand?
Pulse is a signals / events layer for GameMaker that lets your game shout out “something happened” and lets anything that cares listen in.
For small projects, it is dead simple:
- Subscribe once and stop passing instance ids all over your code.
- Fire a signal and let UI, audio, VFX, and gameplay all react in their own space.
- Keep things decoupled so you can swap or remove systems without a hunt-and-replace session.
For bigger, messier projects, Pulse quietly scales up with you:
- Priorities and consumable signals so the right listener wins and can cancel the rest.
- Optional queued dispatch so you can post events now and flush them at a safe time later.
- A query API so you can ask the game a question (“who wants this target?”) and collect structured answers.
- Subscription groups so entire states, rooms, or UI panels can clean up their listeners in one call.
- Multiple buses so gameplay, UI, and debug tools can each live on their own event channels.
- Safety features like weak refs, automatic pruning, and result enums so you can detect and debug weird cases instead of guessing.
If all you want is “emit event, something happens”, Pulse does that in a couple of lines. If you want your whole project to sit on a clean, debuggable event layer, Pulse is built for that too.
EXPLORE THE PULSE DOCS
CATALYST
Turn raw numbers into reactions
Struggling to keep your stats, buffs, and item effects under control as your game grows?
Catalyst is a feature rich yet easy to use stats and modifiers framework for GameMaker. It treats stats as living systems instead of isolated numbers.
- Handle health, damage, resistances, buffs, debuffs, item bonuses, and more in one consistent way.
- Stack and combine effects without writing a new special case every time.
- Built for weird ideas: context aware modifiers, derived stats, and complex interactions without tearing up your code.
EXPLORE THE CATALYST DOCS
ECHO
Hear what your game is telling you
Plain debug logs are fine at first, but quickly become noise once your project grows.
Echo is a lightweight debugging framework for GameMaker. Your game is always talking and Echo helps you hear what it is telling you. Instead of a wall of show_debug_message() calls, you get structured logs, levels, history, and tools that make problems stand out instead of hiding in the noise.
- Log at different levels and filter what hits the console.
- Keep a debug history for the current session and dump it to file when needed.
- Optional extras like stack traces and an easy way to mute all logging with a single setting.
Echo ships free with all available frameworks and integrates cleanly with their designs. Or you can purchase it for cheap on its own.