Chitin - Insects That Draw Their Own Shells
A downloadable asset pack
A picture of a beetle cannot be a different species.
The insect shelf for GameMaker is two listings. Chitin is not a third sprite pack: it is the animal computed from numbers, plus the field layer, the catching loop and the cabinet that make it a game rather than a folder of pictures. There is no sprite, no spritesheet, no atlas and no texture page in this package. sprites/ does not exist.
48 species · 6 body plans · 8 patterning programs · 8 antenna forms · 5 leg forms · 7 sculptures · 18 cuticles · 3 wing shapes
8 habitats · 6 seasons · 6 times of day · 4 weathers · 6 escape programs
A species is a set of numbers
plan cut hk pk ak lk bk sculpture n antenna len leg mandible eye pattern n
Change ak from 0.94 to 1.36 and the beetle becomes round. Change lk from 1.22 to 0.72 and a splinter becomes a ladybird. The two ladybirds in the roster share every body number to the digit and differ only in their pattern program, because that is genuinely the difference between a seven spot and an eyed ladybird. Copy either row, change one field, and you have a species that has never existed and still looks like it belongs.
Structural colour, which is a program and not a palette
A jewel beetle is not green. It is a diffraction grating that returns green at one angle and copper at another, and a still picture of one cannot say that. Chitin ships the program: a narrow band of interference moving across the shell, never a hue drifting over the whole of it. Press S in the demo room to stop it and see what it was doing.
The half that makes it a game
Where and when. cht_field_now(habitat, season, daypart, weather) returns what a player would actually meet, with a density rather than a boolean, because every species is present across its whole flight period and there is a month when there are most of them. A clear midday meadow in high summer is busy. A pine wood at night in autumn rain is empty, and that is a real answer.
The forty-eight rows are authored from real natural history, not hashed from an index. The peacock and the brimstone are hibernators: they fly in early spring as overwintered adults, vanish while the next generation is in its chrysalis, and fly again from late summer. Five of the twelve moths fly by day. The great diving beetle is not in a pine wood.
The approach. You do not catch an insect by being fast. You catch it by being slow, and then fast once. Every animal carries an alarm radius and watches how you move, so the same beetle lets you stand over it or is gone before your arm moves, depending only on how you walked. That is two numbers per species, which means the difficulty is the animal and not a slider. Measured in-engine over all 48: a careful approach got closer on 24 of them and further on none, best case 1.24 body widths on the green tiger beetle.
Identification. cht_field_separates(12, 13) returns ["marking"] — one word, and it is the whole answer. A wrong guess tells the player which field marks separate the two animals and whether the mistake was a defensible one, so it teaches something true instead of buzzing. Across all 1,128 pairs, no two species share all six field marks, and that is asserted in-engine.
The cabinet. A drawer the player fills, scored by rarity and catch difficulty — both derived from the field data, so editing a flight period moves the score and never leaves a stale table. The empty compartments are drawn, not listed: a steel pin and a blank determination label, in a full-size compartment. The gaps are the motivation.
Quickstart
- Import
Chitin.yymps(Tools → Import Local Package, select all). - Open
rm_cht_demoand press Play. TABcycles four views: a specimen, its field-guide page, the beetle drawer and the butterfly drawer.LEFT/RIGHTchange species,Sstops the shimmer.
The screenshots on this page are those four screens, rendered by the same functions.
Verification, stated honestly
GML has no unit test outside the engine — no headless runner, no mock, no assertion library. What this package has instead is cht_selftest, run inside a real Igor build: 6,350 assertions, 0 failures, on runtime 2024.14.4.268. It sweeps all 1,128 species pairs for collisions, checks every body plan closes at both ends, checks every mark on a wing fits the wing at every station it covers, checks the corpus is deterministic across identical calls, and checks that a careful approach never costs you ground.
What it cannot see: a fill rule, a draw order, a colour on a page, or a picture. Every visual defect this package has had was found by rendering a sheet and looking at it, and that is said here rather than left for you to discover.
Compatibility and namespacing
GameMaker Studio 2.3+ / GameMaker 2024.x, built and gated against runtime 2024.14.4.268. Pure GML, no extensions, no DLLs, no platform-specific code.
Every script, macro and global is prefixed cht_ / CHT_. GameMaker's global namespace is flat and a collision inside your project is a support problem nobody can debug remotely. Nothing here is named beetle, insect, wing or catch.
Everything in cht_field, cht_catch and cht_cabinet is a pure function — no instance variables, no draw calls, no room state, nothing random at query time.
Licence
Use it in unlimited games, commercial or free, forever. Modify it however you like; it ships raw and readable on purpose. Everything it draws for your game is yours, with no attribution and no revenue share. Do not resell the package itself. Full terms in LICENSE.txt.
The package contains no third-party code. It ships two font resources built from Open Sans (Apache-2.0, notices included) which are used for captions only — species names, field marks, drawer labels. No animal in this package draws a glyph.
AI disclosure: this package was written with AI assistance. The GML is AI-written and the artwork is drawn by that GML, so the graphics are declared AI-generated even though no image model was involved and no image file ships.
Also from CSAF, for GameMaker
Shoal — fishing is the same idea pointed at water: a species is a base form crossed with a pattern, a fin or wing set and a palette, so the corpus is combinatorial rather than drawn by hand.
Repast — cooking · Livery — interface themes · Lode — minerals and ore · Welkin — skies and weather · Armoury — weapons · Muster — tactical terrain · Horologe — mechanisms · Barrage — bullet patterns
| Updated | 15 hours ago |
| Published | 6 days ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Made with | GameMaker |
| Tags | 2D, collection, creature, GameMaker, Generator, gml, insects, nature, Procedural Generation, sourcecode |
| Languages | English |
| 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 $10.49 USD. You will get access to the following files:







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