Бесплатно скачать Adobe Flash Player

Горячая тема: Adobe Alchemy, C++ для Flash Player 10, быстрые флэш-приложения и haXe

Бурная дискуссия развернулась в ruFlash вокруг новой разработки Alchemy в Adobe Labs — технологии, которая может сделать флэш-приложения быстрее.

Что такое Adobe Alchemy?

Alchemy (ранее известный как FlaCCM) — это внутренний движок виртуальной машины AVM2 для компиляции кода С++ в промежуточный байткод виртуальной машины низкого уровня (LLVM). Это означает, что разработчики могут компилировать код C/C++ для выполнения во Flash Player 10.

Alchemy — это исследовательский проект Adobe. Они публикуют его, чтобы понять, насколько это может быть интересно разработчикам, как много найдется желающих использовать существующие библиотеки C и C++ в веб-приложениях для Adobe Flash Player и Adobe AIR. Костя Ковалев подсказывает: ответы на многие вопросы Adobe дает в официальном FAQ'е по Alchemy.

12 недокументированных операций AVM2 для Алхимиков

Вы спросите — а как же Николя Канасье, haXe? А Канасье в курсе дела и показывает простую схему работы Alchemy:

Файл .c -> промежуточный LLVM-байткод -> AVM2-байткод

Здесь есть парадокс: в результате работы Alchemy мы получаем тот же байткод AVM2, что и в AS3. Окуда же взяться приросту производительности? Канасье копнул тему и нашел 12 недокументированных операций AVM2 (opcodes), которые используются только Alchemy.

Николя пишет, что разберется и включит их в апдейт haXe вместе с поддержкой Pixel Blender. Интересные вещи начинаются!

Дополенение от 2 декабря 2008 г.


Встречайте первые результаты Adobe Alchemy: игра DOOM целиком портирована c C++ на Flash Player.

Писал: Rost, 20 Ноябрь 2008 16:04

Комментарии:

adobe сознательно тормозит флеш на ас3?

ir73 - 20 Ноябрь 2008 16:07

adobe сознательно тормозит флеш на ас3?

всё может быть ... ну чтобы он не 100% ресурсов сжирал ...

Artem Brigert - 20 Ноябрь 2008 16:15

Попробовал Alchemy.. ничего интересного, применение ограничено чисто математикой. То есть это просто чтобы можно было старые C/C++ алгоритмы (математические) использовать в AS. Никакие библиотеки, кроме math.h , stdio.h и несколько других использовать нельзя. Вобщем, Си-плагины не попишешь...

Alex - 20 Ноябрь 2008 16:30

На многие из этих вопросов отвечают сами Adobe в официальном FAQ'е :)

Constantiner - 20 Ноябрь 2008 16:55

интересно, а Адоби добавят эти 12 инструкций в штатный флексовый компилятор? :)

yelbota - 20 Ноябрь 2008 17:00

что ж он не написал что за конструкции

valyard - 20 Ноябрь 2008 17:47

Так он сам пока не знает:

Николя пишет, что разберется

Т.е. найти нашёл. А как работают - пока не знает.

Dan - 20 Ноябрь 2008 17:55

Никакие библиотеки, кроме math.h , stdio.h и несколько других использовать нельзя. Вобщем, Си-плагины не попишешь...

Не знаю не знаю, мы вчера подключили интерпретатор языка LUA =) правда пришлось кой чего из него вырезать (I/O в основном), но вообще работает, н жалуется.

Nirth - 20 Ноябрь 2008 18:02

Хмм... А можно zlib более нормально подключить (чтобы Adler32 не требовала)?

Dan - 20 Ноябрь 2008 18:05

Хмм... А можно zlib более нормально подключить (чтобы Adler32 не требовала)?

Нам LUA для проекта нужен был ( я даже неделю назад сам планировал с чего начать). Я хочу пригласить нескольких гейм модеров (WoW, Fallout, Baldur's Gates и Neverwinter Nights, и послушать, что они думают должно быть в движке расширяемой игры. А те в свою очередь привыкли к LUA т.к. он обычно используется в играх как высоко уровневый язык для описаний дествий, диалогов, скриптовых анимаций и тд.

Nirth - 20 Ноябрь 2008 18:15

Не с того конца начал объяснять, это я к тому что до архивации руки не доходили, но теоретически zip и tar должны подключится без особых проблем.

Nirth - 20 Ноябрь 2008 18:16

И, кстати, приблизилась давняя идея портировать линух под флеш (ну или хотя бы некоторые GNUтые тулзы).

Dan - 20 Ноябрь 2008 18:17

Кстати, по поводу LUA. насколько я знаю, она поддерживает псевдо-потоки (забыл точное название).
Во флеш-версии это сохранилось?

Dan - 20 Ноябрь 2008 18:21

Псевдо потоки мы вырезали, вообще в 2007 году, Адоб показывал что потоки пашут в С, но у нас не получилось их запустить. Ждем ответа, но так как Адоб запустил Quake на FP10, потоки там есть (квейк юзает многопоточность 100%). Просто возможно процедура запуска чуть изменилась, может есть какие то прослойки.

>Во флеш-версии это сохранилось?
Ммм, нету флэш версии языка LUA, мы просто скачали исходны код под С и откомпилировали как swc библиотеку, так что там есть то чего мы не удалили =)

Nirth - 20 Ноябрь 2008 18:28

Флеш-версии языка нет. А флеш-версия интерпретатора теперь есть :)

А где посмотреть Quake на FP10?

Dan - 20 Ноябрь 2008 19:00

http://www.google.com/search?num=20&hl=en&safe=off&client=safari&rls=en-us&q=quake+flash+player&btnG=Search

Nirth - 20 Ноябрь 2008 19:18

http://www.google.com/search?num=20&hl=en&safe=off&client=safari&rls=en-us&q=quake+flash+player&btnG=Search

Nirth - 20 Ноябрь 2008 19:18

Dan
http://quakelive.com/ - вот это?

Flop - 20 Ноябрь 2008 19:20

quakelive - это вроде не флеш.

Dan - 20 Ноябрь 2008 19:40

Почитайте комент от Gabriele Farina на блоге Николя. Кое-что проясняет.

Может быть особого прироста и не получим, но, скажем, сделать более шустрый Base64 может и получится.

Dan - 20 Ноябрь 2008 20:00

Прирост есть при Math и при String манипуляциях, этого достаточно для интерпритатоворов, физики, геометрии и стереометрии.
Плюс есть Pixel Blender для шейдеров.
Для GUI фреймворков это мало что дает, тоесть я сомневаюсь, что получится посадить Flex Framework на стеройды, но для игр это хорошая новость.
По моему очень даже неплохо дела обстоят =)

P.S. Кстати скорость выполнения GUI даже в взрослых играх (PS3, XBox 360, Direct 10) серьезная проблема с производительностью =) Не зря же Photoshop и MS Office тормозят больше Crysis =)

Nirth - 20 Ноябрь 2008 20:31

Может быть особого прироста и не получим, но, скажем, сделать более шустрый Base64 может и получится.

Не силён в С, но если это сделает 64 быстрей, то уже благо какое будет! Подскажите, где пишут про то, как это сделать :)

- 20 Ноябрь 2008 20:35

Плюс есть Pixel Blender для шейдеров.

Он как раз таки больше для математики :)
Тот же Life на нём реализовывать (хотя это можно сделать и фильтрами).

Dan - 20 Ноябрь 2008 20:41

Подскажите, где пишут про то, как это сделать :)

http://ncannasse.fr/blog/adobe_alchemy
В коментах.

0x3c li32 – load a 32 bit integer from global memory
0x3a li8 – load an 8 bit unsigned integer from global memory
0x35 si8 – store an 8 bit integer to global memory
0x37 si32 – store a 32 bit integer to global memory

Если они работают быстрее, чем byteArray.readUnsignedInt(), byteArray.writeUnsignedInt(), byteArray[i] = x, x = byteArray[i] и т.д., то можно получить прирост для Base64 кодирования.

Мне тут кстати недавно как раз надо было кодировать файлики по 2-4 мегабайта во флеше. Пришлось отказаться по причине производительности. Примерно секунда уходила на кодирование.
Вроде и немного, а вроде и дофига.

Dan - 20 Ноябрь 2008 20:46

Он как раз таки больше для математики :)
Тот же Life на нём реализовывать (хотя это можно сделать и фильтрами).

Эээ, ну на моем опыте, 90%+ шейдеров основаны на математических алгоритмах ;) и фильтры из flash.filters.* это – тоже по своему шейдеры, хотя, какой нибудь крутой гейм девелопер, написавший за 1000 шейдеров может названить их недо-шейдерами =)

Nirth - 20 Ноябрь 2008 20:50

Примерно секунда уходила на кодирование.
Вроде и немного, а вроде и дофига.

Для старой версии сайта Toyota USA, мы эмулировали ""многопоточность"" (да да, в двойных ковычках =)) фактически мы просто потестировали скорость выполнения задачи (она занимала пару минут в если делать сразу), на Pentium 3 1033, и потом подавали вычисления на enterFrame, получилось так что задача происходило в фоновом режиме, хотя та еще комедия была.

Nirth - 20 Ноябрь 2008 20:54

фильтры из flash.filters.* это – тоже по своему шейдеры, хотя, какой нибудь крутой гейм девелопер, написавший за 1000 шейдеров может названить их недо-шейдерами =)

flash.filters.ShaderFilter - (это те самые, которые в Pixel Bender'е делаются, хотя можно и по другому их создавать) - тоже недошейдеры.
Циклов нет, массивов нет, функций нет. Хорошо хоть if else есть.
Надеялся сделать 3D с помощью шейдеров (по так называемой вертексной технике), так как с помощью фильтров или с помощью ByteArray получалось тормознуто - но не вышло. Слишком ограниченные возможности.

и потом подавали вычисления на enterFrame, получилось так что задача происходило в фоновом режиме

А, ну у меня для этого специальный класс есть :)
Только в данном случае применять его не хотелось, так как решается одна проблема - плеер не подвисает, но появляется другая - процесс выполняется ещё дольше. 5-10-20 секунд вместо одной.

Dan - 20 Ноябрь 2008 21:22

Получилось затестить. приду завтро на работу вышлю Росту флешку пример.
например MD5 через алхимию ровненько в два раза быстрее чем на AS
(Рост, добавишь в этот пост?)

Flop - 20 Ноябрь 2008 23:30

(Рост, добавишь в этот пост?)

Ага.

Рост - 20 Ноябрь 2008 23:32

Re:Где про это посмотреть более подробно?
http://labs.adobe.com/wiki/index.php/Alchemy:FAQ

- 21 Ноябрь 2008 10:06

Блин, Николя жжот не по детски!

a_[w] - 21 Ноябрь 2008 15:38

очень интересно было бы посмотреть какие-нибудь бенчмарки и тд.

kuzya - 21 Ноябрь 2008 18:08



Подписаться на новости (RSS)




Примечания:
Статус документа
: в процессе
   2002-2009 Производство: Ростислав Сирык · О проекте · Подписка на новости (RSS)