squad-proto/README.md

61 lines
3.7 KiB
Markdown
Raw Normal View History

Прототип боевого ядра: отряд, хоррор-слой, ближний бой Тактический отряд с автоматическим огнём в изометрии, собственный софтверный растеризатор (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 17:00:49 +07:00
# 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.