A downloadable asset pack

Get this asset pack and 24 more for $304.05 USD
View bundle
Buy Now
On Sale!
15% Off
$14.99 $12.74 USD or more

Repast is a complete cooking system for GameMaker that draws every dish it makes. Pure GML. No sprites, no shaders, no extensions, and no image files anywhere in the package.

You give it a recipe and how well it was cooked. It gives you back a plated dish: the vessel, the bed, the main ingredient in the exact state your heat left it in, the accompaniments fanned behind it, the garnish it earned, and the steam coming off it.

Most cooking systems store a recipe and an icon

That is why they have three tiers of soup that are the same picture at three brightnesses, and why they cannot answer "sear it a little less".

Repast stores a method and computes the dish. Two players who cook the same recipe at different skill do not see the same picture with a different label on it. They see different food.

A cook state is not a recolour. It is a trajectory.

The obvious way to do "seared beef" is a second hex colour next to "raw beef". Here a cook state is a set of coefficients applied to whatever material it is given, scaled by a continuous doneness, so the same searing law browns beef, halloumi, a scallop and a slice of bread, each from its own starting colour. Every value in between is a real colour rather than a blend of two pictures.

The coefficients are what the Maillard reaction actually does to a surface:

  • Lightness falls, and fastest at the end, because browning accelerates once it starts.
  • Chroma rises first, from raw grey-pink beef to a saturated red-brown crust, and then collapses as carbon takes over. A model that only darkens gives you mud at every setting; the rise is what makes a crust look appetising instead of dirty.
  • Hue travels toward amber from wherever the substance started, because browning manufactures pigment regardless of what the raw material looked like.

That is why charred and seared are different-looking states and not one texture at two brightnesses. The second store image shows all twelve methods on one ingredient.

What is in it

  • 46 hand-authored ingredient forms — chop, steak, tied joint, coiled sausage, drumstick, whole bird, whole fish, flaking fillet, curled prawn, seared scallop, roots, roast and mashed potato, onion rings, leek, mushroom, cabbage, sprout, peas, pods, squash, fried and halved eggs, cheese, butter, loaf, bread slice, lattice pie, dumpling, grain, noodles, tart, stew, apple, fig, berries, citrus, drizzle, honeycomb, herb sprig, leaf, seeds, dusting, sauce pool, steam.
  • 24 substances and 12 cook states. Every form is authored once, in no particular material. What it is made of and how it was cooked are two independent axes applied at draw time.
  • 8 generated vessels — earthenware, porcelain, stoneware, pewter, copper, iron, wooden board, leaf — each with its own wear, and only the board gets a grain.
  • The system on top: recipes, a discovery ledger, five quality tiers, spoilage on a clock, and buffs derived from what is actually on the plate.
  • A runnable demo room and twelve worked recipes.

Quality you can see

The number of finishing touches on a plate is a function of the tier, so a masterwork dish is visibly more finished than a plain one. More garnish, a gilt rim, a beaded edge, steam. The recipe author does not choose garnishes per tier; the system earns them.

A ruined dish is not the same dish with a label. It is forced up the trajectory into char, so the picture tells the player what went wrong.

Four calls

book = rps_recipe_book();                             // twelve worked recipes

dish = rps_recipe_cook(book[0], heat, skill, seed);   // heat and skill are 0..1
pal  = rps_palette_build(dish);

rps_plate_draw(dish, pal, x, y, w, h);

That is a complete cooking mechanic. rps_plate_to_sprite() bakes a dish once for inventory slots and tooltips, which is the normal path here rather than an optimisation.

Compatibility

Built and gated against GameMaker runtime 2024.14.4.268, IDE 2024.11 and newer. Nothing here uses a GMRT-only feature and GMRT is not a dependency. No extensions, no shaders, no third-party libraries, no network access. Install with Tools › Import Local Package, open rm_rps_demo, press Run, and hold J.

Every function, macro and global is namespaced rps_. The package owns two globals, both the lamp direction. GML's global namespace is flat and a collision inside your project is a support ticket nobody can debug remotely.

Verification, stated honestly

GML cannot be unit-tested outside the engine. Repast's answer is that it tests itself inside a real build: Repast.exe -selftest runs 11 stages and writes a result file.

Measured on the shipped build: 59 assertions passed, 0 failed. It checks that every named form builds something and stays inside its frame, that every substance and cook state pair is visibly different raw and done across all 264 combinations, that the chroma arch genuinely rises and falls, that every colour role the corpus emits resolves in the palette, that skill helps and difficulty tightens the window rather than lowering the ceiling, that ageing is visible and does not mutate the dish you gave it, and that all twelve starter recipes compose to a full plate.

Stage 0 deliberately fails an assertion and checks the counter moved. A suite that has never been seen to go red is a suite nobody has tested.

The limits, plainly: that proves the code runs and produces the values it claims in a real Igor build. It does not prove your taste agrees with mine about how a dumpling should look.

Every image on this page except the cover was rendered by the package itself, by the same functions you are buying.

Licence

Use it in unlimited games, commercial or free, forever. Modify the source however you like; it ships raw and readable on purpose. Do not resell or redistribute the package itself. Full terms in LICENSE.txt.

Purchase

Get this asset pack and 24 more for $304.05 USD
View bundle
Buy Now
On Sale!
15% Off
$14.99 $12.74 USD or more

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

Repast.yymps 369 kB

Development log

Leave a comment

Log in with itch.io to leave a comment.