Flash был за пределами браузеров в нулевые, а ты и не знал. Как он использовался в DirectX играх

Flash был за пределами браузеров в нулевые, а ты и не знал. Как он использовался в DirectX играх

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

В 2004 был (разработан) выпущен новый стандарт скриптового движка Action Script 2.0.

Но были и те-кто додумался "сделать из буханки" - трамвай (но зачем?)

Test Drive Unlimited (2006)

тропический остров в океане

французские разработчики Test Drive Unlimited применяли его в своем движке Twilight, написанного на Visual C++.

Twilight применялся и в других играх компании, например в сиквеле - TDU2 и Alone in the dark (2008)

Исходный код был утерян, со слов разработчиков его не осталось.

Но был запущен проект по восстановлению исходного кода OpenTDU (примерно как OpenTTD(transport tycoon deluxe)), таким образом мы можем посмотреть код, как все это было примерно реализованно (exe файл поддается декомпиляции и видим функции игры как 686 ассемблер, на данный момент переписано около 1200 из 20500 функций) и извлечены и переписаны шейдеры с D3D9 на Vulkan.

В целом игра использует не так уж и много внешних библиотек, так как применялась определенная кроссплатформенность. (Изначально разрабатывали под Xbox 360).

Из крупных: библиотека Havok Для игровой физики, bink (для проигрывания видеофайлов и виртуальная машина flash.

Flash применялся для элементов HUD (спидометров и прочих информационных элементов).

Как Spark (Flash Player) будет осуществлять взаимодействие флэша с плюсами?

Точно также как и Scaleform GFx (применявшийся в Unreal 3):

1.Игра загружает Flash-ресурс в пользовательский FlashResource

2.Движок использует внутреннюю VM(виртуальную машину), которая:

  • анализирует теги SWF/VMF
  • интерпретирует ActionScript 1-2
  • Управляет DisplayList
  • обрабатывает видеоклипы и спрайты

3.Класс FlashPlayer - уровень абстракции, который:

  • выбирает корневой клип
  • выполняет навигацию
  • Взаимодействует с Flash VM через глобальное состояние

Ознакомиться с кодом можно здесь:

Реалистично-мыльная эра Unreal 3

Выход седьмого поколения консолей ознаменовал и выход новой версии движка. Раньше UI в Unreal до 4 был реализован сторонними библиотеками.

В Unreal Engine 3 была реализована интеграция с Scaleform GFx — промежуточным программным решением, используемым для создания пользовательских интерфейсов (UI) и дисплеев на лобовом стекле (HUD) в играх.

Вот как ActionScript использовался в UE3:

  • Разработка пользовательского интерфейса и HUD:Scaleform GFx позволял разработчикам создавать пользовательские интерфейсы и HUD-дисплеи с помощью Adobe Flash, которые затем экспортировались в виде SWF-файлов. Эти SWF-файлы содержали код ActionScript для динамических элементов, анимации и взаимодействия внутри пользовательского интерфейса.
  • Связь с UnrealScript:UnrealScript, нативный язык сценариев UE3, взаимодействовал с ActionScript в рамках роликов GFx. Этот GFxMoviePlayerкласс в UnrealScript предоставлял методы для загрузки и управления роликами GFx, а также обеспечивал взаимодействие между игровой логикой UnrealScript и логикой пользовательского интерфейса ActionScript. Это позволяло реализовать такие возможности, как:Запуск событий в UnrealScript из взаимодействий пользовательского интерфейса во Flash.Передача данных из UnrealScript для обновления элементов в пользовательском интерфейсе Flash.Вызов функций ActionScript из UnrealScript.

По сути, ActionScript в UE3 использовался не для написания основных сценариев игрового процесса, а скорее как язык сценариев для создания интерактивных и динамических пользовательских интерфейсов и HUD посредством интеграции Scaleform GFx.

Unity3d Flash

Данный раздел немного не в тему статьи, но ко-операция Unity с Flash тоже достоина упоминания.

Если предыдущий использовали определенные "виртуальные машины" для flash, то Unity использовал транслятор из C### в ActionScript.

Проект Танки Онлайн планировалось перевести на Unity еще в 2011 году, где-то находил альфа-версию из закрытого тестирования.

Потом разработчики решили оставить свой движок alternativa выпустили бета версию сиквела, но пришли к выводу, что проект лучше отложить. Спустя несколько лет выпустив Tanki X на Unity но уже без флэша.

Проект не взлетел так как fps был заметно ниже, чем на unity web player(Видимо использовались какие-то костыли).

А в 2015 благодаря стараниям Apple и Google - flash оказался устаревшим и все массово стали переходить на WebGL.

Выводы

Они не единственные кто додумался использовать Actionscript, изначально предназначенный для веба - как скриптовый язык, в дополнении к игровому движку на C++, в то время как большинство применяют LUA или Python, C# .

Но в таких играх и движках как:

Skyrim (слышь купи!)

Gamebryo

Unreal 3

6
5
9 комментариев