воскресенье, 25 сентября 2011 г.

OpenGL vs. Adobe Stage3D. Пришло время выбирать.

Всем привет. Окружающий нас мир такая вредная штука, что каждый час, что-то меняется, и наступает момент, когда мы должны выбрать что- то одно, и двигаться в этом направлении, вот об этом будет мой пост, вернее о том, а что  мне делать дальше. Так уж получилось, что я родился в очень интересное время, время смены технологий. Еще 10 назад никто не думал что будет такая вещь как iPhone, и что подобные мобильные системы будут запускать приложения которые во много раз мощнее приложений того времени. Да, все это конечно хорошо, но подобный прогресс часто заставляет задуматься «а что же выбрать?», «куда дальше идти?» и т.д. Я очень часто думаю на эту тему, и вот поэтому решил написать о своих соображениях.
Работая flash-разработчиком, я часто думаю о том, а не сменить ли мне работу, не сменить ли технологию, на которой я работаю и т.д. Это не как не связано с тем, сколько мне платят на работе, по этому поводу я доволен, это скорее связано с тем, что я не хочу оставаться на одном месте, я не хочу остаться «олдскулом». Сейчас наступила такая ситуация, что очень сильно меняется технология, на которой я работаю, да, в ближайшее время технология Adobe Flash очень и очень сильно поменяется, и что делать дальше - я не знаю, работать на том на чем я работал, переходить на более новую версию, или выбрать альтернативное решение? Но прежде чем сделать свой выбор, надо обсудить каждый из вариантов, и начну я с первого.
Я уже говорил выше, что работа flash-разработчика меня устраивает в финансовом смысле, но стоит ли оставаться на этой точке, что оно мне даст? Новые технологии внедряются не очень быстро, переход на них зачастую очень долгий, и бывает так, что новые технологии не устраивают людей по каким либо параметрам. Таких примеров много, например: Blender, уже скоро выйдет новая версия 2.6, но я все еще знаю людей которые работают на 2.49, или Web-технологии, HTML5 уже поддерживается практически всеми известными браузерами, но у Web-разработчиков есть одна проблема – совместимость со старыми версиями браузеров, жаль, но новые технологии в Web’е очень и очень долго внедряются, но сейчас не об этом. Технологию Adobe Flash очень много кто не любит и не уважает, обоснованных причин для этого нет, никто еще толком не высказал нормальных причин на тему «Adobe Flash это ЗЛО!!!!», даже Стив Джобс не смог дать нормального ответа. В текущее время я работаю на Adobe Flash Player 9 API, это API практически совместимо с Adobe Flash Player 10 API. С одной стороны это хорошо, возможностей 9 API вполне хватает для тех проектов, над которыми я работаю, но с другой стороны я понимаю, что я отстаю, я не очень сильно разбираюсь в возможностях 10 API, например p2p соединения, или StageVideo и т.д., в этом вопросе я ноль (это сказано образно, в теории я знаю все 10 API, но на практике ни разу не использовал), и поэтому я понимаю, что надо что-то менять. Текущий проект, над которым я работаю, не требует 10 API, следующий проект над которым я буду работать – тоже не требует, а следующие проекты после второго – вот тут я не знаю. У меня нет никаких гарантий того, что проекты того, времени будут нуждаться в более современном API, но одновременно я не могу дать гарантии того, что новое API не провалиться. Как всегда, будущее загадочное и туманное, но все-же вперед стоит двигаться, стоять на месте нет смысла, да, сейчас мне платят покаместь я делаю проект на 9 API, но если завтра заказчик захочет внести в проект фишки из нового 10 API, вот тут и наступят проблемы (образно говоря). Сейчас я уже понимаю, что тянуть уже нечего, надо идти вперед, время 9 API уже проходит, да, сейчас современные версии API не очень востребованы, но все же двигаться надо, иначе потеряю еще больше. В итоге я понял, что оставаться на том этапе, на котором я сейчас нет смысла, прогресс рано или поздно будет требовать перемен, тем более, сейчас только начинает внедряться «прогресс», и это хорошее время для его изучения, но это уже касается «второго варианта».
Второй вариант – переходить на новую версию, вернее переходить на Adobe Flash Player 11 API, он же Stage3D, и он же Molehill. Сейчас об этом API известно очень и очень мало, и оно еще на стадии beta-тестирования, но в последнее время компания Adobe часто выкладывает информацию о том, что-же нас ждет в этой версии, и среди вот примеров такой информации есть вот это видео:
Практически любой flash-разработчик после просмотра этого видео скажет «Оу, это же КРУТО!!! Это то, о чем я мечтал всю жизнь!!!!». Да, новое 11 API даст нам много нового: полная поддержка 3D, причем с поддержкой графических акселераторов и т.д. Как бы это все круто не выглядело, но есть и минуса – новый API по своей сути не совместим со старым, поэтому придется учить все заново, и новый API сделан исключительно для более современной техники. Если с первым все понятно, то второе огорчает, ведь для этого понадобиться современная техника, разработчики говорят что новое API на старой техники будет эмулироваться, а это значит что мы не получим в полной мере то, чего мы так ждали, но такое состояние дел логически верно, новое API – новая и современная техника. С одной стороны у нас есть то, чего мы (flash-разработчики) так ждали, а с другой – пользователи наших flash-проектов. Это одновременно радует и огорчает. Я сомневаюсь, что пользователи Adobe Flash Player имеют современную технику, сомневаюсь что игроки «Фермы», «Мегаполисов», «Вормиксов» и прочих «социальных flash-игр» играют в эти игры на современной технике, но возможно я не прав, и если я не прав – то это очень и очень хорошо. Но в тоже время, теперь благодаря 11 API можно делать не только социальные проекты, например в видео что выше – нет как таковых социальных проектов, теперь есть возможность того что Adobe Flash отойдет от социальных «игрушек-безделушек» и на этой технологии можно будет увидеть отличные не социальные проекты, и если посмотреть на официальную позицию Adobe, то скорей всего так и будет:
Я надеюсь, что у Adobe все получится, ведь по-другому быть не может. Официальный релиз нового Adobe Flash Player 11 API будет в начале октября этого года, прям как я рассчитывал. Лично для меня это хорошая новость, ибо по сути это будет переворот во всей технологии Adobe Flash, и если я начну заниматься этой технологией с момента ее появления, то смогу во многом преуспеть. Если честно, то я рад тому, что смогу использовать технологию с момента ее появления, это очень большой плюс, начинать с самого начала, а не тогда, когда все уже готово, и единственное что остается – догонять саму технологию. Я с нетерпением жду выхода нового API, но все еще пытаюсь решить вопрос с покупкой новой современной техники, но я постараюсь решить эту проблему, ведь на кону многое. Что касается моего перехода на Stage3D, то тут все просто. Есть у меня проект, который находится на стадии «заброшенно», название этого проекта – «Stones Chersonese», сейчас его разработка не продвигается, ибо я занят проектом «NoNe», но после окончания разработки «NoNe» у меня в планах восстановить разработку «Stones Chersonese», и уже на другой технологии, возможно, это будет Stage3D. Реализация такого проекта на Stage3D будет отличным опытом, хотя это всего лишь идея, но будущее покажет, что к чему.
Теперь что касается альтернатив, альтернатив для Adobe Flash 11 API я не встречал, поэтому выбрал сам. Мой выбор это HTML5 и OpenGL, и дальше коротко об них. HTML5 я не выбирал, мне его скорее навязали, вернее навязали то, что он может быть «убийцей» Adobe Flash 9 API и Adobe Flash 10 API, но вот с Adobe Flash 11 API ему никак не тягаться. HTML5 отличная платформа, но как платформа для современных игры – она никакая, простенькие игрушки времен Adobe Flash 7 API можно сделать, но что-то современное – уж извольте. Это не поливание отбросами HTML5, это мой личный взгляд. Ничего примечательного на этой технологии я не видел, про WebGL наслышан, но тотальное использование его  не видел, поэтому не могу сказать, что это альтернатива для Adobe Flash 11 API. В последнее время часто я слышу необоснованный фразы типа «Скоро Flash умрет» и т.д, но вот только я не могу понять от чего-же он умрет. Очень часто у технологии Adobe Flash появляются навязанные враги, сначала это был SVG, потом Microsoft Silverlight , через некоторое время в список «убийц» по неизвестным причинам попала Unity3D, потом все говорили о том, что HTML5 в буквальном смысле «выпилит» проигрыватель с сайта youtube.com, но на деле такого не случилось. Технология Adobe Flash спокойно прошла через эти «испытания», не получив ни капельки вреда. Некоторые говорят, что от Adobe Flash откажутся крупные компании, но еще не было такого, чтобы кто-то намерено отказался от Adobe Flash в пользу другой технологии, только Microsoft заявила, что возможно на их новой платформе не будет официальной поддержки Adobe Flash, больше я никого не знаю. Adobe Flash все еще остается на платформе GoogleAndroid, для Apple IOS тоже есть Flash Player, а если вспомнить FLEX, то вообще понятно что альтернатив ему нет. Лично мое мнение – технология HTML5 так и останется на том этапе, на которой она сейчас, тоесть отображение Web-страниц, и я сомневаюсь, что в ближайший год стоит что-то ждать нового от этой технологии.
Вот так потихоньку я подошел к OpenGL. Многих может удивить то, почему же я сравниваю OpenGL и Stage3D, поэтому, вначале я попытаюсь все объяснить. По своей сути Stage3D это низкоуровневое 3D API, и единственное что можно к нему подобрать – это OpenGL, но все равно, почему именно OpenGL, а не другое подобное ему, например DirectX? Ответ простой – кроссплатформенность, зная OpenGL для обычных компьютеров можно писать программы и для мобильных систем, это конечно сказано образно, но на практике так и есть. К сожалению, я не знаком с OpenGL, но в последнее время я его изучаю. Причин для этого много, например, проконсультировавшись со своими коллегами, и они сказали, что новое Adobe Flash 11 API очень похоже на структуру программ с использованием OpenGL, так ли на самом деле я еще не знаю, вот поэтому и учу, но основная причина уже описана выше – кроссплатформенность,  да, количество платформ, которые поддерживают OpenGL намного больше, чем тех, кто поддерживает Adobe Flash. Я изучаю OpenGL не долго, примерно три-четыре дня, единственным информационным пособием для меня на текущий момент является вот эта книга. Книга отличная, все понятно, и разложено по полочкам, но за это короткое время я уже понимаю, что с нисчем подобным я не имел дело. Учить OpenGL есть смысл, возможно, когда-нибудь по определенным причинам я найду другую работу, в которой требуются знания OpenGL, а такой работы очень и очень много, но на текущий момент я не хочу менять свою сегодняшнюю работу. Вот когда выучу OpenGL и напишу несколько проектов – тогда можно. OpenGL хорошо показало себя в проектах, она используется от простеньких 2D играх, заканчивая 3D играми гигантами и 3D-анимацией. В целом – это отличная платформа, а обилие информации, наличие готовых примеров и т.д. так и подкупает меня перейти на OpenGL, но перейти я не могу, сейчас я вообще толком не знаю OpenGL, но возможно в будущем переход будет, но опять же, будущее очень туманное.
Ну, и заканчиваю я пост неким выводом. Сейчас уже понятно, что надо двигаться вперед, закат технологии Adobe Flash 9 API уже на горизонте, а с противоположной стороны восходит новая технология Adobe Flash 11 API, но покаместь она не достигнет своего апогея про Adobe Flash 9 API забывать не стоит, но потихоньку переходить Adobe Flash 11 API надо, иначе потом придется догонять. Переход на Adobe Flash 11 API мне чем-то напоминает переход с ActionScript 2.0 на ActionScript 3.0, да, переход будет долгим, займет это много времени, но все же вся технология Adobe Flash кардинально поменяется, и я надеюсь в лучшую сторону. Что касается альтернативы, в данном случае OpenGL, забывать про нее не стоит, ведь никто не даст гарантий того что в будущем будет все хорошо, а наличие альтернативы, на которую можно безболезненно перейти, может сделать бесперспективное будущее намного лучше.
Вот и все. Всем удачи. Пока.

19 комментариев:

  1. Интересно, спасибо) Я уже давно решил что если захочу освоить что-либо кроме flash-технологии, то OpenGL подойдет больше всего, ковырялся в нем немного.

    ОтветитьУдалить
  2. Имхо, переход с as2 на as3 прошёл куда проще и незаметнее, чем будет проходить переход на 11 апи. Трёхмерность сейчас не нужна большинству ЦА, играющей во флеш-игры. И дело тут скорее в том, что под 3д не заточить типичных механик. Те же фермы могут быть и трёхмерными, только это всего лишь усложнит жизнь домохозяек и ничего им не даст.

    ОтветитьУдалить
  3. 2 iLORd: в некотором смысле да, многие функции 11 апи не нужны в тех же фермах и т.д. Переход к 11 апи возможно создаст новый тип флеш-игр, которые не будут похожи на своих предшественников, теперь на ряду с обычными флеш-казуалками и прочими "игрушками-времяубивалками" появятся полноценные шутеры, авто симуляторы и т.д. хотя, возможно это всего лишь мои мечты и мечты людей из видео.

    2 nigmashumma: ну OpenGL это запасной вариант на случай если flash накроется медным тазом, или останется на том-же этапе развития, тоесть попросту изживет себя. В ближайшее время у меня нет ни желания ни сил переходить на что то другое. Но будущее это такая штука,что иногда лучше держать при себе козырь.

    2 horizonOffset: Есть предложения????

    ОтветитьУдалить
  4. Дык уже сейчас есть весьма сносные гонки и всяческие мультиплеерные экшены. Только как бы ни пиарили те же "танки онлайн", они не смогут добиться ни популярности ферм, ни популярности World of Tanks. И даже если в будущем Флеш будет выдавать ещё более крутую картинку, в нишу полноценных движков для "больших" игр он вряд ли войдёт.

    ОтветитьУдалить
  5. 2 iLORd: ну почему же, если новый апи покажет себя со стороны на петерочку, то почему бы и нет? Флеш плеер стоит у 99% пользователей интернета, у пользователей гугл хрома он обновляется самостоятельно. Аудитория как видно не маленькая, и если новый апи такой крутой как говорят разработчики, то все уже предопределено. Да, такие игры как "ворлд оф танкс" и т.д, врятли будут делаться на новом апи, а вот игры из ниши юнитиплеера - спокойно. Кстати Юнити Технолоджи добавляет в свои новые версии поддержку Stage3D. Что это, боязнь что флеш плеер выпилит юнити плеер, или что то другое?

    ОтветитьУдалить
  6. А у Юнитиплеера есть ниша? По-моему, в ней полтора анонимуса максимум. Тут не технологии должны поменяться, а менталитет игроков. Иначе те, кто хочет короткие сессии из офиса, так и будут играть в двухмерные социалочки, а те, кто хотят хардкора - качать клиентские игры.

    ОтветитьУдалить
  7. Добрый совет не по теме - разбивай текст на абзацы, читаемость существенно возрастёт, до конца дочитает больше человеков :) Сплошная лента - не есть гуд.

    ОтветитьУдалить
  8. 2 Treidge: абзацы есть, вот только отступ каретки в этом шаблоне "выпилен".


    2 iLORd: Во всяком случае текущие проекты которые есть на юнитиплеере трудно реализуемы на флеш плеере, таже батлстар галактика или фьюжен-фалл. Реализация таких проектов на флеше в текущее время не возможно, но новый 11 апи такое позволит делать. Я о том что на новом апи будут делаться игры заметно отличающиеся от предыдущих флеш игр, а не о том, что новый апи станет убийцей ЮДК, КрайЭнджина, и т.д. ))

    ОтветитьУдалить
  9. А я просто о том, что ниши он себе не найдёт толковой... Ну, увидим скоро)

    ОтветитьУдалить
  10. NoTformaT: эта книга по Opengl-это что за книга:-)? Название там, автор, издание...?

    ОтветитьУдалить
  11. А, блин, ссылка на книгу пропала. Сек: - http://www.opengl.org/documentation/red_book/

    ОтветитьУдалить
  12. Хорошая статья, но OpenGL очень трудоёмкий инструмент. Для него мало программ заточенных под WebGL, есть игровые движки , но они все платные, и заточены лишь для игр.
    Unity3D убийца Flash ? Вряд-ли, вы-же сами должны знать, что разработчики Unity уже сделали дополнения позволяющие компилировать проекты в Flash 11, они просто ждут релиза нового API.
    Я не думаю что ActionScript резко изменится с появлением нового API. Скорее он будет оптимизирован и в него будут добавлено то,что многие ждали. А именно быстрая поддержка вывода графика с использованием ресурсов видео карты. Что приведёт к ещё большей скорости графических приложений. И не удивлюсь, что большие игровые проекты будут построены на основе Flash Air. А значит позволит без проблемно использовать кроссплатформеность. Этого и боятся другие разработчики графических API. В основном боится Microsoft, как-же их DirectX может стать не кому не нужным. А их Виндовс перестанет быть основной игровой платформой для PC. Вот и пытаются всячески слухами завалить об крахе Флэша и новой эры HTML5.
    Лично я наоборот уверен, новый Флэш только даст преимущество всем программистам писать один проект, без постоянно компилирования в разные операционные системы. Он будет един в единой платформе от Adobe. А сама Adobe не делает из своего инструменты нечто выше, ведь она-же сама является дополнением для ОС. Только начинку использует кроссплатформенную.

    ОтветитьУдалить
  13. Как-то сильно в кучу всё... Не вытянет Air больших проектов. Мы сейчас на одном проекте с UDK работаем, так нам даже его мощностей не всегда хватает, что уж говорить об AAA-проектах крупных студий. И то, что Майкрософт в связи с этим чего-то боится - просто смешно.

    HTML5 - это совсем другая ниша. Скоро он будет рулить на мобильных устройствах, но полноценной заменой Флешу он никогда не станет. А уж говорить, что HTML5 продвигают, чтобы очернить Флеш и не дать ему заменить ДиректХ - это вообще феерия какая-то)))

    ОтветитьУдалить
  14. 2 Анонимный: По своей сути OpenGL и Stage3D это два низкоуровневых графических апи. Из за довольной долгой истории OpenGL, данная библиотека очень и очень мощная. Stage3D вот вот выйдет, полноценно тягаться с OpenGL она не может, но OpenGL является единственной альтернативой Stage3D на данный момент. Это мое мнение, ибо заменителей Stage3D я кроме OpenGL не вижу.
    Что касается "Юнити3д убийца Флеша". Еще бы год назад я спокойно бы это сказал. Год назад когда я перешел на юнити, она показалась мне намного лучше флеша. В то время Юнити3д спокойно наказывала флеш. Она имела отличный легковесный плагин, ГПУ поддержку графики, 3Д было настоящим. Сейчас, когда новое АПИ уже догоняет Юнити3д, фраза "юнити убийца флеша" уже не проканает, скорее наоборот.
    Флеш по своей структуре - это песочная технология, поэтому она всегда будет кроссплатформенной. У песочниц есть много плюсов и много минусов. Тягаться с нативными приложениями у них нет возможности. В свое свободное время я пишу пост про песочные технологии, а в частности где я вижу плюсы и минусы таких песочниц как HTML5, Java, Unity3D и тот же Flash.
    Что касается изменения в ас3. Чет я их не заметил, нового ничего не добавили в синтаксис и семантику ас3. Но теперь наряду с DisplayObject и DisplayObjectContainer появится новые классы и интерфейсы. Вот их структура уже не будет похожа на DisplayObjectContainer.
    Про замену Флешем ДиректаХ или чегото подобного. Я сомневаюсь что в ближайшие несколько лет это произойдет. Причин много. Начиная с тойже песочницы, и заканчивая тем, что Stage3D использует DirectX или OpenGl для доступа к GPU.

    ОтветитьУдалить
  15. 2 iLORd: ААА проекты на песочницах не возможны по своей сути. Лично мои надежды связаны с тем, что наконец-то флеш перестанет быть технологией для "игрушек-времяубивалок". Появятся достойные браузерные онлайн проекты, ниша которых на текущий момент ЮнитиПлеер.

    Что касается ХТМЛ5. Как платформу для моб устройств я его тоже не вижу. На текущий момент любая ХТМЛ5 запущенный на моб устройстве - это слайд шоу. В посте есть изображение, и там под ХТМЛ5 написана отличная фраза, в буквальном переводе "хватит делать банеры на флеше, пусть банерной технологией станет ХТМЛ5". Я разделяю позицию Адоба. Ведь хтмл5 игры еще даже не дотягивают до седьмого флеша, а запуск хтмл5 на мобильном устройстве позволит вам поседеть на несколько лет. ХТМЛ5 так и останется для баннеров, и веб-страниц :^)

    ОтветитьУдалить
  16. iLORd по поводу больших проектов на Flash. Вот ссылка http://blogs.unity3d.com/2011/09/01/unity-and-flash-a-sneak-peek/ Здесь можно увидеть видео готового проекта на движке Unity3D , откомпилированного в Flash 11. Качество очень хорошее. Не чета Альтернативе 8(Alternativa 8)

    ОтветитьУдалить
  17. Хорошее. Но не чета тому же UE3, например. Который уже успел несколько устареть, кстати.

    ОтветитьУдалить
  18. Ух, какой интересный холивар, однако!) Столько новго узнал:)

    ОтветитьУдалить