?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Previous Entry Share Flag Next Entry
C++? Flash? Олололо.
nyaload
_winnie
Сейчас поднялся какой-то непонятный хайп "в флеш 10 можно писать на C++". Кто-нибудь может объяснить, в чем смысл? С++ - не лучший язык для выполнения внутри виртуальной машины, его достоинство "null overhead" теряется. Но остаётся сложность, совместимость с С, многословность при решении простых задач, повышенная ошибкоопасность, человеческая проблема с кадрами и обучением, небыстрая хрупкая компиляция, диалекты и особенности разных платформ, ...
Продвигается под видом "можно не делать отдельную версию для флеша". Извиняюсь, но виртуальная машина браузера и нативный C++ c OpenGL/D3D - слишком разные платформы, что бы игра с одинаковым поведением была приемлема по графике в оффлайновом клиенте, или по производительности в браузере (кстати, мой маджонг был спортирован на флеш, пересечения в коде нет, только в графике) Кто-нибудь будет играть в игру как Doom (но не Doom)? Может быть можно было бы зашарить несколько килобайт кода, но...
Если уж решать проблему что бы сделать одну игру на одной кодобазе, то лучше же наоборот, запустить флеш-плейер в оффлайновой игре. Вот как пример: http://www.bigfishgames.com/download-games/2141/the-scruffs/index.html
Далее, ведь уже есть такое же? Статически типизированная быстрая (относительно динамического ActionScript) Java в Java-апплетах? Java - не самый мощный/удобный язык, но всё-таки поадекватней для простых браузерных игр, чем C++.

Выглядит, как будто какой-то отдел Adobe заморочил голову менеджерам, ради удовольствия написать интерпретатор С++ :)

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

Впрочем, ещё один инструмент, ещё один мостик совместимости человеческого труда, его написал не я и его поддерживать не мне, так что пусть будет ещё один инструмент-мостик. А мож пригодится кому-то написать path finding, коего 0.1% от остальной логики, но жрать может 50% времени.

updated: цитата ответа с dtf:

компилируется все через LLVM. gcc как front-end.
То есть на самом деле они написали транслятор из LLVM байт-кода во flash байт-код. По их словам пару тысяч строк.
http://llvm.org/devmtg/2008-08/Petersen_FlashCCompiler.pdf


updated:
И ещё нюанс: Это не только альтернативный технологический мостик, но и альтернативная возможность "монетизации" C++ кода.

Интересно, можно ли один раз и навсегда портировать DOS Box и DOS/4G на флеш? Тогда можно будет запускать в браузере бинарники старых дос-игр =) А портировать тогда можно будет хоть Turbo Pascal игры, только поправить мелочи, типа юзабилити интерфейса главного меню


  • 1
а вот кстати, каким образом грамотные парни запускают флеш-плеер в офлайновой игре? где позыреть?

Если Вам нужно запустить приложение использующее Flash API, то только Flash, в ином случае можно взять AVM и Tamarin соотвественно, а там и trace уже можно будет собрать (правда две недели назад, проект не собирался из-за отсутствия некоторых исходных кодов для профилировщика, но, думаю, что проблему решат).
А вообще, хорошим способом будет попросить у Scott Peterson проточенную машину :)

Мы с orvind в свое время сделали версию Entis Fantasy для браузеров. Отлично работала; отлаживаться вообще сплошное удовольствие (после телефонов-то!). Сделана была меньше чем за человеконеделю. Пересечение по коду было 95%.
Причем, поскольку это ММО, можно было играть тем же персонажем, что и на телефоне, в том же мире.
Даже с учетом хитрых маркетинговых соображений телефонной версии она бы не помешала (можно запретить, скажем, заводить новых персонажей иначе как с телефона, и всего делов). Офигительная, казалось бы, фича.
Но по какой-то причине уже работающую версию Нивал Онлайн не запустил. По какой - неизвестно. Молчат.
Я с тех пор не очень верю в многоплатформенность и в особенности не верю в роль реюза кода ради достижения оной.

Да, загадочно. И действительно странно почему не java.

Не так давно на дтф точно в таком же ключе спорил с флешерами. Они просто уверяли, что куча тайтлов ломанется, начиная с Дума. Точно также не могу понять восторгов, начиная с того, нафиг там вообще нужен Дум и кому поможет этот кастрированный С++

поможет браузерным MMORPG и groupware-порталам

Как раз хотел кинуть ссылку на Doom. :)
http://www.arcadenoid.com/doom.html

(no subject) (Anonymous) Expand
На эту тему сказано уже много аргументов: и привлечение огромного С++ комПьюнити к Флешу; и дополнительная аудитория игроков, которым влом инсталлировать десктоп-приложения, а хочется свежей Флешатинки; и кроссплатформенный автоматический порт и т.п.

Есть еще такие плюсы: возможное изменение производственных процессов некоторых флеш-компаний; привлечение к С++ разработке инструментария флеша и к флеш-разработке инструментария С++ (IDE, профилировщики, весь веер тулзов).

Это просто новые возможности и новая степень свободы, и это, на мой взгляд, позитивно.

C++ это стандарт игровой индустрии, очевидно Адоби хочет поддержки индустрии. Удастся ли ей ее получить - вопрос, конечно, интересный. Я сильно сомневаюсь, что можно вот так вот быстро и просто написать С++ компилятор, достаточно близкий к стандарту, чтобы им можно было пользоваться без серьезного надрыва жоппы. Но если вдруг такое чудо случиться, то можно будет ожидать появления кучи портов ГБА, ПС1, ДС игрушек на флэш.

(Deleted comment)
А как цеплять dll? Verifier да и целевая виртуальная машина этого не позволяют. Если только транслировать в байт-код AVM или Вы знаете другой способ?

Там на ДТФ так и не решили по вопросам используемости портированного кода.

Мне вот как-то непонятен весь ажиотаж. Все это было заявлено на Adobe MAX в Chicago ещё в октябре 2007(!), т.е. год назад. Ролик с конференции можно найти на YouTube. Всё это связано с тем, что Adobe выпустила как продукт или в чем ажиотаж?

Ажиотаж связан с тем, что Flash и C++ - баззворды. Когда люди со слабой психикой их видят вместе - начинаются брожения умов.

Временная локализация ажиотажа СЕЙЧАС - да, с выходом десятого флэша. Потому что анонсы - это чепуха. Мало ли кто что обещает.

Да, кстати, я вам не успел ответить у Зефирова по поводу дотнета. Так вот, именно Microsoft .Net на другие платформы ещё не портирован. Под моно можно собраться, но собранный под мс-дотнетом бинарь под моной не пойдёт. До прозрачной кроссплатформенности флэша (или даже явы) - как до марса.

Так что я с Зефировым не согласен сразу по двум пунктам: 1) флэш и дотнет - это принципиально РАЗНЫЕ платформы по целевой среде исполнения 2) у них совершенно РАЗНЫМ образом дела обстоят с кроссплатформенностью. Короче, что-то он не то там с "конкуренцией" придумал.


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

(Deleted comment)
(Deleted comment)
Ага. А еще Scott Petersen (в приватной беседе) говорил, что первый прототип этой штуки склепали за 1.5 недели на основе.... MSIL backend'а :)

(Deleted comment)
(Deleted comment)
Мне чиста поржать нравится, как круг замкнулся :)
Видимо рассчитывают на порты старых-слабых игрушек и кода Quake, не иначе.

надо полюбому досбокс портать, а то апогей например исходники старых игр проебал уже

(Deleted comment)
Странно что никто не вспомнил про Silverlight. Это очевидный ход в ответ на Silverlight, где работает .NET. И Silverlight кросплатформенный.

Я сейчас варюсь в этой области, работаю надо кодом WPF и Silverlight приложений, очень близко к MS. Они конкурируют а Adobe, а Adobe с ними. Бояццо друг друга :)

Теперь ещё осталось доказать два неочевидных факта: 1) что программист на C++ дешевле программиста на ActionScript 2) что скорость работы C++-поверх-LLVM-поверх-флэша будет хоть как-то сопоставима со скоростью работы дотнета в сильверлайте.

  • 1