«Серьёзные или прикладные игры – это игры, разработанные для целей, отличных от развлекательных. Прилагательное «серьезный» обычно добавляется к видеоиграм, используемым в таких отраслях, как оборона, образование, научные исследования, здравоохранение, управление чрезвычайными ситуациями, городское планирование, инженерия и политика».
Википедия
Индустрию “серьёзных игр” часто считают чем-то отдельным от общего геймдев-сообщества. Очень зря, потому что военные и гражданские симуляторы, системы планирования и прогнозирования, средства визуализации – в XXI веке это те же компьютерные игры, только сложнее и совершеннее.
Они не совсем обычны. К ним предъявляются самые жёсткие требования в части надёжности, корректности работы, отсутствия багов. Если у рядового геймера неожиданное зависание игры чревато максимум испорченным настроением… то для оператора, управляющего полётом настоящего космического корабля с Земли – потеря управления даже на минуту может быть критичной. Потому в авиационной и космической индустрии, где я с 2012 года работаю над “серьёзными играми” – поддерживаются высочайшие стандарты качества. Здесь я расскажу о некоторых из проектов, в разработке которых я принимал непосредственное участие – как программист, руководитель команды и гейм-дизайнер.
Начало работы
Центром управления полётами (или ЦУП) называют место, откуда десятки людей в реальном времени руководят полётами множества космических аппаратов – автоматических и пилотируемых, околоземных и межпланетных, государственных и коммерческих. Именно здесь собирается вся информация из космоса и принимаются решения. Это мозг и сердце любой космической миссии.
Сам аппарат находится где-то далеко-далеко от ЦУПа – в сотнях километров над Землёй, и на расстоянии в тысячи. Короткие и редкие сеансы “общения” – это всё, на что бессонные операторы могут рассчитывать.
Люди с недоверием и тревогой поднимают взгляд в небо – где там наш аппарат? Над чем пролетает он сейчас? Цел ли он? Не сели ли его аккумуляторы? Многие часы царит неопределённость – пока не приходит условленное время, и огромные тарелки антенн не начинают выцеливать невидимую точку в небе. Люди ждут сигнала, гадая – не случилась ли беда, из-за которой их аппарат больше уже никогда не появится на связи?..
Чтобы специалисты всегда чётко видели и знали, что же именно и где происходит со спутником – и создаются такого рода “серьёзные игры”, симуляторы-визуализаторы ЦУП. Операторы ЦУП смотрят на огромный настенный экран, где спутник показан во всём великолепии своего сложнейшего устройства. Легко оценить, что и как он делает – как заряжает аккумуляторы, какие программы крутятся у него внутри, что и как у него в “распорядке дня”.
А если случается авария, и аппарату резко плохеет? Нельзя же просто так взять и осмотреть спутник в поисках поломки. Да мы даже почти не видим его с поверхности! Специалисты на Земле ставят диагноз по тем скудным сведениям, которые о себе сообщит сам “больной”. Тут на помощь приходят симуляционные возможности, позволяющие восстановить картину поломки.
Именно с разработки симулятора-визуализатора для ЦУП в составе команды опытных программных инженеров я и начинал полноценное знакомство с enterprise-разработкой “серьёзных игр”. Поскольку я уже имел небольшой опыт разработки 3D-игр, то моими обязанностями стало поддержание визуального представления – трёхмерной картографической основы. Сюда же входили подгрузка и обработка данных, реализация UI, выбор стилистических решений для отображения различимых объектов.
Существовал прототип отображения, но на момент начала работ – многие вещи делались с нуля и ещё не были определены. Не было выработано целостной концепции игровых ресурсов, определены потребности в части фич, установлены возможности и ограничения движка. Я впервые столкнулся с “синдромом Daikatana” – применённая в прототипе модель КА оказалась конструкторской и содержала более 1.000.000 полигонов! Именно с наведения порядка в части ресурсов, добавления востребованного функционала в движок отображения и построения стандартного workflow для дальнейших доработок – и началось моё участие в проекте. Впоследствии были опрошены реальные инженеры ЦУП на предмет их потребностей, и программа получила несколько режимов, гибкие настройки, наглядный и контрастный дизайн.
Проект был завершён, введён в эксплуатацию и успешно функционировал на протяжении как минимум одной реальной космической миссии.
Стратегический симулятор
Каждый год в строй встают новые противокорабельные ракетные комплексы, защищающие берега нашей Родины. Но любой фанат стратегических игр знает – просто “наклепать танчики” недостаточно для победы. Надо ещё и правильно их применить. Нужно предугадать, как поведёт себя противник, и сыграть на опережение. Но когда дело касается шахмат или какого-нибудь Starcraft – это одно… а как быть с реальными ракетными установками?
Для этого по всему миру создаются стратегические симуляторы. Представьте кооперативную мультиплеерную RTS, где за каждую из сторон конфликта выступает несколько игроков. Кто-то выступает в роли командира-координатора, другие берут на себя связь, авиацию или корабли. Отрабатываются разные стратегии нападения и защиты. Все юниты не просто достоверно скопированы с настоящих – они прописаны так точно, как знают их сами производители.
Первый вариант стратегического симулятора использовал для демонстрации тот же движок, что и “космическая” разработка. Это был многопользовательский проект, позволяющий игрокам двух сторон одновременно “встать за рычаги” ракетных комплексов, кораблей, самолётов и ещё десятка различных видов настоящей боевой техники. Проект имел невероятный потенциал для расширения – конфигурируемый и легко модифицируемый инструментарий позволял модернизировать “игровой процесс” в кратчайшие сроки, а наиболее успешные из “проигранных” сценариев могли напрямую конвертироваться в перечень приказов для сидящих на своих боевых постах командиров. Также данная система использовалась для создания красочных демо-роликов и для визуализации результатов учений и манёвров.
В этом проекте мне была целиком отдана “наглядная” сторона вопроса. Уже отработанный workflow был применён и расширен, все графические ресурсы получили обособленный порядок обновления, а движок визуализации и игровая логика окончательно разделились. Здесь был полноценно использован движок рельефа, поскольку вопрос высот очень важен для некоторых из моделируемых приборов. Режимы наблюдения расширились “картографическим” и “реалистичными” вариантами, где первый давал удобное стратегическое управление сражением, а второй – позволял посмотреть на мир “из окна” управляемой боевой машины.
Проводились также эксперименты по добавлению eye-candy элементов – облаков, океана, деревьев и травы. Однако, все эти наработки либо не попали в релиз, либо были убраны как не соответствующие “чистому и строгому” стилю военного симулятора. Позднее, мной был подготовлен прототип с использованием новейших технологий и движка Unity 4.8. Не затрагивая вплотную вопросы реализации логики, прототип демонстрировал возможности по улучшению графической составляющей:
- Высокополигональными реалистичными моделями боевой техники.
- Продвинутой настраиваемой системой освещения и материалов.
- Системой погоды (с облаками, туманом и осадками) и смены времени суток. В облаках можно было спрятаться, а также они собирались вокруг горных вершин.
- Тотальной динамической разрушаемостью объектов.
- Интерактивной растительностью с возможностью автогенерации по участку карты земной поверхности.
- Системой авто-камер, самостоятельно подыскивающей лучший ракурс для “кинематографичных” событий.
- Тщательно воссозданными эффектами для особых событий, таких, как подрыв корабля.
- Полным просчётом всех игровых данных на сервере.
- Скриптовой системой с подгрузкой элементарных “поведений”, позволяющей серверу подключать десятки игроков-наблюдателей.
(логотип замазан по требованию работодателя)
Переход на мобильную платформу
Разработанное средство для ЦУП получило “широкую известность в узких кругах”. Возник интерес к переносу симулятора на сверхзащищённую мобильную платформу, и управлять ходом воплощения этого проекта доверили уже мне. Заранее скажу, что платформа – это не привычные Andoid или iOS, а довольно редкая разновидность Linux. Бывают мощные платформы, манящие разнообразием своих возможностей. Бывают те, на которых просто программировать. Бывают гибкие, где возможны самые невероятные фокусы. А нам досталась противная, устаревшая и неудобная.
Вдобавок ко всему, крупная проблема заключалась в том, что платформа де-факто не имела аппаратной поддержки 3D. Совсем. Абсолютно. Совершенно. Ноль. Тем не менее, на ней кое-как существовал OpenGL в Software Mode – а трёхмерная визуализация требовалась срочно и качественно.
Потребовалась разработка нового движка, способного функционировать в Software Mode. Ограничения платформы очень быстро встали в полный рост – обработка графики на CPU медленна и реализована из рук плохо, так что реально мы могли рассчитывать на мощности, примерно сопоставимые с производительностью телефонов конца 2000-х! Узким местом конвейера рендеринга, неожиданно, оказалось текстурирование.
Был установлен бюджет полигонов и бюджет текстур, под которые требовалось подгонять сцену. Чтобы избежать катастрофы, пришлось, оценив минимальные требования UX, срочно перепроектировать общий дизайн под использование минимума текстурированных объектов. Для этого был разработан новый движок трёхмерной визуализации, способный выводить всю требуемую графику с предельной экономией бюджетов и производительности.
Несмотря на очевидно меньшую производительность и функциональность, мобильное решение было встречено с восторгом – альтернатив на данной платформе ему как не было, так и нет. Проект уже обзавёлся тремя “продолжениями” – и, вероятно, останется в строю до самой смерти мобильной платформы.
Компьютерный полководец
Разработанный стратегический симулятор является достаточно совершенным средством – однако, по природе своей он мультиплеерный. Далеко не всегда это удобно – ведь для отработки того или иного сценария надо собрать достаточно игроков. Плюс, игровое время течёт примерно с той же скоростью, что и реальное. Сколько времени займёт провести 100 симуляций? А 1000? А 10.000?
Потому были начаты работы по реализации “компьютерного полководца” – экспериментальной системы искусственного интеллекта, способной играть против игрока либо “сама с собой”, выбирая наиболее эффективные сценарии и стратегии. По сути, это симулятор со встроенным ИИ, способным быстро и эффективно предсказывать действия противника и отвечать на них. Виртуальный шахматист, спарринг-партнёр, машина-советчик – “компьютерный полководец”, как моя разработка была названа в газете.
В основе системы лежат нейроподобные алгоритмы. Интеллект “компьютерного полководца” хоть и не самообучаем, но умеет строить логические цепочки “если-то”, выдвигать гипотезы, отыскивать путь к достижению цели. С учётом надобностей проекта, был сменён и движок. С миграцией симулятора на последнюю версию Unity, удалось найти компромисс между упрощённым и наглядным визуальными стилями.