Решили: воспроизведение файлового реплея начинает показ с ПЕРВОГО тика записи, а не с
FrontTick − lookahead. Пока показ ещё не пошёл, ReplayFilePlayer не гонит фронт ленты вперёд на
весь боевой lookahead (10 c) — кормит только до OldestTick; сам lookahead набирается уже по ходу
показа. Заодно дуэли меню перезаписаны на энкаунтерной дистанции (MenuBattleConfig._lineX 3 → 5.5).
Почему: боевой lookahead существует, чтобы показ ОТСТАВАЛ от живого сима и мог читать будущее
(телеграфы, подводки камеры). У живого боя это безопасно: продюсер не разгоняет сим впереди
несуществующего показа (HasFullLead == true до старта), и показ идёт с первого тика. Файловый плеер
эту симметрию ломал — прокармливал ленту на 10 c вперёд ЕЩЁ ДО первого кадра показа, из-за чего старт
уезжал на FrontTick − lookahead. Альтернатива «уменьшить lookahead для реплея» отвергнута: старт
всё равно оседает на feed_target − lookahead ≈ margin из-за гранулярности чанка — лечится не
величиной лага, а тем, чтобы до старта не разгонять фронт. Дистанцию _lineX=3 (геометрия Ристалища,
команды ~5.8 по X) заменили на 5.5 (центры ±5.5, ~10.8 между командами) — это геометрия боевых
энкаунтер-пресетов карты.
Сказано: «Реплеи будто идут не с начала, а резко прыгают на какую-то середину» и «Юниты располагаются не достаточно далеко друг от друга. Должно быть как в реальном бою» (04.08.2026, сессия 78678294).
Грабли: симптом «прыжок на середину» невозможно вывести из одного плеера — он даёт лишь ~1 c
пропуска. Корень виден только вместе с записью: команды на старте стоят на 5.8, а сходятся в контакт
(1.6) за ~0.8 c, поэтому съеденная показом первая секунда — это ВСЯ фаза схождения, и показ открывался
уже свалкой. То есть тесная дистанция и потерянная завязка — один узел, а не два бага. Числа проверены
чтением самих .gmrp (первый кадр tick 0 существует — запись писалась с начала, врал показ).
Владелец правды: Net/Tape/ReplayFilePlayer.cs (ветка Tick, кормёжка до старта показа),
ScriptableObjects/Configs/MenuBattleConfig.asset (_lineX). Инвариант «показ реплея стартует с
первого тика» тестом пока НЕ закрыт — кандидат на ReplayFilePlayerTests (feed до старта не уводит
фронт за OldestTick).