Back to skills
SKILL.md
Fabius Ludus
ASecurityfabius's game-craft layer: small games that are fun and ship. Core loop first, juice, explicit state machine, pixel-art lane, one balance knob at a time, jam-sized scope. For any game, mechanic, playable, toy or win/lose/score state.
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added September 3, 2026
Works with
Security analysis
100/100Pro scans all 4 files and shows the line behind each finding
npx -y skills add shear559/fabius --skill fabius-ludus --agent claude-codeAre you the author of Fabius Ludus?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/shear559-fabius-ludus)---
name: fabius-ludus
description: >
fabius's game-craft layer: small games that are fun and ship. Core loop first, juice, explicit
state machine, pixel-art lane, one balance knob at a time, jam-sized scope. For any game,
mechanic, playable, toy or win/lose/score state.
when_to_use: >
"make a game", "the loop isn't fun", "add juice", "screen shake"
license: UNLICENSED
metadata:
author: shear559
---
<!-- © 2026 shear559 · fabius · provenance fab1-6bbf82d118bce2cee9d7ac71f034fa26 · release evidence: PROVENANCE.md · github.com/shear559/fabius -->
# Fabius Ludus — the loop is the game; everything else is paint
*Ludus* — the game, and the school where you drill it. A game lives or dies on one thing: the second-to-second loop. Art, menus, story, and meta are paint on top of a loop that's either fun or isn't. Same Fabian stance: **scout wide on what the game could be, strike narrow on the one loop that's fun with grey boxes.** `fabius-parcus` owns YAGNI; this layer owns what makes play feel good.
## 1. Find the core loop first
Name the ~10-second cycle in one line: **act → feedback → reward → again.** *(Move → land hit → number pops + enemy dies → do it again.)* Build *only* that, with grey boxes and placeholder sound, and pass one observable gate, not a feeling: **a tester who did not build it restarts the grey-box loop unprompted at least three times in one sitting — record the count.** No art, no menu, no progression, no content until the loop is fun unpainted. A beautiful game on a dead loop is a dead game (`fabius-parcus`: the content doesn't need to exist until the loop holds).
## 2. Game feel (juice) — deliberate, not decorative
A flat loop becomes a fun loop through feedback on every action. The cheap, high-payoff moves:
- **Response on every input** — a sound and a visual the instant the player acts; nothing should feel silent.
- **Hit-stop** — a few frames of freeze on impact sells weight.
- **Screen-shake — sparingly** — a small kick on big events; constant shake is noise.
- **Easing, not linear** — things ease in/out; anticipation before, follow-through after.
- **Particles & pops** — a burst, a number, a flash on reward.
- **Juice the verbs the player does most** — the core action gets the most feedback budget.
(Animation *laws* — restraint, transform/opacity only — are `fabius-decor`; the game-feel *specifics* above live here. One micro-language, calm baseline, punch on the moments that matter.)
## 3. State as an explicit machine
No boolean soup. Model game state as a named finite-state machine and draw the transitions:
```
boot → menu → play → (pause ⇄ play) → win | lose → menu
```
Each state owns its update/render/input; transitions are named events, not scattered flags. (`fabius-parcus`: no `isPlaying && !isPaused && !isDead` tangles; `fabius-disciplina`: a state diagram you can hold in your head.)
## 4. Hold the pixel-art lane
For a pixel game, the discipline *is* the look:
- **One fixed palette** — lock the project's own brand palette and identity up front, then don't drift. One palette, one identity, applied consistently.
- **Integer scaling only** — 2×, 3×, 4× — never fractional, or it shimmers.
- **Snap to the pixel grid — but only what's axis-aligned and unscaled** — positions round to whole device-pixels; sub-pixel motion blurs the crispness that *is* the aesthetic. Rounding a *rotating or scaling* sprite trades that blur for vertex wobble, so let those render smooth (engines now ship a smooth-pixel-art mode for exactly this) instead of forcing them to the grid.
- **One unit size** — a consistent base tile/sprite size; the grid is the rhythm.
(On RTL surfaces — Hebrew, Arabic — the UI keeps its own reading direction: left-pointing arrows are correct for "back/next" in that layout; don't flip them.)
## 5. Balance one knob at a time
Tune a single variable, playtest, lock it, move to the next. Changing three at once means you learn nothing from the result. Shape the difficulty curve as **teach → test → twist**: introduce a mechanic safely, demand it, then complicate it. The fun is in the climb, not the wall.
## 6. The studio pipeline — how a game ships under fabius
A game is a *vertical*: it composes several layers behind one goal. The dispatch order:
```
fabius-ludus → the loop + the feel (this layer leads)
→ fabius-disciplina → plan the build as step → verify; prove it runs
→ fabius-decor → menus, HUD, the framing UI (tokens, states)
→ fabius-cohors → only if NPCs/enemies need real agent behavior
→ fabius-parcus → underneath all of it (lean code, reach for the engine)
```
This is the **studio pattern**: a domain skill leading a mini-pipeline. The router composes it; you don't pick one layer (routing-policy R13).
## 7. Scope the jam
Pick the **smallest shippable game that proves the loop** — a jam-sized cut. One mechanic done well beats five half-done. Cut ruthlessly: every feature past the core loop is a question of *does this earn its build cost?* Ship the vertical slice, then decide what's worth adding.
## When NOT to build the engine
- **Use the engine/platform; don't hand-roll it.** Physics, ECS, input, audio, the render loop — reach for the existing tool (`fabius-parcus` ladder: platform before app code). Hand-rolling a physics engine for a small game is the over-build trap in disguise.
- **Don't add systems the loop doesn't need.** No inventory, no skill tree, no save system until the core loop has earned them.
## References
- Core-loop template, the juice checklist, the FSM skeleton, the pixel-art constants, and jam-scoping rules → `references/game-playbook.md`.
- Engine recipes, feel patterns, and the pixel-art kit → `references/engine-recipes.md`, bundled and indexed by [CORPUS.md](../../CORPUS.md); page in the one slice the task needs (R9 · M9).
- The verified engine + asset stack — engines (Godot/Phaser/KAPLAY/Bevy), pixel/level/audio tools, CC0 asset sources (Kenney/Quaternius), and game-relevant HF models (with the OpenRAIL / FLUX-dev-base license traps flagged) → `references/game-toolkit.md`.
Boundary: lean code is `fabius-parcus`; plan + prove is `fabius-disciplina`; UI/animation laws are `fabius-decor`; enemy/NPC agents are `fabius-cohors`. This layer owns the loop, the feel, and the balance. The user's design and brand always win; `stop fabius` drops the stance (kill-switch owned by `fabius`).
Files in this skill
- SKILL.md
- references/engine-recipes.md
- references/game-playbook.md
- references/game-toolkit.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.