# Воздушная торговля и общая ресурсная сеть — v0.21.0

Аэропорты соединяют дорожные и морские участки ресурсной сети. Эта связь используется доступностью производства, ресурсами города, содержанием международных договоров и общими запросами ИИ. Это продолжение рубежей4.3 и5.2; весь MVP и воздушные аэродромы/десант ещё не завершены.

## Правила и интерфейс

Связь требует действующего здания с BLDG.airTrade, byte2:bit5, маска0x200000. В предоставленном профиле это здание9 «Аэропорт». Флаг отличается от veteranAir0x40000, используемого [переброской войск](airlift-and-airports.md). У исходного аэропорта есть оба эффекта; наличие только одного не включает другой.

Ресурс по-прежнему должен находиться на своём подключённом участке и быть открыт технологией. Аэропорты соединяют ресурсные компоненты без поиска наземного или морского пути между ними, независимо от расстояния, технологий Sea/Ocean и отправочного лимита войск. Корабль на промежуточной морской клетке не блокирует воздушное ребро. Дорога от месторождения к аэропорту, другие сухопутные/морские части маршрута и их ограничения сохраняются.

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

В ресурсной панели города показана «Воздушная торговля». Подсказка здания объясняет эффект. Отправочный статус аэропорта остаётся отдельным: использованный слот переброски не прекращает торговлю. Интерфейс не показывает закрытые города, войска или координаты транзитных узлов.

## Подтверждение на исходных инструкциях

Использован предоставленный Civ3Conquests.exe, SHA256 c40583d707af7abd9b8568e2ed5a4f117f27a775dca617c8d7b873d76772dd6d. Windows-партия не запускалась.

[688 машинных случаев](data/air-trade-native-evidence.json) включают:

- 544 выполнения полной неизменённой функции пересчёта связей0x57d6e0 и её исходного помощника замыкания матрицы0x57d5a0. Проверены все комбинации аэропортов, знания клеток и войн для двух и трёх городов. Внешняя карта и предикаты наличия аэропортов получают контролируемые значения. Сухопутный и водный поиски в этих стендах не вызываются.
- 144 выполнения полной функции City_can_trade_via_air0x4ae020: физическое/действующее наличие, собственно airTrade и отсутствие/неизвестность/известность технологии устаревания двух зданий. Внешний запрос действующего здания и наличие технологии — контролируемые помощники, не исполнение всей городской модели.
- Восемь сигнатур подтверждают маску, два конечных предиката, проверку войны и прямое соединение без поиска по местности.

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

В веб-состоянии порядок задают числовые части стабильных c-ID. Смена порядка массива городов после загрузки не меняет связь. Повторное использование оригиналом ID разрушенных городов, сопоставление с SAV и все жизненные циклы исходной Windows-партии остаются отдельными вопросами совместимости. Эти ограниченные доказательства не объявляются проверкой полного оригинального PRNG, фаз и интерфейса.

## Архитектура, ИИ и сохранения

Модель land-sea-air-trade-network-v2 добавляет воздушные рёбра к прежним двум слоям графа. Случайность не используется. Устаревание кэша учитывает здания, дарованные эффекты, правила, технологии, правительства, войны, города, ID и знание карты. Расход airliftUsed в сигнатуру не входит, потому что на торговлю не влияет. Пользовательские запросы получают копии компонент, а не изменяемый кэш.

Начальный ИИ может заказать аэропорт в собственном изолированном городе. Выбор кандидатов использует свои города из отфильтрованного представления; исполнение и требования проходят обычную команду SET_PRODUCTION. При отсутствии требуемой технологии дополнительный сетевой анализ не выполняется. Развитая экономическая оценка цены аэропорта и стратегическая сеть авиабаз ещё требуют продолжения.

Схема38. Подлинное сохранение37 получено из опубликованного движка0.20.0 после настоящего AIRLIFT: в нём есть переброшенный отряд и использованный аэропорт, а также прежние самолёты/груз. Миграция меняет только версию схемы и transportNetworkModel. Полная партия и её случайное состояние не пересчитываются загрузчиком.

## Проверки

Десять новых JS-проверок охватывают все688 нативных случаев, дальнюю связь через неизвестный океан, различие двух флагов аэропорта, блокаду и отправочный слот, порядок ID, импорт и продажу, требования производства, бесплатные эффекты/правительство, ИИ и подлинную миграцию.

Chromium проверяет реальную панель города, ресурс и эффект здания, продажу с подтверждением, потерю ресурса и разрыв импортного пакета. После каждой значимой операции проверяются ядро, экспорт и перезагрузка. [Отчёт выпуска](data/release-0210-validation.json) заполняется по завершении общего прогона.

[Контроль производительности ИИ](data/air-trade-ai-comparison.json) сравнивает0.20.0 и новую модель на одной подготовленной сухопутной карте без аэропортов:8 команд,960 клеток,5 городов,42 юнита. Команды, всё состояние с поправкой только на схему/модель и PRNG совпадают. Прогретый обратный порядок: CPU2060→1961мс; это контроль отсутствия заметной регрессии в данном сценарии, не обещание ускорения пользовательского хода. Ограничение CPU35% и влияние общей VM отражены в отчёте.
