ГЛАВНОЕ. "Дольше пяти секунд не продержаться на первом уровне" - это был не баланс, а запуск. По умолчанию useRooms был false: обычный запуск exe собирал ЗАХАРДКОЖЕННУЮ карту прототипа со старой расстановкой тварей и высаживал туда ОДНОГО оперативника с ножом (размер отряда берётся из профиля). Игрок попадал не на первый этаж игры, а вообще не в игру. Теперь проект подключается по умолчанию, а старая карта осталась под флагом --no-rooms. --PLAY. Новый прогон: автопилот ведёт отряд к спуску и дерётся по дороге. Ни --descend, ни --wall не меряли ПРОХОЖДЕНИЕ: первый собирает этажи и ни с кем не воюет, второй ставит отряд в толпу и запрещает двигаться. Жалоба же была именно про проход этажа. Автопилот ходит по полю расстояний до спуска (заливка по проходимым клеткам), целится на несколько клеток вперёд по спуску поля и правит курсором - тем же вводом, каким играет человек. Три версии до рабочей: по прямой упирался в первую стену, по восьми соседям лез в диагональную щель между углами (тело круглое, не пролезает), по соседней клетке дёргался на каждой границе. Одиночка проходит три этажа и гибнет на четвёртом: 1 тварей 3, убил 0, 100% здоровья, света 244 дошёл (78 с) 2 тварей 6, убил 1, 100%, света 155 дошёл (44 с) 3 тварей 6, убил 0, 65%, света 8 дошёл (74 с) 4 тварей 9, убил 5, ВАЙП (37 с) Свет кончается к третьему этажу: расчёт "заряда на четыре пути до спуска" считал прямые пути, а живой отряд ходит петлями. СТРОЙ В ТЕСНОТЕ. Клин шириной в пять тел не проходит в дверь шириной в клетку: бойцы упираются друг в друга, расталкивание держит их на месте, отряд встаёт насмерть. Теперь строй сам сжимается в колонну, когда вокруг тел мало свободных клеток. ЧЕСТНО: это НЕ вылечило проход пятёрки до конца. Автопилот с полным отрядом всё ещё застревает на первом этаже там, где одиночка проходит, и причина не в ширине строя (проверено сжатием в точку и отрядом без клинков). Похоже, нужна нормальная проводка строя по проходам - это отдельная веха, а не патч в конце. Оставляю с числами, а не с обещанием. --accept PASS, все семь проверок зелёные. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude/commands | ||
| .vscode | ||
| assets | ||
| docs | ||
| editor | ||
| engine | ||
| generated | ||
| lib | ||
| projects | ||
| samples/walk | ||
| src | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| main.code-workspace | ||
| Makefile | ||
| preview.jpg | ||
| README.md | ||
| SQUAD_PROTOTYPE_SPEC.md | ||
Squad prototype — тактический отряд с авто-огнём
Технический прототип боевого ядра 2D-изометрического sci-fi horror roguelite. Отряд из 5 агентов сам расставляется так, чтобы стрелять и не задевать своих. Двое из пяти работают клинком: у ближнего боя то же правило в угловой форме — свой в секторе замаха, значит удара не будет.
C++17 · raylib 6.0 · CMake · софтверный рендер (вся сцена — ручная запись пикселей в свой фреймбуфер 480×270, апскейл ×3).
Быстрый старт
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 — оверлей. Стрельба всегда автоматическая. Полный список — в документации.
Самопроверка
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. Модульная документация в docs/:
- 00-overview — что это и чего тут нет
- 01-build-and-run — сборка, управление, dev-режимы
- 02-architecture — модули, порядок шага, правила зависимостей
- 03-rendering — фреймбуфер, изометрия, спрайты
- 04-world — карта, рейкаст, коллизии, мишени
- 05-squad-ai — ядро: линии огня, решатель, резервирование
- 06-debug-and-tuning — оверлей, метрики, тюнинг
- 07-milestones — журнал вех
- 08-decisions — отклонения от спека и почему
- 09-acceptance — критерии приёмки и цифры
- 10-atmosphere — свет, туман войны, трассеры, напряжение
- 11-melee — ближний бой: сектор удара, три фазы, свой круг
Исходное ТЗ: SQUAD_PROTOTYPE_SPEC.md.
Проект вырос из шаблона Raylib-CPP Starter Template for VS Code;
от шаблона остался только Makefile, который больше не используется — сборка через CMake.
