СГИ Dogfight.

SGI Dogfight
Last updated: 27 February 2025

\n Программа Dogfight представляет собой демонстрационный проект, написанный Гэри Таролли (впоследствии основателем компании 3dfx) в Silicon Graphics, Inc. летом 1983 года. Она знаменует важные этапы развития интернета и сетевых технологий: игры с многопользовательским режимом и использование мультикастинга для передачи данных.

Обзор

Dogfight можно рассматривать как три отдельных программы. Первая — это симулятор полёта (flight), второе приложение — воздушный бой, где несколько пользователей управляют самолётами через интерфейс flight; третье называется shadow и позволяет наблюдателю видеть то же самое, что видят участники игры.Возможности программы включают режим 'воздух-шоу', который активируется с помощью командных опций -i (загрузка сохранённого маршрута) и -o (сохранение текущего пути). В этом случае пользователи могут записывать траектории полётов для последующей синхронной демонстрации сложнейших воздушных построений.Для военных нужд, таких как обучения на базе Уильямс АФБ и исследования взаимодействия человека с техникой (human-interaction studies), была добавлена опция -h. Она заменяет стандартный пульт управления на дисплей типа Head-Up Display (HUD). Это улучшало обзор, но снижал частоту кадров.Доступные самолёты:- Cessna 150- P-38 Lightning- Boeing 747- F-16- F-15 (в GT/GTX/VGX версиях описывался как похожий на F-14, но это неточно для реального F-15)- F-14DПозднее добавлены:- различные модели самолётов F-16- F-18- Boeing 727\n

История

Программа Flight была написана летом 1983 года Гэри Таролли в качестве демонстрации для рабочих станций SGI, вдохновленная авиашоу Blue Angels на базе Моффет Филд.В 1984 году начали добавлять сетевые возможности. Первоначально две машины соединялись через последовательный кабель — это позволяло около семи кадров в секунду и до 500 полигонов за секунду на процессоре Motorola 68000 с примерно 1 MIPS.К SIGGRAPH 1984 добавили поддержку XNS multicast, что дало возможность играть через Ethernet. После мероприятия сетевая версия Flight стала распространяться вместе со всеми рабочими станциями SGI.В этой версии пользователи могли видеть самолеты друг друга, но не взаимодействовать с ними.Предположительно в начале 1985 года появилась игра Dog. Обе программы стали поставляться как демонстрационное ПО для новых систем SGI. Пакетные сообщения передавались кадрово и количество игроков ограничивалось из-за сетевых ресурсов (по разным данным, от 10 до десятков участников).Из-за перегрузки сети многие администраторы удаляли Dogfight для предотвращения злоупотреблений. Другие устанавливали лимиты на игровое время.Позже добавили функцию dead reckoning (предсказание положения) — это уменьшило объем передачи данных.В 1986 году появилась поддержка протокола UDP broadcast, что требовало интенсивного использования сетевых ресурсов. Это делает программу одной из первых игр с использованием IP Suite, но широкие вещательные пакеты могли блокироваться шлюзами и не передавались через интернет.К 1988 году Dogfight разделился на две версии: одна для большинства SGI машин (3000 серия, 4DxxG), другая — только для мощных GT/GTX/VGX систем.\n Эти версии могли взаимодействовать друг с другом в одной игре. Версия на базе процессора 4D/20 была замечена, работающей при около 12 кадров в секунду; более быстрая модель 4D/70 могла достигать скорости от 20 до 25 fps. Другая версия работала на GT с примерно 15 фреймов в секунду.В документации Irix 6.5 упоминалось, что самолеты Boeing 727 и F-14 не были доступны для выбора в обычной версии программы, но присутствовали в специальной редакции для GT/GTX/VGX.SGI предоставляла исходный код владельцам IRIS по запросу при подписании соглашения о неразглашении. В некоторых сообщениях Usenet утверждалось, что код не поставляется отдельно, а включается в виде 'Software Exchange Release Tape'. За эту услугу взималась плата $100; пользователь должен был специально запросить добавление исходного кода на ленту.Существовали мнения о том, что эта сумма была за физический носитель и доставку, а не сам код. Возможно, изначальная политика SGI предусматривала бесплатное предоставление кода, но позже они начали взимать плату.Программисты использовались этот исходный код для обучения работе с UDP.Для версии IRIX 3.3 в конце 1989 года добавили поддержку IP-мульткаст и игра стала доступна между любыми совместными хостами через Интернет, если у них был мультимедийный доступ (что было редкостью). Мультикаст-адрес для игры — 224.0.1.2 (SGI-DOG.MCAST.NET), что делало её третьей программой с выделенным адресом после VMTP и NTP.Со временем SGI использовала тот же адрес в своём объект-сервере, вызывая путаницу у администраторов систем.=

Неформальные модификации

Благодаря доступности исходного кода клиенты компании создавали свои собственные версии игры с различными изменениями и распространением их среди пользователей.==

Разделение на точечную коммуникацию

Версия программы с заменой UDP широковещания на прямую связь между двумя хостами была создана в Лундском технологическом институте (Швеция). Код патча для этой версии был опубликован на comp.sys.sgi в сентябре 1989 года. Причиной этого разделения было обеспечение возможности машинам, находящимся на разных подсетях, играть друг против друга. Также это могло быть направлено на снижение сетевой нагрузки по сравнению с широковещательной версией и предшествовать добавлению мультикаст-режима в официальную реализацию.==

Сервер управления полётами и альтернатива TCP/IP

До 1988 года, у армии США была копия программы XNS от BRL (Ballistic Research Laboratory), но она не работала на их сети. Инженер Рон Натале получил доступ к исходному коду и смог создать версию для протокола TCP/IP. Эта реализация взаимодействовала через центральный сервер, который имел собственный дисплей управления воздушным движением.Существует мало информации о том, что этот вариант был использован или повлиял на официальную версию программы с точки зрения сетевого кода.==

Порт для совместимости Sun Microsystems

В 1992 году упоминалось портирование dog/flight под библиотеку pixrect - низкоуровневую графическую систему от компании Sun. Это было описано как «нелегальная копия программ SGI, перенесённая на платформы Sun». В Usenet группе rec.aviation.simulators также упоминался другой порт для SPARCstation с улучшенной производительностью.Ещё один вариант порта был представлен в 1990 году и работал «достаточно хорошо» на цветных GX Sparcstations, но терял часть реализма из-за отсутствия заполнения полигонов. Неясно, была ли это отдельная версия или же она уже упоминалась ранее.Автор одного обсуждений получил исходный код от SGI и сообщал о нарушении NDA (Non-Disclosure Agreement) при его распространении через FTP-сервер.\n ==

Научная фантастика, самолеты времен Первой мировой войны и X-29

В сообщении Usenet от 1993 года один пользователь упомянул о версии полета с моделями "X-wing" (Звездные Врата) и TIE fighter в осеннем выпуске журнала SGI 'IRIS Universe' за октябрь 1987. Ответивший на это пользователь из NASA's Langley Research Center подтвердил, что видел такую версию программы на компьютере SGI 3130 и добавлял информацию о новых моделях самолетов с новыми вооружениями.Список персонажей:- X-wing: лазеры как основное оружие.- TIE fighter (с пилотом Снупи): также оснащен лазерами и управляется мультяшным героем.- Grumman X-29, с обычными вооружениями.- Sopwith Camel: снова со Снупи в роли пилота.- Fokker Triplane (снова с участием Снупи).- Крейсер из Star Trek: The Original Series — клингонский корабль; оружие включает фазеры и фотоны.Однако, у них был только скомпилированный бинарный файл без исходного кода. В 1994 году другой пользователь заявил авторство модификации программы и предложение за источники.В более раннем сообщении упоминалось о возможных повреждениях местности от вооружений клингонского корабля.Разработчики:- Основной разработчик: Роб Мейс (Rob Mace), возможно, с 1988 года. Включен в версию для IRIX 6.5.- Гари Таролли — оригинальный автор программы- Дэвид 'Ciemo' Циемиевич и Эндрю Черенсон работали над сетевыми коммуникациями (UDP, IP multicast).- Маршалл Лейвин совместно с Робом Мэйсом создавал панель управления.- Тад Беир — соавтор геометрии для F-18- Барри Бруилетт и другие разработчики внесли вклад в модели самолетов.Звуковые эффекты: Крис Перри, Крис Шоэнман\n

Игровой процесс

=

Город огней

В публикации Usenet от 1991 года один пользователь спросил о 'любопытном городе', который, согласно руководству, должен был находиться к северо-северо-западу от аэропорта. Tarolli и другие объяснили, что физически такого города там нет; вместо этого ночью показываются световые эффекты как будто бы это город.=

Конус угроз САМ

Нажатие клавиши 'T' (с зажатием shift) в игре вызывает появление прозрачных куполов вокруг коричневых прямоугольников на болотах. Эти фигуры символизируют наземные ракетно-зенитные комплексы, а купола показывают опасную для самолета зону действия САМов.Эта функция была добавлена по просьбе базы ВВС Уильямс и включена в версию с опцией -h. Однако это поведение не было задокументировано.В игре изначально отсутствовал код, запускающий реальные ракеты САМов; только отображались зоны угрозы для них.Но была создана модифицированная версия (вероятно сотрудниками Уильямс АФБ), которая включала и эту функцию. В Канаде в университете Калгари имелась копия этой редакции.Дэвид Джеванс из этого университета упомянул, что существуют разные модификации игры: одна на IRIS Power Series с градиентной текстурой самолетов.В официальной версии САМы были добавлены позже. Однако они появились только в 'низкокачественной' редакции и не поддерживались в более продвинутых вариантах (GT/GTX/VGX). В этой модификации, ракеты нельзя было сбить; у них была большая скорость разгона по сравнению с оружием игрока. Через 10 секунд после запуска они взорвались из-за отсутствия топлива.Если в момент старта САМа на борту самолета были другие боеприпасы (ракеты или 'сайдвиндер'), то все эти средства уничтожались, и игрок не мог стрелять до момента ликвидации угрозы.В Германии также была доступна одна из этих версий.\n =

Физика игры

==

Связь рыскания и крена

Физические модели в игре не учитывали связанность рысканий (yaw) с креном. Tarolli знал, что это явление существует, но у него отсутствовали ссылки на соответствующие формулы для их использования или он сам был неспособен вывести эти уравнения. Также он сомневался в том, как форма крыльев влияет на эту связь и будет ли она сильной при любых конфигурациях крыла.В результате этого Tarolli не смог реализовать это в коде.==

Затягивание (stall) и штопор

Два пользователя жаловались, что физика затяжек/штопоров в игре отличается от реальной жизни: они считали, что такие ситуации происходят реже или не так часто. Они также отмечают странное поведение при возникновении таких состояний.В ответ на это Tarolli указал, что хотя предсказуемые затяжки возможны и понимаемы, резкие штопоры — нет; он добавил, что моделирование малых затяжек сильно зависит от формы крыла. Для этого потребовались бы индивидуальные уравнения для каждого типа профиля самолета, а расчеты были бы сложными и требовали значительных ресурсов.Один из пользователей отметил несправедливость критики в адрес Gary за физику игры: он напомнил о том, что основной целью было создание веселой игрового процесса. Он также указал на то, что аэродинамические данные часто описываются очень обобщенно и не всегда точно представлены даже в книгах по тематике.Tarolli сам признал сложность моделирования реальных явлений: он ввел случайные штопоры для сильных затяжек (в зависимости от их тяжести), чтобы сделать игру более интересной. Он также подчеркнул, что не все элементы в симуляции должны быть абсолютно точными — часть функций добавлена ради развлечения.

Использование в научном исследовании

=

1989

=

Ряд исследователей подключили симулятор полёта к системе SIMNET вооружённых сил США. В их отчёте говорится:«Мы смогли перевести SG 'Dogfight' PDU, перехватывая пакеты через ETHERNET с помощью PC/AT и Excelan 205E ETHERNET платой. Программное обеспечение для этого процесса захватило широковещательные сигналы SG в формате UDP/IP и сохраняло их на диск. Информация из PDU была преобразована или переведена в пакеты SIMNET, после чего они были переданы обратно через ETHERNET к модулям M1 танков SIMNET».Сам симулятор работал под управлением рабочей станции Silicon Graphics 4D/70GT.=

1990 ===Исследователь из Института технологий ВВС США попытался снизить стоимость тренажёров для пилотов, используя шлемовую систему отображения и симулятор на базе ПК. Для этого была предпринята попытка перенести программу dog/flight на платформу PC с процессором 80386 (20 МГц) и сопроцессор Intel i387, а также использовалась плата Real World Graphics Ltd., содержащая два RISC-процессора Intel i860. Операционная система — ESIX UNIX.Из-за необходимости поддерживать работу с шлемом для отслеживания движений головы пользователя ПК должен был иметь устройство, управляющее этими данными.Программа симулятора должна была оставаться кроссплатформенной и не переписывалась на ассемблер. Вызовы графического интерфейса SGI были «эмулированы» — переведены в вызовы библиотеки PC Reality board.Исследования проводились с самолётами F-14D, F-16 и Cessna C150 (у которой было меньше полигонов). Проблема возникла при попытке использовать модель F-15 из-за несовместимости графического ПО ПК. Однако это могло быть связано только со сложностью моделирования нескольких самолётов одновременно.Для успешного завершения эксперимента требовалось, чтобы PC обеспечивал частоту кадров 15fps с использованием Z-buffer и плоской заливки полигонов. Производительность ПК сравнивалась также со SGI IRIS 4D/85GT без изменений в симуляторе.\n Было отмечено, что неотредактированная версия программы использует обширные возможности графического конвейера Silicon Graphic's. Программа включает новые функции графики от SGI 4D архитектуры и активно применяет старые методики из устаревшего IRIS 31XX, которые поддерживаются на машинах с 4D архитектурой, но не оптимально используют её возможности. Однако эксперимент оказался безуспешным: часть функций SGI трудна для переноса и была либо заменена обходными решениями, либо исключена из программы. Не было реализовано ограничение на крыльевые зависания или перегрузки (G-limits), что позволило самолётам выполнять внешние манёвры. Также пришлось отказаться от детекции столкновений, и теперь модели могли пролетать сквозь объекты.Кроме того, плата PC Reality не смогла обеспечить заявленную производительность по количеству полигонов или кадров в секунду; некоторые функции отсутствовали. Проблема возникла из-за методов работы с 3D графикой: они не позволяли напрямую записывать данные на экран, что вызывало проблемы и ограничивалось до 4 FPS.Ещё одной целью было объединение PC и IRIS для совместной работы. В отведённое время это сделать не удалось из-за различий в поддержке UDP/IP: SGI предоставлял возможности на более низком уровне, чем ESIX.=

1991

В проекте по разработке недорогого симулятора использовались коды с СГИ и объектно-ориентированные техники программирования на язык C++.=

1992

=

Другая группа исследователей модифицировала программу для записывания действий пилота, чтобы использовать эти данные в индуктивной модели.\nЭта программа использовала бы машинное обучение для создания автопилота по конкретному маршруту полета. Исследователи выбрали Cessna в качестве самолёта, заявив, что проще научиться управлять именно этой моделью среди прочих. Они также утверждали, что руль не оказывает «реалистичного влияния на летательный аппарат», хотя непонятно, распространяется ли это утверждение только на Cessna или же и на другие самолеты в симуляции.На компьютерном форуме comp.sys.sgi пользователь отметил ранее, что руль существенно важен для реального полета на Cessna, но почти не влияет на её модель в программной имитации. В других же моделях эффект был минимальным.Исследователи указали, что симулятор летательного аппарата является недетерминированным из-за работы под управлением многозадачных систем Unix и не на специализированных реалтаймовых устройствах. Это значит, что повторение одних и тех же действий в разных запусках может давать разные результаты — симулятору могут мешаться другие процессы или операции ввода-вывода.Исследователи надеялись, что их работа по решению этих проблем будет полезна для реальных условий полетов и ситуаций вроде влияния изменчивых ветров на самолет.