A downloadable asset pack

Get this asset pack and 215 more for $1,945.94 USD
View bundle
Buy Now
On Sale!
30% Off
$14.99 $10.49 USD or more

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_-prefixedadv_, 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

Purchase

Get this asset pack and 215 more for $1,945.94 USD
View bundle
Buy Now
On Sale!
30% Off
$14.99 $10.49 USD or more

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:

Adversary_GameMaker.zip 751 kB

Development log

Leave a comment

Log in with itch.io to leave a comment.