Forage - Mushrooms That Draw Themselves, And One Of Them Will Kill You
A downloadable asset pack
Every mushroom, herb and berry in this package is drawn at run time from a species recipe and one integer. There is no sprites/ directory, because there is nothing to put in one.
var _sp = frg_specimen(FRG_CHANTERELLE, npc_seed); // a species + a seed -> an individual
frg_draw(_sp, x, y, 180, 240); // draw it
frg_specimen_bruise(_sp); // cut it. the field test.
Your fortieth chanterelle is still a chanterelle, and is still not the same picture
A sprite pack gives you forty PNGs, so the player learns the picture instead of the species. A pure generator fixes that and breaks something worse: if every mushroom is rolled from a seed there is nothing stable to learn.
Forage splits it. The 48 species are authored recipes. The individual is generated from (species, seed): its size, the waviness of its margin, the lean of its stem, its tone, how far the insects got into it. Age it, soak it, frost it or cut it and it re-derives the same individual rather than swapping to a different drawing.
Twenty lookalike pairs, and four of them have no tell until you cut them
Twenty of the forty-eight are one half of a pair: two things that look almost the same, where one is food and the other is not.
- Field Mushroom / Destroying Angel - a ragged sac at the base
- Chanterelle / False Chanterelle - blunt forking ridges, not blades
- Bilberry / Deadly Nightshade - one berry, or a cluster
- Parasol / Green-spored Parasol - cut it, and one of them reddens
- Wild Carrot / Hemlock - a hairy stem against a smooth blotched one
Eight species are deliberately unmistakable, because a world where everything might kill you teaches paralysis rather than skill. The fly agaric is one of them, and it is still toxic.
Identification is deduction, not a dice roll
The cheap way to build this is a skill check that prints "you think this is a chanterelle (72%)". That is an inventory system with mushroom art on it.
Forage models the observations. A find starts as a silhouette and is consistent with everything that could look like that. Look closely at the cap, turn it over, dig out the base, cut it - each act exposes different fields and narrows the set. Measured in-engine on every build, mean species still consistent with a find:
silhouette 4.83 -> surface 3.96 -> underside 1.42 -> base 1.17 -> cut 1.00
worst case 13 1
The volva sits at dig it out on purpose. A destroying angel picked by snapping the stem off at ground level leaves its single most reliable feature in the soil.
A world, not a spawn table
Seven habitats, a deterministic year of weather, and soil moisture that remembers. Fungi come in flushes: the ground has to have been wet, and then about nine days have to pass. The same wood is empty on the wrong week and covered on the right one.
- Rain is clustered, not rolled per day - weather arrives in spells and then goes away for a fortnight
- Soil decays at a rate the habitat sets. Peat holds water; a chalk down does not
- Fungi read the ground; plants read the calendar. A bilberry is on the bush because it is ripe
- Habitats have edges, and the edge is the richest and most confusing place there is
- Condition comes from the weather that made it: frosted, waterlogged, going over, sun-bleached
What is in it
84 authored components - 48 species - 20 lookalike pairs - 7 habitats - 10 Oklch palettes - 6 conditions.
12 cap forms, 6 surface treatments, 8 hymenophores, 8 stipes, 6 veil remnants, 10 leaf forms, 4 phyllotaxies, 4 stems, 8 fruits, 8 inflorescences. Plus a field-guide card drawn entirely in GML - name, binomial, edibility band, severity pips, a wrapping twelve-month season bar and the tell line.
Those counts multiply into a very large number and this page is not going to quote it. A combination count is not a count of drawings. What is measured instead: all 1,108 unrelated species pairs are checked in-engine on every build and none may collapse into the same shape.
Verification, stated honestly
GML cannot be unit-tested outside the engine. So this package ships its own suite and runs it inside a real build: Forage.exe -selftest. 73 assertions, 0 failures, on runtime 2024.14.4.268. Among them: every pair separated above a floor and below a ceiling; each pair's tell measurable in the region it names; each tell decided by the act its card names; no unresolvable candidate set spanning two levels of danger; every specimen contained at every growth stage.
Every image on this page was rendered by the product itself, through the same draw path you call, inside a real Igor build.
Compatibility
GameMaker 2024.14+, built and gate-tested against runtime 2024.14.4.268. Pure GML - no extensions, no DLLs, no external dependencies. Every global and macro is namespaced frg_, because GML's global namespace is flat. Import with Tools > Import Local Package, then open rm_forage_demo and press Play.
What you get
Forage.yymps- the local package, 20 resources- Raw readable GML, ~7,000 lines, documented header block on every public script
- A four-page runnable demo room: cap forms, species browser, the pair plate, and a live patch with a year-of-flush strip
- Readme and a commercial licence
This is a game system. Nothing in it is foraging advice. The species are real and the tells are real, which is exactly why this needs saying: a game is not a field guide, a drawing is not a photograph, and no part of this package is safe to eat by. Do not use it to identify anything in the real world.
More GameMaker systems from Core Systems Asset Factory: Meridian (procedural skill trees), Effigy (every NPC draws its own portrait), Shoal, Affliction. Play a free game built by the same studio: ANATOMIST.
| Published | 2 hours ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Genre | Simulation, Survival |
| Tags | Crafting, Exploration, Forest, GameMaker, Generator, gml, nature, Procedural Generation |
| 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 $12.99 USD. You will get access to the following files:




