squad-proto/docs/00-overview.md
z.kirill 4382af2322 Документация: границы движка, работа через модель, дизайн игры до лейтгейма
18-engine.md    границы Tile2D, проекции 2D, формат проекта, второй проект
  19-agent.md     инструменты --tool, скиллы, терминал в редакторе
  20-gdd.md       акты, петли, рост отряда, закон масштаба, бюджет 200 часов
  21-damage.md    семь стихий, статусы, десять реакций, формулы, триггеры
  22-loot.md      редкости, аффиксы, артефакты, зачарования, материалы
  23-endgame.md   Бездна, мутации, лидерборды, 262 ачивки

Плюс правки 01/02/07/15/16/17 под переехавшие пути и новые правила забега.

Дизайнерская часть держится на одном законе: угроза растёт квадратично, сила
отряда — линейно с затуханием, разрыв закрывается ЗНАНИЕМ, а не числами. Из
него выведены и экономика опыта (41 млн против 44 млн дохода), и то, почему
реакции считаются от глубины, а не от урона оружия, и почему в Бездне
множитель HP разрешён, а во всём авторском контенте запрещён.

.claude/commands: скиллы /tile2d, /room, /floor — правила этого движка,
которые нельзя вывести из кода. Главное записано первым: не отчитываться об
успехе без прохода --tool validate.

Числа в этих документах — вход для инструментов, а не украшение. Расхождение
между таблицей и выводом инструмента означает, что неправ документ.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 21:07:45 +03:00

63 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 00 — Что это
Технический прототип **боевого ядра** 2D-изометрического sci-fi horror roguelite.
Доказывает ровно одну вещь:
> отряд из 5 агентов ведёт себя как «умная текучая сущность», которая сама
> расставляется так, чтобы атаковать и не задевать своих.
Это ядро — вехи M0M6, и в его рамках всё остальное намеренно не сделано.
Поверх ядра достроен игровой слой: твари, которые идут и бьют, каталог оружия,
снаряжение с инвентарём, главное меню и HUD ([13-combat.md](13-combat.md)).
Прежняя песочница с мишенями никуда не делась — она живёт под `--sandbox`,
и все критерии приёмки по-прежнему меряются на ней.
## Что есть
- 5 агентов, один диск отряда (якорь), три пресета строя (клин / линия / кольцо).
- Полностью **автоматическая** атака: игрок не нажимает «огонь» никогда.
- Проверка линии огня по своим, по стенам и по дальности (спек 6.3).
- Решатель огневых позиций с гистерезисом и коммитом (спек 6.5).
- Резервирование линий огня и расступание из чужих секторов (спек 6.6).
- Настоящие пули-снаряды, дружественный урон физически возможен (спек 6.9).
- Ручное прицеливание с назначенной целью и `Tab` (спек 6.8).
- **Ближний бой**: второй класс оружия с сектором замаха вместо линии огня,
тремя фазами удара и своим, большим кругом вокруг диска
([11-melee.md](11-melee.md)). В спеке его нет.
- Хоррор-слой: свет, туман войны, трассеры, напряжение
([10-atmosphere.md](10-atmosphere.md)). В спеке его тоже нет.
- Debug-оверлей, метрики корректности, runtime-тюнинг.
## Чего нет и не будет
Врагов с ИИ, лута, прогрессии, UI, меню, звука, ECS, сторонних библиотек.
Мишени статичны и не атакуют — это шум для задачи.
Свет, туман войны и эффекты в исходных рамках тоже стояли в этом списке, но
появились вместе с хоррор-слоем. Правило, по которому их пустили: они живут
только в `render/`, `RenderGame` принимает `const Game&`, и на симуляцию повлиять
физически не могут. Ближний бой — единственное добавление, которое **меняет**
правила, поэтому он проверяется собственными критериями приёмки (M7.1M7.3).
## Технические рамки
| | |
|---|---|
| Язык | C++17, без зависимостей кроме raylib |
| Библиотека | raylib 6.0 (через CMake FetchContent, если нет системной) |
| Рендер сцены | **собственный софтверный растеризатор**, ручная запись пикселей |
| raylib используется для | окно, ввод, таймер, `UpdateTexture` + `DrawTexturePro`, debug-текст |
| Разрешение | внутреннее 480×270, окно 1440×810 (целочисленный ×3) |
| Симуляция | fixed timestep 60 Гц, детерминированная, рендер с интерполяцией |
| Потоки | один |
Ни одного raylib-примитива в отрисовке игровой сцены. Единственное исключение —
debug-оверлей поверх уже отмасштабированного кадра, он dev-only и снимается по `F1`.
## Куда дальше
- Собрать и запустить — [01-build-and-run.md](01-build-and-run.md).
- Понять устройство кода — [02-architecture.md](02-architecture.md).
- Понять **главное** (поведение отряда) — [05-squad-ai.md](05-squad-ai.md).