From 50151743a06770c1f01458ff0f2b1146e7b2c70f Mon Sep 17 00:00:00 2001 From: Emil Shanaty Date: Fri, 30 Oct 2026 02:02:49 +0300 Subject: [PATCH] Add game-designer skill Design-first gates for game work (fantasy, core loop, repeated decision, feel numbers), anti-convergence against the default arena shooter, a real browser as the verification loop, and a stop rule so verification does not turn into token burn. Includes evals from two runs of 11 prototypes. --- README.md | 21 +++++++++++++++ game-designer/README.ru.md | 40 +++++++++++++++++++++++++++ game-designer/SKILL.md | 51 +++++++++++++++++++++++++++++++++++ game-designer/evals/README.md | 41 ++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+) create mode 100644 game-designer/README.ru.md create mode 100644 game-designer/SKILL.md create mode 100644 game-designer/evals/README.md diff --git a/README.md b/README.md index 3742eed..f708565 100644 --- a/README.md +++ b/README.md @@ -37,3 +37,24 @@ agent-swarm/ ├── references/ # только domains, prerequisites, product quality, visual testing └── scripts/audit-scope.mjs # проверка ownership ``` + +## game-designer + +Скилл для геймдизайнерского мышления: сформулировать игру до кода и проверять её живой игрой, +а не тестами логики. Шесть секций — фантазия и первые 30 секунд, core loop, повторяемое решение, +числа ощущения, анти-конвергенция, условие остановки, отчёт в дизайнерской форме. + +Без скилла агенты сходятся на арене с волнами и NEON (5 из 6 игр в контрольном прогоне); +со скиллом те же агенты выдали 5 разных жанров и ноль NEON, но стали дороже в 3.6 раза. + +- [Описание на русском](game-designer/README.ru.md) +- [Инструкции скилла](game-designer/SKILL.md) +- [Evals: два прогона, 11 прототипов](game-designer/evals/README.md) + +### Установка + +```sh +git clone https://git.shanaty.ru/Emil_Shanaty/skills.git +mkdir -p ~/.agents/skills +cp -r skills/game-designer ~/.agents/skills/ +``` diff --git a/game-designer/README.ru.md b/game-designer/README.ru.md new file mode 100644 index 0000000..ea98d83 --- /dev/null +++ b/game-designer/README.ru.md @@ -0,0 +1,40 @@ +# game-designer + +Скилл для геймдизайнерского мышления: заставляет сформулировать игру до кода и проверять её +живой игрой, а не тестами логики. + +- [Инструкции скилла](SKILL.md) +- [Evals: два прогона, 11 прототипов](evals/README.md) + +## Зачем + +Без него агент по умолчанию делает то, что дешевле проверить: арену с волнами, dash, партиклами и +апгрейдами. В контрольном прогоне 5 из 6 игр оказались такими, 4 из 6 названий начинались с NEON, +а «max thinking» дал самый большой объём кода при худшем соотношении «разговор про игрока / +разговор про код» (0.21) и не улучшил ни дизайн, ни оригинальность. + +Со скиллом те же агенты выдали 5 разных жанров (пейбл, головоломка про геометрию, дуэль на тайминг, +свинг с гравитацией, рост через поедание света), ноль NEON в названиях и отчёты в дизайнерской +форме: фантазия, первые 30 секунд, core loop, повторяемое решение, числа ощущения, что вырезано. + +## Что внутри + +``` +game-designer/ +├── SKILL.md # 6 секций: Frame, Cheap wins, Break the default, Verify, Stop, Report +└── evals/README.md # прогоны, цифры, что скилл сломал и починил +``` + +Правила узкие и короткие намеренно: скилл сужает внимание, а не выдачу. Как именно делать игру +очевидной — силуэты, подсветка цели, тизер атаки — остаётся за агентом. + +## Установка + +```sh +git clone https://git.shanaty.ru/Emil_Shanaty/skills.git +mkdir -p ~/.agents/skills +cp -r skills/game-designer ~/.agents/skills/ +``` + +Для DeepSeek Harness — та же папка, но в `~/.dsh/skills`. Вызов: `/skill:game-designer` или просто +поставьте задачу про игру — скилл подключится по описанию. diff --git a/game-designer/SKILL.md b/game-designer/SKILL.md new file mode 100644 index 0000000..fbc6170 --- /dev/null +++ b/game-designer/SKILL.md @@ -0,0 +1,51 @@ +--- +name: game-designer +description: > + Design games as a game designer, not as a feature builder. Use when designing, + building, reviewing or critiquing a game or any playful interactive system; when + a prototype runs but is boring; when several designs drift toward the same genre; + or when the user asks about fun, feel, core loop, difficulty or juice. +whenToUse: A game or playful prototype is being designed, built or critiqued, and the question is not "does it run" but "is it worth playing"; or several designs are collapsing into the same genre. +--- + +# Game designer + +Answer each line below before writing code. Do not move on while one is unanswered. + +## Frame + +1. **Fantasy** — "You are ___ who ___." One sentence. +2. **First 30 seconds**, as three feelings in order: curiosity → control → threat. +3. **Core loop** — verb → obstacle → reward → escalation. One sentence; if it needs two, it is two games. +4. **The repeated decision** — what the player weighs dozens of times, and what makes it hard. No decision means a toy, not a game. +5. **The verb's feel** — input → feedback → consequence, with numbers: ms to react, pixels of shake, hits to kill, sound length. + +## Cheap wins, in this order + +- Cut a mechanic: if the game is as good without it, it was decoration. Delete the most expensive decoration before adding anything. +- Scope: one screen, one mechanic, winnable in ≤2 min. Grow only after the loop is fun. +- Escalate by rearranging, not adding: the same rule under new pressure beats a new rule. + +## Break the default + +Arena survival + dash + particles + screen shake + upgrade cards is the model's default answer, not a decision. If your concept is that, change one axis — genre, input, time scale, emotion, fiction — and name it; or argue why this exact version wins over the others. + +## Verify with the game + +Logic tests prove the code runs; they prove nothing about fun, feel or speed. + +- Run it where the player runs it, then read a screenshot as someone who never saw the rules: can you tell what you do, what failing costs and what you are aiming at? If that answer comes from the title-screen text, the game is not legible — the screen has to carry the logic, not the prose. +- Measure real frame time with 30+ entities. A fake DOM/rAF harness reports success and still lags in a browser. +- Play 30 seconds. What did you want to do that the game refused? That is the next feature — often the only one. +- Difficulty is a curve: where it rises, where it breathes, where the player first fails for a reason they can name. + +## Stop + +- Done means the core loop holds and the report below is written. After that, do not touch the code. +- A check that found no failure is a reason to stop, not to check again. +- A check that found a failure: fix it once, then re-run that one check. +- Verification is not progress. If your last three actions changed no code, stop and write the report. + +## Report like a designer + +Core loop in one line; what the player does and feels; the one number you tuned; what you cut; what you would test with a real player next. A feature list is not a design note. diff --git a/game-designer/evals/README.md b/game-designer/evals/README.md new file mode 100644 index 0000000..194b4b9 --- /dev/null +++ b/game-designer/evals/README.md @@ -0,0 +1,41 @@ +# Evals — game-designer + +Два прогона на `deepseek-flash` в контейнере (pi, изоляция на папку, сеть открыта, thinking `off`), +один и тот же промпт: *«Create the best browser game you can. Single self-contained `index.html`, +no build step, no external libraries, no network, it must be playable»*. + +- **Run 0 — baseline.** 5 агентов + пилот на `max thinking`. +- **Run 1 — со скиллом.** 5 агентов, тот же промпт плюс `Use the game-designer skill.` + +Полные разборы: `RESULT-pilot-01.md`, `RESULT-run-1.md`, `RESULT-run-2.md` (в отдельном рабочем +каталоге экспериментов). + +## Жанровое разнообразие + +| | baseline | со скиллом | +|---|---|---| +| жанры | 5 из 6 — арена/волны с dash и апгрейдами | 5 из 5 разных: пейбл, головоломка про лезвия, дуэль, свинг, рост через поедание света | +| названия с NEON | 4 из 6 (два одинаковых — `NEON DRIFT`) | 0 из 5 | +| «неоновая» доля палитры (замер по скриншотам) | 99–100 % | 0 %, 0 %, 29 %, 100 % (бледный), 100 % | + +## Стоимость + +| | baseline | со скиллом | +|---|---|---| +| вызовов инструментов на агента | 34–166 | 207–453 | +| $ на прогон | 0.66 (6 игр) | 2.38 (5 игр) | + +## Что скилл сломал + +1. **Не было условия остановки.** Продолжение четырёх агентов на 30 минут дало 81M токенов и + **4 правки кода на 5.6 KB**: проверки, которые сами всегда проходят, не дают новой информации. + Исправлено секцией `Stop`. +2. **Тяготел к самоотчёту.** «Понятно ли, что делать» агенты закрывали абзацем текста на титуле. + Формулировка в `Verify` переписана: логику должен нести экран, а не проза. + +## Что осталось несломанным + +- Три из пяти прототипов не дошли до финального отчёта (лимит времени), их «непонятно как играть» + может быть частично следствием отсечки. +- Оригинальность выросла, играбельность просела: новые жанры требуют обучения, а обучения в скилле + нет намеренно — регламент заменяет живого игрока, а не заменяет его честно.