Shoal - A Fishing System That Draws Its Own Fish
A downloadable asset pack
Shoal is a complete fishing subsystem for GameMaker — and every fish in it is drawn from geometry at run time. There is no sprites/ folder in this package. There is no image file of any kind.
What is feeding here? Biomes, seasons and the hour decide. Can you land it? A tension minigame decides that. What do you get? A specimen card with the fish drawn on it, framed by its own rarity.
96 silhouettes, 9,600 species, 20 authored components
species = base form (12) x pattern (10) x fin set (8) x palette (10)
That is 9,600 catalogue entries — and it is a multiplication, not a folder of drawings, so the claim carries its own arithmetic. The figure that actually bounds legibility is 96: a fish's identity at small size is carried by body form x fin set alone, because a pattern and a palette change no outline. Those 96 were rendered onto a contact sheet and looked at, one by one. It is the second image on this page.
What is in the box
- 12 base body forms, each authored as a pair of independent profile envelopes — so a hatchet's flat back over a deep keel and a flathead's forward mass are real shapes, not one silhouette mirrored.
- 8 fin sets, each sized from the body it attaches to. One piece of code makes a sail look right on an eel 0.10 deep and on a disc 0.56 deep.
- 10 patterns, clipped to the body IN GEOMETRY — no surface, no blend mode, no mask. It works over your water shader, over a reef, over another fish. A painted-and-masked pattern only works over a known flat background; this one has no such limit.
- 10 palettes computed in Oklch. Body, belly, fin, mark and eye are derived from three numbers per palette, so "two steps darker" means the same amount of darker on an abyssal blue as on a volcanic red.
- A real water model. 5 biomes x 4 seasons x 4 time bands over 110 authored weights. Spawning livery appears in spring and never otherwise; ice livery is a winter fish.
- Rarity is DERIVED, never declared. No species carries a rarity field. A catch's tier comes from how unlikely its combination was in that water at that time — so the same fish is common in the reef and scarce in a river, without either fact being written down twice.
- A tension minigame with no engine calls in it.
sho_fight_step(fight, delta, reeling)takes a delta and a boolean. Keyboard, gamepad, touch, a held button, a rhythm of taps — your input, not ours. - Records, codex, per-biome completion, and a plain-text save you can read, diff and hand-edit. Four component ids per entry, because the corpus is deterministic.
Compatibility
GameMaker (GMS2 runtime), built and verified against 2024.14.4.268. Pure GML — no extensions, no DLLs, no external dependencies. Import Shoal.yymps with Tools → Import Local Package → Add All, open rm_shoal_demo, press Play.
Every global and macro is namespaced sho_ / SHO_, because GML's global namespace is flat and a collision in your project is a support ticket nobody can debug remotely. The package creates exactly one global: global.sho_profile_cache. Nothing here patches or replaces a built-in.
Verify it yourself
Shoal.exe -selftest 1,480 in-engine assertions, headless Shoal.exe -bake renders this page's gallery from the shipped GML
Both ship in the package and cost nothing at run time. Every image in this gallery was rendered by -bake, through the same public functions the Readme documents — not by a previewer, and not by hand.
Also from CSAF for GameMaker
Crest — faction, reputation and composed heraldry · Meridian — constellation skill trees · Trove — inventory · the full catalogue
Raw, readable GML. Minification would be a defect — you are a developer and you have to be able to read, debug and extend every line.
| Published | 15 hours ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Tags | 2D, Animals, Fishing, GameMaker, Generator, gml, minigames, Procedural Generation, sourcecode, Vector |
| 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 $14.99 USD. You will get access to the following files:
Development log
- Shoal is live and every fish in it draws itself2 hours ago





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