Обновлено:

На этой странице

Ход ИИ: вычисления и ожидания браузера

Журнал пользователя от 28.10.2026, ход217: 260 юнитов,23 города,218 команд. Полное время92180мс. Выбор37155,7мс; исполнение2786,5; сохранение738,3; отрисовка925,3; представление2739,6. Сумма44345,4мс, оставшиеся47834,6мс прежними счётчиками не покрыты. Между u426 и u427 прошло31,4секунды, хотя измеренная работа второй команды заняла около218мс. Поэтому приписывать все92секунды расчётам ошибочно.

В прежнем runtime почти каждая команда уступала управление через setTimeout(0): условие >16мс выполнялось даже для HOLD. Ожидание находилось вне измерений. Большие промежутки совместимы с задержкой планировщика/фоновой вкладкой, однако видимость вкладки и другие причины журнал не записывал, и точная причина31секунды не установлена.

В0.25.0 продолжение запускается через MessageChannel с закрытием обоих портов. При отсутствии API остаётся таймер. Управление по-прежнему регулярно возвращается браузеру. Ожидание отрисовки статуса не зависает, если вкладка скрылась между двумя кадрами. Замороженная браузером/ОС страница всё равно не обязана продолжать выполнение.

Добавлены yieldMs, statusPaintMs, overheadMs, hiddenYields; финальное сохранение и кадр также включены в суммы. overheadMs содержит оставшуюся синхронную работу интерфейса, журналирование и обслуживание кеша, а не объявляется чистым CPU.

Повторные финансовые прогнозы

Раньше перед каждым HOLD снова рассчитывались все варианты бюджета. Создан временный createAIPlanner. Он повторно использует только финансовые прогнозы после обычного HOLD простаивающего юнита. Помимо типа команды проверяются единственное событие UNIT_HELD и полное равенство состояния после восстановления трёх изменённых полей юнита и журнала событий. Автоматические движения, изменения города, дипломатии, ресурсов или решения запрещают перенос. После любого другого приказа и при новой ссылке состояния кеш не используется. Изменения бюджета пользователя во время хода ИИ и загрузка партии пересчитывают прогноз.

Сам выбор команд заново читает актуальную позицию. Приказы не готовятся вперёд. Кеш не записывается в партию и не расходует случайные числа. Работающего рабочего оптимизация не затрагивает. Схема41 и игровые правила прежние.

Сравнение без кеша/с кешем за полный контрольный ход проверяет каждую команду, всё состояние и PRNG; отдельные случаи проверяют инвалидирование. scripts/benchmark-ai-hold.mjs сравнивает32 команды на подготовленной позиции с260 юнитами/23 городами/3072 клетками в прямом и обратном порядке. Это не сохранение пользователя; CPU и полное время отчёт различает. Результат находится в data/ai-hold-performance.json.

Большая армия продолжает увеличивать стоимость тактики, поиска путей, обзора и исполнения. Уменьшение количества частей или пропуск их правил ради скорости в эту правку не входят.

Контроль завершён:32 HOLD, обычный CPU22699→11253мс, обратный прогретый21825→10975мс. В обоих оптимизированных проходах финансовый прогноз рассчитан1раз и повторно использован31раз. На участке с движениями перенос не применялся, заметного ускорения нет; отдельный data/ai-movement-performance-control.json сохраняет этот контроль. Все993JS/83модуля,70Python,DOM и10 локальных Chromium прошли; браузер подтвердил изменения хозяйства во время того же хода ИИ, скрытые движения, исходную длительность своих анимаций и точную полную партию.