Тактический отряд с автоматическим огнём в изометрии, собственный софтверный растеризатор (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>
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.
|