Project: Gatcha Gauntlet

A complex virtual lottery and gacha simulation focused on scratch ticket interactions, actual symbol libraries, and an evaluator tuned to keep near-misses psychologically readable instead of flatly random.

The important part here is not just the math. The ticket uses a specific runtime art library, and the evaluator is tuned around those pieces so the board feels tense rather than empty.

Actual Runtime Weights

The live `ScratchRules.asset` is weighted Berries `3`, Gold `2`, Sigils `1`, Chalice `1`, and Duds `14`, which creates a dud-heavy board that still needs to feel exciting.

Anti-Clustering

If a generated ticket comes up all duds, `ScratchEvaluator.GenerateGrid()` forcibly promotes two spaces to non-dud symbols so the player gets tension instead of a dead board.

Payout Model

The board resolves through column pairs, four-wide row matches, diagonal specials, and optional column multipliers. The art and the economy are linked on purpose.

Assets Used In-Game

Unscratched ticket cover texture from Gatcha Gauntlet.

Ticket Cover
The cover texture referenced by `ScratchArtLibrary.asset` before the scratch shader reveals the grid underneath.

Berries symbol texture from Gatcha Gauntlet.

Berries
A lower-tier winning symbol with frequent appearances and modest pair payouts.

Gold coin symbol texture from Gatcha Gauntlet.

Gold
The mid-tier gold symbol used by the payout evaluator for stronger column rewards.

Sigil symbol texture from Gatcha Gauntlet.

Sigil
A rarer symbol that sharpens the psychological near-miss behavior of the ticket grid.

Chalice symbol texture from Gatcha Gauntlet.

Chalice
The highest-value standard symbol before the full-house bonus and column multipliers kick in.

Dud symbol texture from Gatcha Gauntlet.

Dud
The dud texture is intentionally overrepresented in the rules asset, which is why anti-clustering rescue logic matters.

Systems Design & Architecture