>if skill == cleave and support == wide_sweep:
make cleave radius biggerif skill == cleave and support == focused_edge:
make cleave smaller but stronger
if skill == cleave and support == twin_cleave and rule == guarded_arc:
quietly move to the woods
>That can work for a demo. It gets rough once the game has lots of skills, supports, items, statuses, and encounter rules.
Laughs in path of building : https://github.com/PathOfBuildingCommunity/PathOfBuilding-Po...
Path of Exile has deeper mechanics than pretty much every other ARPGs out there, PoB covers the vast majority of them, in a beautiful mess of about 20k lines of calculations in various files.
Making it a "Compiler problem" makes it an unsolvable one in acceptable time.
Fun fact: it directly parses mods from their ingame description into a mod database that is basically a stringly typed list of whatever increases also. : https://github.com/PathOfBuildingCommunity/PathOfBuilding-Po...
Second fun fact: that's the one for Path of Exile 2, that has different mechanics. The PoE1 version is the same thing, except even larger.
So yeah, don't bother about making a compiler. Your compiler will figure out micro upgrades and die in three months when the game adds incompatible mechanics. Stay agile and on your feet.
5/24/2026
at
12:59:18 PM
Yeah, I think this is the real danger with this kind of approach: mistaking a useful pipeline for a universal mechanic language.I’m not trying to build a PoE solver or make every future mechanic fit a clean algebra. The compiler analogy is smaller: authored content emits facts, rows keep provenance, caches are rebuilt in a known phase, and combat consumes the resulting runtime data.
The part I want to avoid is common mechanics becoming direct skill/support/item/status branches inside every skill implementation.
But I agree the weird cases need escape hatches. Some rules should probably be explicit hooks, and some unique mechanics may just deserve custom resolution code.
The interesting design question to me is where to draw that line: what belongs in the boring fact pipeline, and what should stay as hand-written mechanic code?
by mitander