воскресенье, 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, забывать про нее не стоит, ведь никто не даст гарантий того что в будущем будет все хорошо, а наличие альтернативы, на которую можно безболезненно перейти, может сделать бесперспективное будущее намного лучше.
Вот и все. Всем удачи. Пока.