Обновлено:

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

Ранняя партия: наземный бой, захват и завоевание

Модель собственного движка: land-rounds-v1, схема сохранения 5. Область — фиксированная карта России и Рима, ранние наземные типы из выбранного BIQ. Числа профиля и программные проверки отделены от наблюдений Windows-оригинала: контрольное воспроизведение в оригинале ещё не выполнено.

Что соединено в игровой цикл

Оба игрока используют обычные команды: основание города, производство, исследование, бюджет, дорога и ресурсная сеть, движение, укрепление, объявление войны, бой, выбор судьбы города и завершение хода. Начальное правительство — «Община», сложность ID 2, Россия и Рим, карта reference-fixed-v2 12×10, seed 42027, возрождение цивилизаций отключено. Это технический сценарий; его дополнительные стартовые военные юниты задаются сценарием, а не объявляются точной стандартной расстановкой оригинала.

Атакующий наземный юнит входит на соседнюю клетку обычным приказом движения. В мирное время приказ требует отдельного объявления войны. При нескольких защитниках бой идёт с одним; пока остаётся защита, атакующий не входит на клетку. После последнего защитника обрабатываются гражданские юниты и город. Поселенец без городов сохраняет цивилизацию в игре. Устранение последнего соперника завершает партию победой завоеванием.

Правила и границы проверки

ЧастьИсполнениеЧто ещё сверить в оригинале
РаундОдин проигравший теряет 1 HP; вероятность победы атакующего A / (A + D)Округления внутренней силы и особые случаи
ЗащитаБазовая защита, местность, укрепление, город, сооружение, река; проценты берутся из BIQСочетания и порядок бонусов, выбор лучшего защитника
ОтступлениеДля быстрого против медленного; проверка на переходе к 1 HP при HP противника больше 1Полные ограничения, выбор клетки, реальная случайная последовательность
ОпытВероятностное повышение, воинственная черта, повторная победа после неудавшегося повышенияДействие этих правил именно в данной поставке и прибавка HP
Оборонительная стрельбаОдин доступный выстрел другого юнита в стеке, не ниже 1 HP атакующегоСамоподдержка, выбор стрелка и точная сила против целей
ПорабощениеФлаг действия, тип результата из BIQ, один шанс после победыБит флага, вероятность и допустимые жертвы
ЛечениеПолный ход без движения/атаки/работы: 2 HP в городе, 1 вне города; чужая территория исключенаБольницы, технологии, особые типы и граничные случаи
ГородНаселение 1 и нулевая культура — автоматическое разрушение; иначе обязательный выбор сохранить/разрушитьТочная проверка исторической культуры, добыча, сохранность сооружений
СопротивлениеЖители отделены от работающих; гарнизон участвует в подавленииПолная матрица правительств/культуры, национальности отдельных жителей
ПобедаНет городов и юнитов основания — устранение; последний оставшийся побеждаетДополнительные сценарные условия, возрождение и остальные победы

Вероятность отступления в модели — свой retreat_bonus / (чужой retreat_bonus + 50), по разбору исполняемого файла Antal1987. Это более конкретное свидетельство, чем описание «быстрый иногда отступает», но не заменяет проверки собственной поставки. Предпросмотр исходов учитывает HP, оборонительный выстрел и отступление; он не тратит случайные числа.

Рабочие допущения: выбор защитника максимизирует эффективную защиту × оставшиеся HP; обычные сооружения переживают захват с вероятностью 2/3; базовый шанс сопротивления иностранного жителя — 70%, подавления одной проверки — 40%. Последние два значения временные: матрица отношений культур и правительств ещё не применяется. Золото при захвате, лидеры, золотой век, полная культура и смена границ, мирные договоры, армии, морской/воздушный бой и большинство специальных способностей не реализованы.

Основатель ID 318 в Atlants имеет защиту 1, поэтому сражается. Его нельзя обрабатывать как беззащитного поселенца. Тип ID 0 имеет защиту 0 и при захвате превращается в рабочих. Порабощение создаёт тип 379 из поля профиля. Происхождение и признак пленного сохраняются отдельно; скорость учитывает силу типа, правительство и плен. Совместное действие силы 0,5 у типа 379 и модификатора пленного пока требует оригинального контрольного случая.

Представление и управление

К исходным анимациям покоя добавлены оригинальные attack1 и death ранних военных типов и основателя: все восемь направлений, длительности кадров и смещения холста остаются в манифесте. Конвертируется формат хранения и удаляются общие прозрачные поля; видимые исходные пиксели не перерисовываются. Боевые атласы загружаются по требованию. Их RGBA-память учитывается отдельно от начально загружаемого набора.

Показ боя пока сокращён: один цикл атаки и цикл гибели вместо отдельной анимации каждого случайного раунда. HP итогового состояния, повышение и пленные рассчитываются сразу; анимация лишь показывает готовый результат. Подключены две исходные NTP-палитры и боевые WAV/AMB; укреплённый юнит показывает конечную позу fortify, рабочий — дорожную анимацию. Полное чередование fortify/victory/run и точное воспроизведение последовательности оригинала остаются открытыми. Проверочный набор и политика звука.

На главном экране появились «Цивилизации», укрепление F, подтверждение войны перед атакой, обязательный выбор судьбы города и окно победы/поражения. Выбор судьбы города входит в сохранение; закрытие окна через Escape не пропускает решение. Завершённую партию можно экспортировать и осмотреть, но команды больше не начисляют доходы и не повторяют победу.

Данные и проверка целостности

Схема 5 хранит войны, состояния укрепления/атаки/оборонительных выстрелов, происхождение пленных, историю последних 20 боёв, ожидающий выбор города и результат партии. В историю боя входят раунды и броски собственной PRNG. Опубликованные схемы 2–4 мигрируют; новые поля не перемещают старые юниты и не обнуляют незавершённую дорогу.

Сохранение во время показа боя уже содержит рассчитанный результат. После перезагрузки продолжается игра с этого состояния; анимация боя не проигрывается как новая команда. Совпадение состояний нашего движка с загрузкой и без неё не означает совпадения PRNG оригинала.

tests/combat.test.mjs проверяет отдельные правила и отказы. tests/small-game.test.mjs начинает новую партию без изменения правил, проводит обе стороны общей политикой через команды и сравнивает полное состояние после каждой вставки сохранения/загрузки. Это автоматическое прохождение, а не ручная приёмка человеком. Результат, хеш команд и хеш конечного состояния публикуются в машинном отчёте. tests/game-screen.test.mjs отдельно проверяет окна и обязательные решения; настоящий Chromium проверяет браузерные действия.

Источники для контрольных случаев

Дальнейшие наблюдения добавляются в контрольные случаи; каждое допущение должно получить явный результат проверки или остаться помеченным ограничением совместимости.

Обновление0.13.0: совместное влияние силы типа и иностранного происхождения на труд теперь проверено изолированным исполнением исходной арифметики. Полный Windows-сеанс не заявляется; модель скорости.