Mastodon
← Все записи
автор: Casey Jones Labs · 7 мин чтения

Разработка SkyChart: как письмо любви к Aerobiz стало полноценным авиасимом

devlogskychartbehind-the-scenes
Этот пост переведён с английского автоматически. Читать оригинал
Содержание

Есть игра 1992 года, которая нас погубила. Aerobiz Supersonic на SNES не имела права быть настолько затягивающей, насколько была. Покупка аэропортовых слотов в Лагосе, уклонение от нефтяных кризисов, наблюдение за тем, как ваши маленькие спрайты самолётов ползут по пиксельному глобусу, пока вы плетёте мировое господство по одному хабу за раз.

Никто не сделал достойного преемника. Поэтому мы решили построить его сами.

SkyChart: Airline Executive это наш ответ. Ретро-современный симулятор управления авиакомпанией, построенный на Godot 4, охватывающий 90 лет истории авиации от золотого века летающих лодок до эры A380. Сегодня мы приоткрываем занавес и рассказываем, как это всё собралось.


Питч: «Что, если бы у Aerobiz был современный UI?»

Основная фантазия проста: вы CEO начинающей авиакомпании, соревнующейся с ИИ-соперниками через четыре исторические эры (1930–2020). Вы выбираете маршруты, покупаете самолёты, инвестируете в города, управляете дипломатией с мировыми регионами и пытаетесь не обанкротиться, когда ОПЕК решит испортить всем квартал.

Но там, где Aerobiz давал вам меню и текст, мы хотели живую карту мира. Траектории по дугам больших кругов, погодный радар, циклы дня и ночи, анимации городского бума и спрайты самолётов, кренящиеся в поворотах. Того рода, от которых вы откидываетесь в кресле и думаете: «Да, эту сеть построил я».

Вайб, на котором мы остановились: хай-тек ретро. Неоновые светящиеся линии на тёмной карте. Гексагональные кнопки HUD. Новостной тикер, будто сошедший с терминала Bloomberg 1990-х. Современный UX, обёрнутый в безошибочно узнаваемый шарм эпохи SNES.

Карта мира ночью с неоновыми линиями маршрутов, пересекающими глобус, пока спрайты самолётов прокладывают траектории по дугам больших кругов между городами Глобальный вид: ваша авиасеть с высоты. Каждая светящаяся линия это маршрут. Каждая движущаяся точка это доход.


150 городов, 33 самолёта, 90 лет истории

Поговорим о масштабе. SkyChart содержит:

  • 150 городов в 7 мировых регионах (плюс Россия после 1991 года), у каждого реальные данные о населении, экономические профили и сезонные кривые спроса. Токио взлетает в сезон цветения сакуры. Майами бурлит зимой. Калькутта достигает пика во время Дурга-пуджи.
  • 33 исторически точных самолёта от Douglas DC-3 (1936) до Boeing 787 Dreamliner. У каждого подлинная дальность, скорость, вместимость, эксплуатационные расходы и год списания. Залетите на DC-3 в реактивную эру и смотрите, как расходы на обслуживание съедают вас заживо.
  • 60+ исторических событий, перестраивающих игровое поле. Великая депрессия обрушивает спрос. Вторая мировая бомбит Лондон и Берлин (буквально, вам придётся восстанавливать эти аэропорты). Нефтяной кризис 1973 года в одночасье удваивает ваши расходы на топливо. COVID-19 появляется в четвёртой эре и, ну… вы помните.
  • 4 играбельные эры, каждая с нарастающими целями. Первая просит вас выжить с винтовыми самолётами и 5 миллионами долларов. Четвёртая хочет империю в 2 миллиарда долларов, охватывающую все семь регионов.

Каждая эра ощущается как другая игра. Стратегический расчёт сети летающих лодок 1930-х не имеет ничего общего с безжалостной войной hub-and-spoke 1990-х.

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

Всплывающее окно исторического события, объявляющее о пандемии COVID-19 История не повторяется, но она повышает ваши расходы на топливо.


ИИ, который действительно отвечает

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

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

А в четвёртой эре, если вы построили империю, с которой они не могут конкурировать? Они могут просто стать целью поглощения. Одно враждебное поглощение за эру. Их маршруты, слоты и хабы, все ваши. За цену.

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


Кокпит: UI, который не сопротивляется вам

Если вы когда-либо играли в менеджмент-сим, где UI был настоящим боссом, вы знаете эту боль. Мы потратили неоправданное количество времени, чтобы интерфейс SkyChart был чем-то, чем вы хотите пользоваться.

Каждая панель это перетаскиваемое, изменяемое по размеру окно. Менеджер маршрутов, обзор флота, стратегический советник, разведка городов, разведка конкурентов, музыкальный плеер. Перетаскивайте их туда, куда хотите. Меняйте размер. Игра помнит вашу раскладку между сессиями.

Стратегический советник это ваш ИИ-напарник. Он сканирует каждую возможную пару городов в мире (это 11 175 комбинаций), ранжирует их по прогнозируемой прибыли и подаёт лучшие возможности на серебряном подносе. Он работает на фоновом пуле потоков, до 8 рабочих потоков, поэтому никогда не подвешивает игру, даже при просчёте тысяч маршрутов.

Полная поддержка контроллеров была поздним добавлением, превратившимся в страстный проект. Контроллеры Xbox, PlayStation и Switch работают нативно. Виртуальный курсор позволяет выбирать города на карте правым стиком. Радиальное меню (удерживайте LB) даёт мгновенный доступ к каждой панели. Каждое окно откликается на B-для-закрытия. Мы даже построили графическое руководство по управлению с виджетами клавиш и значков кнопок.

Ах да, и есть встроенный музыкальный плеер. Три источника: подходящий к эпохе саундтрек игры (44 трека, охватывающих от джазового века до современной электроники), ваша локальная музыкальная библиотека или интеграция со Spotify через OAuth. Потому что что такое управление авиакомпанией без хорошего плейлиста?

Несколько перетаскиваемых окон с менеджером маршрутов, панелью города и стратегическим советником, расположенных на карте Ваш кокпит, ваша раскладка. Каждая панель перетаскиваемая, изменяемая и помнит, где вы её оставили.

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

Руководство по вводу с контроллера, показывающее все сопоставления кнопок геймпада Полная поддержка контроллеров: каждая кнопка сопоставлена для управления авиакомпанией с дивана.


Под капотом: история любви к GDScript

SkyChart полностью построен на Godot 4 с GDScript 2.0. Никакого C#, никаких C++ модулей. Всё от движка экономики маршрутов до рендерера тайловой карты это чистый GDScript.

Несколько хайлайтов со стороны инженерии:

Потоки везде. Ежемесячные экономические расчёты, рекомендации маршрутов и ИИ-расширение работают на рабочих потоках. Игра остаётся плавно шёлковой, даже когда обрабатывает 2 000+ маршрутов среди четырёх соперничающих авиакомпаний.

Настоящий оконный менеджер. WindowManager это автозагружаемый синглтон, обрабатывающий послойное упорядочивание фокус-на-передний-план (кликните окно, оно поднимется наверх), сохранение позиции и размера на диск и адаптивное к экрану масштабирование. Три уровня: Normal (игровые панели), Modal (настройки, сохранение/загрузка) и HUD (всегда наверху).

Тайлы карт в стиле OSM. Зумируйте в любой регион, и высокодетализированные тайлы карты загружаются динамически. Пулинг спрайтов, LRU-кэш текстур, кэширование на диске и онлайн-загрузка. Три стиля: Retro Dark (по умолчанию), Satellite и Clean Vector.

Траектории по дугам больших кругов с обходом погоды. Траектории полёта следуют сферической интерполяции для географической точности и динамически обходят штормовые системы на карте. Спрайты самолётов кренятся в поворотах и отбрасывают тени. Это много математики ради косметики, но она делает мир ощущающимся реальным.

Маршрутизация по дугам больших кругов в действии: самолёты следуют реалистичным изогнутым траекториям по глобусу Маршрутизация по дугам больших кругов в действии: самолёты следуют реалистичным изогнутым траекториям и обходят погодные системы.

Карта, приближенная в регион, показывающая стиль тайлов Retro Dark с неоновыми деталями Приблизьте, и тайлы в стиле OSM загрузятся на лету. Три стиля карты на выбор.


Игра чисел: экономика маршрутов

В сердце SkyChart лежит экономическая модель, которой мы по-настоящему гордимся. Каждый маршрут рассчитывает месячную прибыль через конвейер, учитывающий:

  • Базовый спрос (население города x экономический множитель)
  • Сезонную вариацию (12 ежемесячных множителей на город)
  • Инвестиционные бонусы (гостиницы, поля для гольфа, концертные залы, тематические парки)
  • Региональную дипломатию (лучшие отношения = больше спроса)
  • Модификаторы событий (войны, нефтяные кризисы, пандемии)
  • Репутацию (показатели безопасности и обслуживания клиентов влияют на спрос глобально)
  • Конкуренцию (спрос делится по показателю привлекательности, ценам, лояльности, присутствию в хабе)
  • Возраст самолёта (самолёты после года списания стоят +40% к эксплуатации и теряют 15% спроса)
  • Цены на топливо (события ОПЕК могут удвоить ваши переменные издержки за ночь)

В результате получается система, где нет двух маршрутов, играющихся одинаково, и оптимальная сеть в 1935 году не похожа на оптимальную сеть 2005 года.

Квартальный финансовый отчёт, показывающий выручку, расходы и скользящий график прибыли Каждый квартал цифры рассказывают историю. Этот провал в Q3? Это было ОПЕК.

Дашборд эффективности маршрутов, показывающий маршруты, ранжированные по прибыли с данными тренда Эффективность маршрутов: каждый маршрут ранжирован по прибыли со спарклайнами тренда. Зелёный хорошо. Красный значит пора принимать жёсткие решения.


Что дальше

Мы сейчас на v0.2.17, что в версионировании SkyChart означает, что мы глубоко в полировке Фазы 16+. Основная игра завершена и очень играбельна. Вот что на взлётной полосе:

  • UI-звуки и фоновый звуковой ландшафт: клики кнопок, свисты панелей, аэропортовый эмбиент
  • Туториал первого запуска: 12-главный направляющий проход, чтобы новым игрокам не приходилось учиться на крушениях (финансовых, не буквальных… хотя и буквальных тоже)
  • Подготовка к релизу в Steam: страница в магазине, интеграция достижений, облачные сохранения

Мы строили SkyChart с философией, что менеджмент-симы заслуживают той же любви к UI, что получают экшен-игры. Каждый тултип, каждая анимация, каждая фича качества жизни существует, потому что мы спрашивали: «Что заставит нас не хотеть альт-табнуть?»


Следите за путешествием

SkyChart разрабатывается Casey Jones Labs, небольшой студией с большой любовью к играм, которые нас сформировали. Если вы выросли, дискутируя, стоит ли открывать маршрут в Анкоридж или инвестировать в тематический парк в Гонолулу, эта игра для вас.

Оставайтесь с нами для новых дев-блогов и держите откидные столики в вертикальном положении.

Команда Casey Jones Labs

Главное меню SkyChart с анимированными самолётами, пересекающими фоновую карту SkyChart: Airline Executive, выходит в Steam для Windows, macOS и Linux. Построен на Godot 4.