Crest - Faction, Reputation and Composed Heraldry for GameMaker
A downloadable asset pack
Register a faction. It arrives with a coat of arms nobody drew.
crs_faction_add("guild", "The Salt Guild", ["merchant", "coastal"]);
That house now has a banner, a standing, a tier, relations and a seat in the panel — composed from its own identity, in pure GML, with no sprite, no atlas and no texture page anywhere in the package.
The part a generator cannot do
You can already download a free coat-of-arms generator. It gives you a picture. Then you still owe your game everything that makes a faction a faction — and a new picture, drawn by hand, for every house you add after launch.
When a house splinters, the cadet branch inherits its parent's arms unchanged and adds one mark of difference, the way real heraldry says "same blood, junior line":
crs_faction_schism("crown", "crown_cadet0", "The Exiles", 0.5);
Your player reads the relationship off the banner before a line of dialogue explains it. That works because arms here are a struct derived from a faction, not an image — inheriting them is a copy and the difference is one field. A generator that hands you a PNG cannot do it at all.
What is in the box
- 44 charges, hand-authored in six orders — beast 9 · bird 6 · arms 8 · craft 8 · sacred 7 · land 6. Every one drawn from geometry and tested for legibility at 20 pixels, the size a faction list actually renders it.
- 8 shield shapes — heater, kite, oval, lozenge, banner, pennon, roundel, targe — each with its own charge placement and its own measured room.
- 14 ordinaries and divisions, clipped to the shield in geometry rather than masked.
- 9 tinctures, including ermine and vair drawn as real patterns, computed in Oklch.
- 6 marks of cadency, wired to schism.
44 × 8 × 14 = 4,928 distinct shield layouts before a single tincture is chosen.
The rule of tincture, enforced rather than decorative
No metal on metal, no colour on colour — the 800-year-old legibility rule, obeyed by the generator itself. Crest never rolls a combination and retries; it picks each tincture from the set that is legal against what that element actually sits on. The in-engine suite derives 400 coats and asserts none breaks the rule, then asserts the rule itself still refuses metal-on-metal — because a check that can only say yes is not a check.
The system underneath
Standing from −100 to 100 · six named, renameable tiers · gates · shop price multipliers · tier-appropriate greetings · spill, so a gain with one house moves the houses around it · schism and merge, with the arms following the history · one-string save/load that refuses a mismatched registry rather than half-loading · and a faction panel — list, detail card, blazon, hit-testing — drawn in GML from the same palette layer.
crs_arms_blazon() returns the proper heraldic description of any arms; crs_arms_describe() returns the same thing in plain English; crs_arms_problem() tells you why a hand-written coat is illegal, in one call.
Compatibility and install
GameMaker 2024.14+. Built and verified against runtime 2024.14.4.268 by a real Igor package build. Pure GML — no extensions, no DLLs, nothing platform-specific.
- Tools → Import Local Package, choose
Crest.yymps, Add All. - Open
rm_crest_demoand press Run.
Every function, macro and global is namespaced crs_ / CRS_, so it cannot collide with anything in your project. Every public script carries a header block. The source ships raw and readable because you are going to extend it.
In the demo: arrow up/down select a house · left/right move your standing · S splinter the selected house and watch the banner inherit · R reset.
Verified
1,405 in-engine assertions, run against a real compiled build — corpus counts, the 20px silhouette separation, per-shield geometry contracts, the rule of tincture over 400 derived coats, cadency placement, derivation stability and save/load round-trips.
Every image on this page was rendered by the product itself, by the shipped executable through the same functions you call.
More from CSAF for GameMaker
Every one of these draws its own art from code — no sprite sheets to commission, no atlas to maintain:
- Meridian — a skill tree that draws its own icons: 480 procedural marks, four layouts, full progression.
- Grimoire — a complete spell and casting system that draws its own seals. 8,064 generated.
- Trove — 75 item icons drawn from code plus a spring-animated inventory. 900 variations, zero sprites.
- Kinetic UI — menus, HUDs and modals drawn from primitives and animated by real springs.
Art packs, and tooling for RPG Maker MZ, Unity and Unreal — the full catalogue is here.
| Updated | 1 hour ago |
| Published | 1 day ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Tags | 2D, Fantasy, Game Design, GameMaker, Generator, gml, Medieval, Procedural Generation, sourcecode, User Interface (UI) |
| 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
- Crest is out. The banners compose themselves.3 hours ago









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