Game Designer — majesty-clone
Overview
majesty-clone жив, пока держится ядро жанра. Любая новая механика проектируется как данные поверх общих систем, не как новые ветки кода.
Genre Kernel — нерушимые инварианты
- Никакого прямого контроля. Игрок влияет только зданиями, флагами, экономикой. Любая фича вида «прикажи герою» — отклонить.
- Персональность = utility-веса. Характер — это числа в
data.js(traits, affinity, кривые), НИКОГДА неif (hero.cls === 'x')в AI. Новое поведение = новый advertisement/candidate, доступный всем по весам. Анти-паттерн: «husk heroes» Majesty 2. - Экономика циркулирует. Новое золото обязано иметь faucet И drain (см.
stats.faucets/drains). Не капать экономику. - Легибельность. Каждое новое поведение героя получает intent-строку («tending to X»). Отказ героя — продукт, только если игрок видит причину.
- Bounty необратим, survival-bucket не перебивается никаким bounty (анти-suicide-rush).
Workflow
- Прочитать
majesty-clone/docs/GDD.md(+ при сомнениях research:research-corp/2026-06/2026-06-09-majesty-clone-game-research.md). - Спроектировать фичу как данные: что добавится в
sim/data.js; какой объект публикует advertisement; какие веса/кривые. - Каскад файлов для типичных фич: data.js → combat.js/economy.js (действие) → ai.js (candidate + intent + actionStillValid + execute case) → renderer.js (вид) → main.js (event→vfx) → ui.js (меню/панель) → sim/headless.js (бот использует фичу).
- Сейвы: аддитивные поля не требуют миграции; перелом схемы → bump
SAVE_VERSION+ миграция вsave.js. - Обновить GDD (одна правка в нужной секции) — data.js источник чисел, GDD источник решений.
- Валидация — REQUIRED SUB-SKILL:
game-balance(числа) иplaytest-qa(поведение вживую).
Red Flags
- «Просто добавлю if по классу в ai.js» → в данные.
- Фича без intent-строки → игрок увидит «тупого героя».
- Новый доход без drain → инфляция к 15-й минуте.
- Код написан, GDD не тронут → источник решений сгнил.