squad-proto/README.md
z.kirill 7880f275bd Прототип боевого ядра: отряд, хоррор-слой, ближний бой
Тактический отряд с автоматическим огнём в изометрии, собственный
софтверный растеризатор (raylib только окно, ввод и финальный блит).

Ядро (спек, раздел 6):
- LaneClear: проверка линии огня по своим, стенам и дальности;
- решатель огневых позиций с гистерезисом и коммитом;
- резервирование линий огня и расступание из чужих секторов;
- пули-снаряды, дружественный урон физически возможен.

Хоррор-слой (render-only): свет и туман войны с памятью карты,
светящиеся трассеры, кровь, виньетка, зерно, напряжение.

Ближний бой: сектор удара, три фазы, связка из трёх ударов,
своя дисциплина «не бить сквозь своего».

Проверка: squad_proto.exe --accept прогоняет критерии приёмки
раздела 11 плюс блок M7 по ближнему бою — все PASS,
FRIENDLY_HITS = 0 за 3 минуты боя.

Сборка: cmake -S . -B build && cmake --build build --config Release
raylib 6.0 подтягивается через FetchContent.

Документация — CLAUDE.md как оглавление, содержание в docs/.

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

61 lines
3.7 KiB
Markdown
Raw 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.

# Squad prototype — тактический отряд с авто-огнём
Технический прототип боевого ядра 2D-изометрического sci-fi horror roguelite.
Отряд из 5 агентов сам расставляется так, чтобы стрелять и **не задевать своих**.
Двое из пяти работают клинком: у ближнего боя то же правило в угловой форме —
свой в секторе замаха, значит удара не будет.
![боевой кадр с оверлеем](docs/combat.png)
C++17 · raylib 6.0 · CMake · **софтверный рендер** (вся сцена — ручная запись
пикселей в свой фреймбуфер 480×270, апскейл ×3).
## Быстрый старт
```bash
cmake -S . -B build # разово, тянет raylib 6.0
cmake --build build --config Release --parallel
build/bin/squad_proto.exe
```
В VS Code — просто `F5`.
`WASD` двигает якорь отряда, `Space` — ручное прицеливание, `1/2/3` — строй,
`F1..F4` — оверлей. Стрельба всегда автоматическая. Полный список — в документации.
## Самопроверка
```bash
build/bin/squad_proto.exe --accept # критерии приёмки, PASS/FAIL
build/bin/squad_proto.exe --headless 300 # прогон без окна + метрики
```
Симуляция детерминирована и не зависит от рендера, поэтому критерии проверяются
цифрами: `FRIENDLY_HITS = 0` за 3 минуты боя смешанным отрядом, `FIRE UPTIME`
100 % в стоячем бою, расхождение веером за 0.18 с, 81 взмах клинком без единого
задетого своего, шаг симуляции 2 мкс при бюджете кадра 16.6 мс.
## Документация
Оглавление — [CLAUDE.md](CLAUDE.md). Модульная документация в [docs/](docs/):
- [00-overview](docs/00-overview.md) — что это и чего тут нет
- [01-build-and-run](docs/01-build-and-run.md) — сборка, управление, dev-режимы
- [02-architecture](docs/02-architecture.md) — модули, порядок шага, правила зависимостей
- [03-rendering](docs/03-rendering.md) — фреймбуфер, изометрия, спрайты
- [04-world](docs/04-world.md) — карта, рейкаст, коллизии, мишени
- [05-squad-ai](docs/05-squad-ai.md) — **ядро**: линии огня, решатель, резервирование
- [06-debug-and-tuning](docs/06-debug-and-tuning.md) — оверлей, метрики, тюнинг
- [07-milestones](docs/07-milestones.md) — журнал вех
- [08-decisions](docs/08-decisions.md) — отклонения от спека и почему
- [09-acceptance](docs/09-acceptance.md) — критерии приёмки и цифры
- [10-atmosphere](docs/10-atmosphere.md) — свет, туман войны, трассеры, напряжение
- [11-melee](docs/11-melee.md) — **ближний бой**: сектор удара, три фазы, свой круг
Исходное ТЗ: [SQUAD_PROTOTYPE_SPEC.md](SQUAD_PROTOTYPE_SPEC.md).
---
Проект вырос из шаблона [Raylib-CPP Starter Template for VS Code](https://youtu.be/acvgbKRaxDI);
от шаблона остался только `Makefile`, который больше не используется — сборка через CMake.