61 lines
3.7 KiB
Markdown
61 lines
3.7 KiB
Markdown
|
|
# Squad prototype — тактический отряд с авто-огнём
|
|||
|
|
|
|||
|
|
Технический прототип боевого ядра 2D-изометрического sci-fi horror roguelite.
|
|||
|
|
Отряд из 5 агентов сам расставляется так, чтобы стрелять и **не задевать своих**.
|
|||
|
|
Двое из пяти работают клинком: у ближнего боя то же правило в угловой форме —
|
|||
|
|
свой в секторе замаха, значит удара не будет.
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
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.
|