Ранняя партия: наземный бой, захват и завоевание
Модель собственного движка: 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 проверяет браузерные действия.
Источники для контрольных случаев
- Combat System Explained — описание вероятностных раундов; ранняя версия игры, поэтому применимость к Conquests/Atlants проверяется отдельно.
- Antal1987: разбор retreat bonus, сообщение 62 — формула проверки отступления по исследованию Conquests EXE.
- CivFanatics FAQ — повышения опыта и воинственная черта.
- Обсуждение автоматического разрушения — зависимость от населения и культуры; отдельные сообщения расходятся, нужен контроль оригинала.
- Civ III Info Center — опубликованные сведения Firaxis о захвате поселенцев, национальности и судьбе города.
- Sullla: Conquests Always War — наблюдение сохранения цивилизации с поселенцем без города.
- Оборонительная стрельба: противоречивые наблюдения — неопределённость самоподдержки одиночного стрелка.
- Gramphos: формат BIX/BIQ — поля типа результата порабощения и боевых характеристик; не является доказательством всех правил исполнения.
Дальнейшие наблюдения добавляются в контрольные случаи; каждое допущение должно получить явный результат проверки или остаться помеченным ограничением совместимости.
Обновление0.13.0: совместное влияние силы типа и иностранного происхождения на труд теперь проверено изолированным исполнением исходной арифметики. Полный Windows-сеанс не заявляется; модель скорости.