Adversary — Multi-Phase Bosses for GameMaker
A downloadable asset pack
Adversary is a boss system for GameMaker, written in pure GML. There is no sprite in it, no spritesheet, and no texture page. Every creature on this page was drawn by the code you are buying.
The GameMaker asset shelf sells bosses in two halves and never couples them. The art half ships a fixed boss you cannot alter. The wiring half ships behaviour with no body. Buy both and you keep them in sync by hand, forever, because the telegraph a player reads — the left arm is winding up — is authored in one place and the arm is drawn in another.
Here, one limb record is the only source of truth for both.
The tell belongs to the arm
adv_tell_arc() takes its pivot from joint 0 of the solved limb chain, its radius from that limb’s declared reach, and both of its bearings from where the solver actually puts the tip at rest and at full wind. Nothing in the package holds a second copy of any of it.
Lengthen an arm and its warning grows on the next frame, because the warning never knew the old length. That is not a promise in a readme. The shipped self-test sweeps every plan, every phase, every side and every limb and requires the telegraph radius to match the limb’s drawn reach inside a two-sided bound, and a buyer can re-run it.
The terminal decides the shape of the warning
A blade sweeps. A fist lands. A maw closes. A stinger stabs. The package reads the limb’s terminal and derives the matching mark — a swept arc, a ringed landing point, two converging jaws, a lance — and in every one of them the striking end of the limb is ghosted along the path it will really travel. That last part is the thing a sprite-based boss cannot do at all: it has one picture of the claw and nowhere to put it.
And the interface it is fought inside
The package ships the encounter frame too: a name plate, a health bar cut into as many segments as the boss has phases so the notches are where it becomes something else, phase pips, and a wind-up meter reading the same number the telegraph is swept by. Every plate, rule and pip takes its ink from the palette of the creature being fought, so the interface recolours per encounter — which a hand-drawn HUD sprite cannot do.
It does not own your combat. adv_hud_draw takes health and wind as arguments; your fight drives them.
Three phases, one set of numbers
As a boss breaks, the shell peels back from the tail so fewer plates are drawn, the limbs fold, and the material itself dulls and darkens. It is not a palette swap and it is not a second sprite.
What is in the box
- 14 boss plans, 3 phases each — 42 distinct bodies
- 63 telegraphing limbs
- 10 materials, each a 12-stop ramp — 30 palettes
- 8 core silhouettes: spindle, anvil, bulb, drum, carapace, wedge, hourglass, lobed
- 8 terminal forms: claw, blade, maw, hoof, fist, stinger, fin, talon
- 4 telegraph shapes: sweep, impact, close, thrust
Every one of those numbers is returned by a function at run time, counted from the declarations. The caption on the contact sheet above is printed the same way, so this page cannot claim a count the package does not have.
Quickstart
Tools → Import Local Package, pick Adversary.yymps, Add All. Open rm_adv_demo and press Play — that room is the whole product driven by one object.
var _plan = adv_plan("arachnid");
var _pal = adv_palette_for(adv_hides()[3], adv_phase_damage(phase));
var _t = adv_tell_arc(_plan, limbIndex, -1, phase); // undefined if that limb never strikes
if (!is_undefined(_t)) adv_tell_draw(_t, _pal, x, y, 160);
adv_render_parts(adv_body_parts(_plan, phase, wind), _pal, x, y, 160, 0, 160, undefined);
Everything is in core-relative units, so one scale argument sizes the whole creature and nothing needs re-authoring per resolution.
Compatibility
- GameMaker 2024.14+. Built and gated against runtime
2024.14.4.268, the current stable legacy runtime. No extension, no shader, no platform-specific call. - Everything is
adv_-prefixed —adv_,ADV_,obj_adv_,rm_adv_,fnt_adversary. GML’s global namespace is flat, so nothing here can collide with your project. It declares three globals, all prefixed, and two of them are the documented lamp knob. - Raw, readable, commented GML. No minification, no obfuscation, no DLL.
Verification, stated honestly
GML cannot be unit-tested outside the engine, so this package tests itself inside it. The engine gate is a real Igor package build; the suite runs on the built executable. It proves the geometry is well-formed — every limb reaching what its telegraph promises, no telegraph collapsing to an invisible sliver, no support leg drawing a danger arc, and every count above derived from the arrays actually walked.
It does not prove the picture is good. Several defects in this package’s history passed every assertion and were found only by rendering a sheet and looking at it. The assertions that would have caught them were written afterwards and are in the suite now.
Licence
One developer, unlimited commercial games, forever. Everything it draws for you is yours — put the bosses on your store page and in your trailer with no attribution and no revenue share. You may not resell the package itself. Full terms in LICENSE.txt.
More from Core Systems Asset Factory
GameMaker systems in the same house style: Raiment (characters that draw their own bodies and everything they wear), Chitin, Liege and Pastime.
And for the fight itself: Adversary — Battle & Boss Suite, a music suite that carries one theme from the first encounter to the final phase. Same name, deliberately: it is scored for exactly this.
AI disclosure: the code and graphics in this product were produced with AI assistance.
© Core Systems Asset Factory
| Updated | 17 hours ago |
| Published | 2 days ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Made with | GameMaker |
| Tags | 2D, Asset Pack, boss, combat, enemy, GameMaker, Generator, gml, no-sprites, Procedural Generation |
| Languages | English |
| AI Disclosure | AI Assisted, Code, Graphics |
Purchase
In order to download this asset pack you must purchase it at or above the minimum price of $10.49 USD. You will get access to the following files:







Leave a comment
Log in with itch.io to leave a comment.