Обновлено:

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

Воздушная разведка и перебазирование — начало5.2, v0.17.0

Первая подключённая часть воздушной системы: общие приказы AIR_RECON и REBASE, дальность, видимость, города и авианосцы, сохранения и базовая разведка ИИ. Остальные миссии27 исходных воздушных типов — бомбардировка, точечный удар, перехват, ПВО, транспортные выброски и аэродромы — остаются в работе. Полный5.2 и MVP не завершены.

Доступно в основной партии

В производство включены исходные «Воздушный Шар»285 и «Дирижабль»286: это типы с разведкой/перебазированием без боевой миссии и транспортного груза. Их технологии —150 «Термодинамика» и119 «Полёт»; стоимости и прочие требования берутся непосредственно из профиля. Действуют общие национальные ограничения и устаревание заказа. Остальные боевые самолёты пока не включены в обычное производство.

Авианосец279 и Ударный Авианосец280 используют собственную вместимость и ограничение Only Air: сухопутный груз не принимается. Это доводит текущий морской производственный набор до49 из53 исходных типов. Воздушная часть выбирается в окне транспорта; после выбора появляются две отдельные кнопки с оригинальными32px значками.

Выбор «Воздушная разведка» включает указание цели на карте. Подсказка проверяет дальность, Escape отменяет наведение. Цель может быть неизвестной: проверка не читает её скрытые объекты. Выполненная миссия открывает логический квадрат5×5, оставляет юнит на базе и расходует всё оставшееся движение. Новое исследование местности остаётся в карте знаний после возврата тумана.

Разведка сохраняет текущую видимость на протяжении чужих ходов. Она истекает при настоящем начале следующего хода владельца, а не при любом возврате управления: переговоры посреди чужого хода её не прекращают. Этот случай проверяется и сохранением во время предложения обмена, и реальным отказом в браузере.

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

Шар и дирижабль в исходном профиле не имеют Immobile. Они также используют обычные маршруты над сушей и водой с воздушной стоимостью шага, без дорожных скидок и наземной зоны контроля. Самолёты с Immobile не получают такое движение. При входе сухопутной части в клетку с оставленной вражеской авиацией она уничтожается, а не остаётся чужим стеком после занятия базы.

ИИ выбирает цели разведки по своему отфильтрованному представлению мира, пользуется общей проверкой приказа и может заказать исходный разведывательный тип. Уже строящийся разведчик сохраняется; одновременные заказы в других городах учитываются. Дальняя разведка мобильной части использует общие автоматические приказы. Это начальная политика, а не восстановление стратегии Firaxis.

Оригинальный EXE и выявленные различия

Доказательства закрепляют предоставленный EXE SHA256 c40583d707af7abd9b8568e2ed5a4f117f27a775dca617c8d7b873d76772dd6d. В Unicorn выполнены505 случаев неизменённых инструкций: полная проверка дальности перебазирования0x5c3570, выбор радиуса перехвата с отдельной ветвью нулевой дальности, арифметика зенитного выстрела и знаменатель городской ПВО. Отдельно проверены18 последовательностей байтов. Полная Windows-партия, поиск целей и PRNG-порядок не исполнялись.

В некоторых справочниках перебазированию Conquests приписывают тройную дальность. Исходная функция этой поставки сравнивает floor((abs(dx)+abs(dy))/2) с 6×operationalRange, учитывая оборачивание координат. Неположительная дальность в этой функции заменяется500. Нативные координаты и обёртка проверены машинными случаями. Наши логические координаты дают ту же метрику. Общая справка CivFanatics полезна для терминов, но не подменяет исходные инструкции выбранной поставки.

Нативная воздушная разведка проходит25 координат и устанавливает полное использованное движение. Перебазирование добавляет только один дорожный квант. Следовательно, общая фраза «любая воздушная миссия всегда завершает ход» не используется как правило движка.

В RULE Atlants вероятность обнаружения обычной авиации80%, stealth5%. Для перехвата положительный рабочий радиус делится пополам с усечением и минимумом1; нулевая исходная дальность обходит этот минимум и даёт0. Эти расчёты закреплены, но сам боевой приказ перехвата ещё не подключён.

Для зенитных частей исходный код использует опыт самолёта, не его текущий урон:

W = planeDefense × (experienceId + 1) × 5

chanceToDestroy = airDefense / (W + airDefense)

При обычном опыте1 множитель10 совпадает с часто приводимым упрощённым описанием. Для других уровней получается другое значение. Отбираются не более четырёх наиболее сильных зенитных частей; точные исключения владельцев и контейнеров ещё требуют контроля. У городской ПВО отдельно проверяются обнаружение и случайный результат с знаменателем planeDefense + airPower. Ветка выжившего самолёта возвращается через исследованный выход перехвата; полная диспетчеризация отмены миссии пока не выполнялась. Эти расчёты подготовлены для следующей части5.2 и не объявлены действующей ПВО текущего выпуска.

Адреса сверялись с таблицей C3X, раскладка PRTO/Unit и битов — с Civ3Conquests.h. В частности, абсолютное поле юнита0x44 —опыт; Damage находится по другому смещению. Опциональные исправления C3X не принимаются за правила исходного EXE.

Сохранения и исходники

Схема35 добавляет только airModel: native-air-missions-v1 к подлинному сохранению опубликованной34. Старые юниты, ресурсы, договоры, карта и PRNG не меняются. Новая необязательная reconTarget принадлежит конкретному юниту; при загрузке проверяются тип, флаг миссии, целые координаты, границы и лишние поля. Гибель источника убирает дополнительную видимость. Базирование хранится общим полем груза, без второй конкурирующей модели авианосца.

Модули engine/air-rules.mjs, air.mjs, air-ai.mjs и ui/air.mjs разделяют числа, выполнение, политику ИИ и кнопки. Общие сохранения/видимость/команды связывает интегратор. Разведка не получает отдельный прямой доступ к скрытому миру в интерфейсе или ИИ.

Исправлены два выявленных интеграционных дефекта: общий производственный фильтр отвергал даже включённые в каталог воздушные типы; перенос груза добавлял facing: undefined, исчезавшее при JSON-сохранении. Поле теперь копируется только при наличии. Функциональные сравнения сохранений не ослаблялись.

Проверки и открытая работа

17 проверок ядра охватывают машинные эталоны, реальные маски, неизвестную цель, срок разведки, переговоры, полный расход движения, города/авианосцы, вместимость, гибель источника, водное движение, выбор ИИ по знаниям, производство и миграцию34. В браузере проверяются оригинальные значки, наведение, видимость, реальный отказ от обмена, срок действия, посадка/выбор части на палубе, повторная разведка, исходные кадры полёта, заказ шара и точный экспорт/перезагрузка. Итоговый отчёт — release-0170-validation.json.

Открыты: боевые самолёты и их миссии/анимации, перехват и ПВО как полные действия, точечный удар, аэродромы и воздушные связи/перевозки, специальные контейнеры и базирование на той же клетке, оригинальная геометрия зон перехвата, нулевая дальность разведки пользовательских типов, полная Windows-сверка фаз и отображения. Оригинальные параметры всех27 типов сохранены, но это не означает их функциональную готовность.

Воспроизведение: PYTHONPATH=/tmp/civ3-native-math-python python3 scripts/run-limited.py -- python3 scripts/verify-air-rules.py; затем сборка и node tests/air-missions.test.mjs. Unicorn используется только в проверочном стенде, браузер от него не зависит. Пакет находится в локальном временном каталоге стенда; системные библиотеки не менялись.

В выпуске0.17.0 привязка ячеек ещё не была подтверждена. В0.17.1 обнаружены и исправлены две неверные пиктограммы: разведка использует ячейку38, перебазирование40 отдельного Conquests-атласа. Исполнены полный исходный перечислитель команд и расчёт вырезок, проверены67 машинных случаев и11 сигнатур. Точная привязка, происхождение изображений и ограничения. Боевые воздушные действия по-прежнему требуют отдельной реализации.

Продолжение после v0.17.3

Боевая часть подключена в рабочей модели v0.18.0: бомбардировки, перехват и ПВО. Описание выше сохраняет границы исторического выпуска0.17.0; текущий статус и исключения указаны в новом документе.