Meridian - Procedural Skill Trees for GameMaker
A downloadable asset pack
Your skill tree needs forty icons. This one draws them.
Every progression system you can buy hands you the graph and the points economy, and then asks you for an icon per node. A modest tree has forty nodes. Forty icons is a commission, an art pack, or forty evenings — and it is exactly why so many otherwise-finished skill trees ship with forty coloured squares in them.
Meridian draws the marks itself. Sixty hand-authored sigil motifs across eight discipline palettes — 480 distinct marks — generated from geometry and colour maths at draw time. There is not a single PNG in the package. No atlas, no texture page, nothing to disturb your project's sprite packing, and every mark is exact at 24 px and at 240 px because there is no image to scale.
You never type a node position
Declare what depends on what. That is the whole authoring step.
mer_tree_add(tree, "cleave", { name: "CLEAVE", maxRank: 3, requires: ["edge"],
stat: "power", value: 3 });
Positions are derived from the prerequisite graph — which is why inserting a node moves everything downstream out of the way on its own, instead of forcing you to re-type nine pairs of coordinates. It is also why the same graph lays out four completely different ways: Constellation · Branching · Radial · Grid, one function call each.
The parts that are easy to get wrong, already handled
- Refunds that refuse to orphan dependants. Hand back the last rank of a node whose children are purchased and the player is holding skills they no longer qualify for. Meridian refuses, and tells your UI in advance so the button can be greyed rather than failing under the player's finger.
- Atomic respec. Deliberately not a loop over "refund" — that leaves players half-respecced.
- Saves that survive you changing the tree. You will rename a skill, cut one, or rebalance a max rank. When that old save comes back, Meridian reconciles it against the current graph and returns the orphaned points to the pool and reports what happened, so your game can say so out loud. The alternative is a player who is simply four points short with no explanation — the bug report nobody can reproduce.
- Concave polygons render correctly. Filled shapes are ear-clipped, not drawn as a triangle fan. That matters because this package invites you to author your own marks, and a fan silently mangles any shape that is not star-shaped about its first vertex.
- Prerequisite cycles are detected and reported, and still produce a usable layout.
It moves like something expensive
Hover, pan and zoom run on a spring integrator, not a tween. A spring has no duration and no schedule — it holds position and velocity and can be retargeted every frame, so sweeping the pointer across six nodes glides instead of restarting six animations. Connectors on owned edges carry a travelling pulse of light, which is the only thing on screen that tells a player which way progression flows. Nodes arrive in a staggered cascade from the roots outward. Buying a rank sends a ring out from the node.
Retheme it in six lines
A theme is six seed colours; roughly twenty further roles — panel edges, gradient stops, tracks, hover states, three status colours — are derived from them by colour maths. Four themes ship (Violet, Ember, Terminal, Frost). The discipline palettes stay put when you switch, because a discipline means fire or frost and a theme does not.
What's in the box
- 60 sigil motifs, hand-authored
- 8 discipline palettes
- 480 distinct marks
- 0 sprites in the package
- 4 layout engines · 4 themes
- 108 public functions, 36 of them pure and engine-free
- 3,631 lines of raw, readable GML across the eight library scripts, plus a 679-line demo object (4,310 total, counted with
wc -lover every shipped.gml)
Three node tiers drawn differently. Four node states. A live detail panel that renders the same
geometry at 120 px that the node renders at 38. A 61-glyph vector stroke typeface. Named stat
aggregation, so your combat code asks the tree for "crit" and never needs to know the
tree exists. And a runnable demo room whose Create event is a complete worked
example of the entire API.
Honest notes
- Built and compiled against GameMaker 2024.14 (the current stable LTS-line runtime), pure GML, no extensions. Verified by a headless Igor build: exit 0, 0 errors, 0 warnings, 203 resources.
- GML cannot be unit-tested outside the engine. There is no automated behavioural test suite here, because GameMaker provides no way to run one. Verification is the clean compile plus the demo room, and every screen in the gallery was rendered from the real executable and inspected. Said plainly rather than papered over.
- Windows was the compile target. The code is plain GML with no platform-specific calls and should build anywhere GameMaker does, but only Windows has actually been run.
- No frame-rate figure is claimed on hardware other than the machine it was built on.
AI disclosure: every line of GML in this package is AI-written, and the cover and store images are generated. Tagged truthfully on this listing.
| Published | 21 hours ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Corey & Stephanie's Asset Factory |
| Genre | Role Playing |
| Tags | Asset Pack, GameMaker, gml, Graphical User Interface (GUI), Procedural Generation, progression, skill-tree, 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 $24.99 USD. You will get access to the following files:








