Эволюция авиасимуляторов

Эволюция авиасимуляторовГлюк с мостами в MSFS 2020

Ходят слухи, что современные игровые симуляторы типа Microsoft Flight Simulator (MSFS) реально используются в обучении будущих пилотов. Честно говоря, в такие слухи не очень верится: это как изучать боевые искусства по Mortal Kombat. Но потрясающий реализм современных игр как бы намекает, что всякое возможно…

Если дать игроку штурвал, шлем VR, кресло на гидравлической платформе с наклонами и тряской (5D), то это будет похоже на пилотирование настоящего самолёта. Есть реальные истории, как после многолетней игры на MSFS люди спокойно сдают на лицензию пилота, потому что в одномоторнике им известны все элементы управления.

А на гражданском лайнере полёт вообще бóльшую часть времени на автопилоте.

Вообще, первым в мире симулятором для лётчиков была бочка Антуанетта, сконструированная в 1910 году французской компанией Antoinette. До Первой мировой войны это был один из немногих авиаконструкторов в мире, который делал передовые монопланы. Симулятор выглядел так:

Бочка Антуанетта с пилотом во время тренировки:

▍ Игровые авиасимуляторы

Первый игровой авиасимулятор появился ещё до распространения видеоигр. В 1970-м году Sega выпустила электромеханическую игру Jet Rocket в виде игрового автомата:

Симулятор боевых полётов перемещал «самолёт» по 3D-ландшафту на экране и стрелял ракетами по целям, которые взрывались при попадании, типа как советский «Морской бой», только круче. Для имитации ночного вида использовалась специальная лента с флуоресцентной краской.

Игра Jet Rocket получилась впечатляющей и была даже признана лучшей на какой-то игровой выставке.

Но с появлением игровых приставок и персональных компьютеров авиасимуляторы стали отдельным жанром: Interceptor (1975), Microsoft Flight Simulator (1982), Midnight Landing (1987), Top Landing (1988), Air Inferno (1990), Steel Talons (1991).

90-е годы можно назвать расцветом жанра. В аваисимуляторы играли чуть ли не все, у кого была приставка или ПК, не то что жалкие 15 млн человек, как сейчас у MSFS. Некоторые из классических игр до сих пор распространяются через Steam, как Stunt Island (1992).


Здесь и выше — Stunt Island

На наших просторах играли в Comanche и Tornado.

Помню, когда к нам изредка заезжал в гости дядя, уволенный из ВВС СССР за хулиганство с табельным оружием, то он рубился в Tornado целыми днями. Видимо, считал её достаточно реалистичной, даже после ЧВВАУЛ и десятков вылетов на МиГ-21.

Даже под Linux в 90-е был авиасимулятор, он назывался SABRE Fighter Plane Simulator, сейчас на Github можно найти его исходники.


SABRE Fighter Plane Simulator

▍ Авиасимулятор в два килобайта

В качестве необычного примера можно посмотреть на авиасимулятор IOCCC Flight Simulator, который получил награду «Best of Show» на Международном конкурсе минималистичного обфусцированного кода на С (International Obfuscated C Code Contest) в 1998 году. По условиям, каждая программа должна иметь размер не более 1536 байт (не считая пробелы, табы и прочие служебные символы), в сумме обычно получается не более двух килобайт.


IOCCC Flight Simulator запускается на Unix-подобных системах при наличии X Windows. Управление стрелками, Enter возвращает штурвал в начальное положение. На экране отображается скорость в узлах, указатель курса (азимут) и высота в футах (высотомер). Игра эмулирует реальный 3D-мир и легкомоторный самолёт типа Piper Cherokee («Пайпер PA-28 Чероки»).

Запуск:

cat horizon.sc pittsburgh.sc | ./banks

Здесь banks — это название программы, а horizon.sc и pittsburgh.sc — два файла сценариев.

Скачать файлы можно со страницы конкурса:

Весь код симулятора:

#include                                     
#include                                   
#include                                   
#include                                  
                                          double L ,o ,P
                                         ,_=dt,T,Z,D=1,d,
                                         s[999],E,h= 8,I,
                                         J,K,w[999],M,m,O
                                        ,n[999],j=33e-3,i=
                                        1E3,r,t, u,v ,W,S=
                                        74.5,l=221,X=7.26,
                                        a,B,A=32.2,c, F,H;
                                        int N,q, C, y,p,U;
                                       Window z; char f[52]
                                    ; GC k; main(){ Display*e=
 XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
 *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
  XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
                                   XEvent z; XNextEvent(e ,&z);
                                       ++*((N=XLookupKeysym
                                         (&z.xkey,0))-IT?
                                         N-LT? UP-N?& E:&
                                         J:& u: &h); --*(
                                         DN -N? N-DT ?N==
                                         RT?&u: & W:&h:&J
                                          ); } m=15*F/l;
                                          c+=(I=M/ l,l*H
                                          +I*M+a*X)*_; H
                                          =A*r+v*X-F*l+(
                                          E=.1+X*4.9/l,t
                                          =T*m/32-I*T/24
                                           )/S; K=F*M+(
                                           h* 1e4/l-(T+
                                           E*5*T*E)/3e2
                                           )/S-X*d-B*A;
                                           a=2.63 /l*d;
                                           X+=( d*l-T/S
                                            *(.19*E +a
                                            *.64+J/1e3
                                            )-M* v +A*
                                            Z)*_; l +=
                                            K *_; W=d;
                                            sprintf(f,
                                            "%5d  %3d"
                                            "%7d",p =l
                                           /1.7,(C=9E3+
                              O*57.3)%0550,(int)i); d+=T*(.45-14/l*
                             X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
                             *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
                             179*v)/2312; select(p=0,0,0,0,&G); v-=(
                              W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
                               )/107e2)*_; D=cos(o); E=sin(o); } }

Обратите внимание, что программа не компилируется просто так, а только с конкретными параметрами компилятора. Под Linux можно использовать такой скрипт:

#! /bin/sh
cc banks.c -o banks -DIT=XK_Page_Up -DDT=XK_Page_Down \
        -DUP=XK_Up -DDN=XK_Down -DLT=XK_Left -DRT=XK_Right \
        -DCS=XK_Return -Ddt=0.02 -lm -lX11 -L/usr/X11R6/lib

Вместе с программой распространяются несколько файлов декораций с расширением .sc:

  • horizon.sc — просто горизонт, этот сценарий логично загружать в большинстве случаев.
  • mountains.sc — альтернативный горизонт, немного более гористый.
  • pittsburgh.sc — пейзаж центра Питтсбурга (на скриншоте вверху). Изначально центр города расположен справа.
  • bb.sc — простая полоса препятствий. Попробуйте пролететь над зданиями и под мостами.
  • pyramids.sc — полёт над гробницами древних фараонов в вымышленном египетском пейзаже.
  • river.sc — текущая река с неба.

Cимулятор считывает декорации из стандартного ввода при запуске. Можно ввести несколько файлов декораций, если общее количество строк не превышает 1000. Пример:

cat horizon.sc pittsburgh.sc | ./banks
cat mountains.sc bb.sc | ./banks
cat mountains.sc river.sc pyramids.sc | ./banks

Как вариант, есть порт этого симулятора на JavaScript, который запускается в браузере.

Формат декораций очень прост. Это список 3D-координат, а симулятор просто рисует отрезки линий от точки к точке, как указано в файле. 0 0 0 используется для завершения серии последовательных отрезков. Таким образом, можно без проблем написать собственные декорации, например, со своим городом (вот декорации Амстердама, а симулятор портирован на ClojureScript).

Вообще, на конкурсе маленьких демо-программ можно найти много интересного. Например, вот демка менее 4 КБ, которая генерирует разнообразные пейзажи с разрешением FullHD 1080p (исходный код, бинарник, ниже кадр из презентации автора этой демки, Иниго Килеса):


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

▍ Современные симуляторы

Первая версия Microsoft Flight Simulator вышла в 1982 году, вторая — в 1984-м, 3.0 стала доступна в 1988 году, а 4.0 — в 1989-м. То есть эта старая и традиционная тема для Microsoft, но в 21 веке случился некоторый затык. Очередной MSFS вышел 2006 году, а затем в течение четырнадцати лет Microsoft практически ничего не делала. В это время выросли в настоящую красоту другие симуляторы: например, X-Plane от Laminar Research и Prepar3D от Laminar Research.

Но самым популярным авиасимулятором остаётся MSFS, последняя версия Microsoft Flight Simulator 2024 вышла в ноябре 2024 года.


В Microsoft Flight Simulator 2024 добавили полёты на воздушном шаре

По минимальным системным требованиям видно, что это не рядовая игра: 16 ГБ оперативной памяти, 50 ГБ места на диске (это ещё нормально, потому что прошлая версия требовала 150 ГБ), видеокарта минимум Radeon RX 5700 или GeForce GTX 970 и т. д. Это только самый необходимый минимум, а «идеальные» характеристики — 64 ГБ RAM и топовая видеокарта RTX 4080/RX 7900 XT.

Стоимость игры начинается от $70, количество самолётов и аэропортов зависит от версии, самая дорогая обойдётся аж в $200.

Выход MSFS 2024 нельзя назвать удачным: в первое время игроки жаловались на слишком долгое время загрузки (до часа). Разработчики пояснили, что проблема связана с огромным объёмом трафика: большое количество игроков перегрузило инфраструктуру Microsoft. Ошибкой компании было раздавать файлы с собственных серверов, а не через Steam.

MSFS 2024 в значительной степени работает через облачные сервисы для раздачи файлов об игровом мире, поэтому размер изначального дистрибутива уменьшился с сотен гигабайт до 29 ГБ (например, на торрентах раздача пиратской версии MSFS 2020 занимает 261,74 ГБ, а 2024-я ещё не вышла).


F/A-18e Super Hornet в Гранд-Каньоне (Колорадо), Microsoft Flight Simulator

Интересно, что похожие проблемы были во время запуска предыдущей версии игры MSFS 2020. Всё это указывает не столько на неграмотность разработчиков, сколько на сверхпопулярность этой конкретной игры. У неё огромная армия фанатов. Они ждали игру четыре года. Понятно, что сразу ринулись её опробовать в первый же день после выхода.

MSFS 2024 — крайне реалистичный симулятор, в нём доступны полёты над любыми частями Земли, которая значительно приближена к реальности: улучшенные цифровые карты рельефа, вручную детально отрисованы 150 больших и 2000 малых аэропортов (для одномоторных самолётов), 10 000 вертолётных площадок, 2000 достопримечательностей и 900 нефтяных платформ.


Нефтяная платформа в MSFS

Они оцифровали даже трещины на асфальте в реальных аэропортах (тут Белград):

Всё остальное сгенерировано: 40 тыс. аэропортов, 80 тыс. вертолётных площадок, 1,5 млрд зданий и почти 3 трлн деревьев на Земле. Над игрой трудилось 800 разработчиков в течение четырёх лет.

В каком-то смысле эта «цифровая копия Земли» стала ответом на неудачный запуск Метавселенной в исполнении Meta, Oculus, Google, Apple и прочих. Первая даже сменила название ради Метавселенной, но ничего не вышло. Сейчас хайп вокруг VR у населения полностью вытеснился хайпом вокруг ИИ.

А может, Метавселенную сделают на цифровой копии Земли, почему нет? Если такая копия почти готова и занимает всего 500 ГБ. Нужно добавить туда только планировку всех домов и квартир, а потом и цифровые копии всех жителей.

В авиасимуляторе на самолёте или воздушном шаре можно облететь весь мир, не вставая из-за компьютера. Конечно, сгенерированные ландшафты не полностью соответствуют реальности: см. глюки с взлетевшими реками и непроходимыми мостами как стена (на КДПВ) в MFS 2020.

В общем, реально оцифрованные места выглядят хорошо, а сгенерированные — не очень.


Река в Сарагосе поднялась над землёй примерно на 100 метров

Ещё одним нововведением Microsoft Flight Simulator 2024 стала возможность приземлиться практически в любом месте. Разработчики говорят, что полетать можно даже в таких местах, куда вас никогда не пустят на настоящем самолёте (они приводят в пример Казахстан). Или в городе над крышами домов. Или по дну Гранд-Каньона, куда в реальности вы никогда не спуститесь:

Несмотря на громкий выход Microsoft Flight Simulator 2024, не стоит забывать и о других отличных авиасимуляторах, таких как упомянутые выше X-Plane и Prepar3D.

X-Plane

По слухам, в Москве (и некоторых других городах) в торговых центрах стоят авиатренажёры на гидравлической платформе, почти все сделанные на X-Plane или Prepar3D.


Здесь и выше — Prepar3D

Есть ещё симулятор AeroflyFS Flight Simulator с продвинутой поддержкой VR-оборудования и другие.

▍ Боевые симуляторы

Из боевых симуляторов можно назвать «ИЛ-2 Штурмовик» (1C Game Studios, Кипр), Digital Combat Simulator (Eagle Dynamics, г. Дубна, РФ, игра бесплатна 14 дней каждые 6 месяцев), хотя это весьма специфическая индустрия.

Digital Combat Simulator

Летать или сражаться — немного разный опыт, да и задачи разные.


Digital Combat Simulator: истребитель F16C, миссия в Сирии

В конце упомянем ещё один симулятор FlightGear. Он может не такой продвинутый, зато полностью бесплатный, есть версии под Linux, FreeBSD, MacOS и Windows, размер дистрибутива 1,8 ГБ. Отдельно доступна для скачивания подробная карта Земли (86 ГБ в архиве). Как вариант, можно летать с подгрузкой карт в реальном времени из интернета через сервис TerraSync.

FlightGear

Интересно, что современные авиасимуляторы из-за своей реалистичности можно использовать даже в туристических или экскурсионных целях. Например, изучить лесной/горный маршрут, по которому хотите пройти, посмотреть на пляжи и гостиницу, куда жена просится в отпуск, или полетать над родным городом, куда нельзя возвращаться ещё много лет, и т. д.

© 2024 ООО «МТ ФИНАНС»

Telegram-канал со скидками, розыгрышами призов и новостями IT 💻


 

Источник

Читайте также