03. Замеры FPS и времени загрузки (NFR-1, NFR-2)

Цель: скрипт замеряет FPS на пресете medium и время загрузки локации на дискретной видеокарте, печатает отчёт с числами.

Контекст: docs/guide/game.md («Графика»), scripts/game/graphics_presets.gd, configs/game.json (graphics_presets), REQUIREMENTS.md (NFR-1: 60 FPS на дискретной; NFR-2: загрузка ≤ 10 с). Папки-владения: tools/bench/ (новая). Код модулей не правит — узкие места и цифры описывает в отчёте; правки чужих файлов графики — карточка владельцу.

Шаги

  1. tools/bench/frame_bench.sh: 3–4 ракурса через --autostart --camera=… --time=20 на каждой локации (старт у склона, высота над лесом, вид на облака) — средний и 1%-low FPS на пресете medium.
  2. tools/bench/load_bench.sh: время от --autostart до первого кадра полёта на каждой локации (тёплый кеш .godot/).
  3. Прогнать оба на этой машине с дискретной видеокартой; результаты — в таблицу docs/guide/game.md («Графика»).
  4. Если medium < 60 FPS среднее — зафиксировать конкретные узкие места (по RenderingServer таймингам) в отчёте без правки чужого кода.

Критерий приёмки

  • tools/bench/frame_bench.sh печатает таблицу «ракурс → средний FPS, 1%-low» для всех локаций на medium.
  • tools/bench/load_bench.sh печатает время загрузки каждой локации; все ≤ 10 с (тёплый кеш) — если нет, отчёт содержит цифры и просадки.
  • Таблица добавлена в docs/guide/game.md.

Зависимости: после того как трава/лес/облака (vegetation, terrain2, atmosphere) закончены — иначе цифры неактуальны. Можно параллельно с карточкой 02. Модель: sonnet. Размер: M.