A downloadable asset pack

Buy Now$14.99 USD or more

The message box drawn as an object, and a different object for every speaker. Cartouche generates each speaker's dialogue box in pure GML: what its frame is made of, how it is built, the bands along its rails, its corners, a nameplate struck into the head rail, a sunk panel for a portrait, a ground under the text and its own advance caret. The king's box is not the goblin's box, and neither is the innkeeper's. No image files.

Most games draw every line of dialogue in one box, whoever is talking. A window skin pack gives you a few more boxes to choose from by hand. Cartouche reads who is speaking - their kind, their standing, their name - and builds the box from that, so a whole cast gets boxes that differ in material, construction and ornament without you drawing or assigning a single one. It draws the box only: your text still comes from your own code (draw_text_ext, Scribble, anything), and Cartouche tells it where to write and in what colour.

my_speaker = crt_read({ name: "Innkeeper", kind: "commons" });            // when a line starts
crt_draw(my_speaker, my_x, my_y, my_w, my_h, { name: "Innkeeper" });       // Draw GUI: the box, baked once
var my_text = crt_text_rect(my_speaker, my_w, my_h);                      // where your text goes
draw_set_colour(crt_ink(my_speaker));                                     // and in what colour

What your players see

  • Five traditions: the party in leather, planed wood, brass and enamel; the town in limewash, rush, pine and slate; the enemy in lacquer, iron, obsidian and bloodstone on DARK fields; the wild in hide, bone, horn and chitin; the numinous in stone, frost, glass and nacre.
  • Standing you can see: five ranks from plain to sovereign. Rank picks how far up the tradition's own ordering the material and construction sit, how many bands run round the frame (one to three) and which corners and nameplates are reachable. A plain villager cannot reach a crown.
  • 40 materials drawn with 18 surface figures (sawn, figured, cleaved slate, conchoidal obsidian, hammered, woven rush, banded horn, frosted glass, the meteoric lattice of star iron and more), 28 frame constructions with crests, blind arcading and joints, 30 bands, 26 corners, 35 nameplates, 20 grounds and 15 carets.
  • A sunk panel for the portrait, its head square, arched or pointed after the speaker's crest: hand it your portrait sprite and it is fitted, clipped to the panel and faded at the foot.
  • Text you can read: the ink is SOLVED for every material on every ground its tradition can give it, from the material's own hue until it clears WCAG AAA (7:1) against the ground's least legible texture. All 160 pairings clear it; a villain's box is a pale hand on a dark field for that reason.

Built for a real game

  • Every box is baked once into a sprite and drawn as one sprite after that (measured: 19 to 67 ms for an 816 x 240 box across two test runs on our machine, VM runtime). crt_prepare bakes a cast ahead of time on a loading screen.
  • The frame is added to your text area, never carved out of it: size your box once as text height plus crt_max_frame_height(w) and every speaker fits. Projecting ornament stays inside the rect you give it.
  • The same speaker gets the same box on every machine and in every save. Any tradition, rank or identity can be set by hand; a kind word it does not know is assigned, never dropped.

Tested

  • Igor package build clean on the shipped source, and proven able to fail.
  • 50 in-engine assertions on a real built exe, held to our RPG Maker MZ original: every speaker read field for field for a 24-speaker cast and 23 edge cases, all 160 inks, and all 102 test boxes draw exactly the original's number of paths, fills, strokes and rectangles. Plus ink, containment, determinism, clean edges over any background, the caret, the portrait clip and the cache.
  • 28 more in a blank project that installed the package the way you will and ran the Readme's own code.
  • 92 adversarial calls against the documented functions with zero crashes.

Requirements

GameMaker 2024.14 or newer (built and tested against runtime 2024.14.4.268, VM). Pure GML: no extensions, no DLLs, no shaders, no sprites. Import the .yymps, open rm_crt_demo, press Play: a dialogue walks a 24-speaker cast, every line typed into its speaker's own box; P puts a portrait in the box, G shows a gallery and a street of six townsfolk. Cartouche makes no sound.

One commercial licence, unlimited games, no attribution required. Everything the package draws in your game is yours to ship, including on your store page and in your trailers.

Paid, from the same studio

  • Cartouche for RPG Maker MZ ($14.99): the original, replacing MZ's message window.
  • Intertitle ($12.99): a title card for every place and every boss, for GameMaker.
  • Frontispiece ($14.99): the title screen, generated from the game itself, for GameMaker.
  • Missive ($14.99): every letter, writ and note your game delivers, drawn as a document, for GameMaker.

More GameMaker systems at csaf.itch.io.

AI disclosure: the code, the generated artwork and the demo's sample dialogue in this package were produced with AI assistance. Every store image, the cover and the GIF were rendered by the product itself. Type: IM Fell DW Pica (SIL OFL 1.1) and Open Sans (Apache 2.0), notices included.

Purchase

Buy Now$14.99 USD or more

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

Cartouche_GameMaker.zip 1.4 MB

Development log

Leave a comment

Log in with itch.io to leave a comment.