Джек Дойл , основатель GreenSock и создатель TweenLite, некоторое время говорит с ActiveTuts + о том, как он начал, о будущем TweenLite / Max и о том, что он узнал об оптимизации кода и лицензировании.
Привет, Джек, расскажи нам немного о том, как ты начал с Flash. Вы были разработчиком-самоучкой или пришли с другого языка? Если применимо, как ваш прошлый опыт помог вам в качестве разработчика Flash?
Все мое формальное обучение было в области графического дизайна. Я поступил в колледж на стипендию дизайна, и я никогда не думал, что в итоге напишу такой код. Никогда не брал уроки информатики или программирования в моей жизни. Я всегда был довольно хорош в математике и рисовании. В начале своей карьеры я работал в рекламной фирме и заинтересовался разработкой веб-сайтов, поэтому обратился к владельцам и предложил мне создать «цифровое» подразделение. К моему удивлению, они согласились и дали мне шанс. Я занимался дизайном и нанимал другие компании для написания этого «пустяка» под названием «HTML» и серверных сценариев, которые заставили все это работать. Я был разочарован тем, что поставили поставщики, и было очень сложно продолжать идти вперед и назад, поэтому я купил пару книг и изучил HTML и ColdFusion. Я не мог поверить, что это было так весело. Я начал видеть все виды возможностей. Затем пришла Flash. Вау. Это может доставить визуально богатый опыт (мне понравился дизайнер), а также сложную интерактивность (начинающий разработчик во мне сразу же засосал). Я был подключен.
Практически все мои знания были получены методом проб и ошибок, поиском в Google и множеством ошибок. Я очень упрямый парень, поэтому я буду стараться, пока не пойму, как заставить идею работать. Иногда я буду лежать на полу лицом вниз, просто думая. Тогда я вскочу и попробую идею. И быстро провалиться. Затем я буду ходить взад-вперед, найти другую идею и попробовать, потерпеть неудачу и так далее, пока не пойму это. Мы все испытали эти «ага!» моменты, когда мы наконец понимаем это правильно — я думаю, это чувство вызывает привыкание.
Что касается моего прошлого опыта, я думаю, что дизайн был огромной помощью по двум причинам. Во-первых, это научило меня думать о вещах с точки зрения зрителя. Задайте себе этот вопрос: если бы вы могли создать автомобиль так, как вам хотелось бы, на что бы он был похож? Что вас раздражает в большинстве автомобилей сегодня? Та же концепция применима к созданию API для класса ActionScript. Как пользователь, как бы вы хотели, чтобы это работало? Слишком многие разработчики увлекаются техническими деталями и не могут задуматься о создании элегантного, интуитивно понятного API. Я часто слышу от разработчиков, которые говорят, что им нравится работать с TweenLite / Max, потому что это так просто; это просто имеет смысл. Это много для меня значит.
Другая вещь, с которой мне помог графический дизайн, была возможность общаться. Я удивлен, насколько ужасна большая часть общения от разработчиков, которые выпускают свой код. Это может быть удивительный код, но если никто не понимает его ценность или то, как его использовать, это провал.
TweenLite — одна из самых популярных библиотек анимации. Как вы думаете, что является одним из ключей к вашему успеху с ним и почему люди выбирают его по сравнению с конкурентами?
Я многим обязан успеху пользовательской базе — они были так добры и лояльны, и хвастаются этим перед своими друзьями. И я думаю, что люди хвастаются этим, потому что он имеет довольно уникальное сочетание мощности, простоты использования, скорости и надежности, упакованных в небольшой пакет. Большинство других движков, о которых я знаю, имеют давние ошибки, им не хватает важных функций, синтаксис просто уродлив и громоздок, производительность вялая или они слишком раздутые. Я изо всех сил старался избежать этих проблем. Проблема с ошибками является довольно серьезной проблемой для профессиональных разработчиков, потому что анимационный движок в наши дни является фундаментальным в большинстве проектов — вы не хотите опираться на шаткую основу, в которой есть давние ошибки, или на автора, который не намерен быстро уничтожать их, когда они всплывают. Платформа GreenSock, похоже, заработала репутацию за надежность и быстрое исправление ошибок, которые ценят разработчики. Кроме того, я стараюсь постоянно улучшать его, добавлять функции, оптимизировать, дорабатывать и т. Д. Он действительно созрел за эти годы, в то время как многие альтернативы с открытым исходным кодом застоялись. С платформой GreenSock можно многое сделать, чего нельзя сделать ни с каким другим движком. Но в конечном итоге это, вероятно, простота использования, которая привлекает людей. Я постоянно слышу от разработчиков, которые говорят что-то вроде «каждый раз, когда я сталкиваюсь с чем-то другим, мне нужен двигатель, я обнаруживаю, что вы уже думали об этом, и инструменты находятся у меня под рукой».
Теперь, когда вы выпустили версию 11 платформы Tween, какими новыми функциями вы больше всего гордитесь в этом выпуске? Что вы видите в магазине для версии 12?
Я должен признать, что я никогда не был так рад выпуску. Версия 11 — огромный шаг вперед во многих отношениях. Мало того, что TweenLite и TweenMax получили множество функций, но есть совершенно новые инструменты секвенирования (TimelineLite и TimelineMax), которые имеют огромный потенциал для изменения вашего рабочего процесса анимации. Я слышал от многих разработчиков, что они говорят: «Я понятия не имел, насколько мощны классы временной шкалы — я зависим!» Большинство людей не совсем осознают потенциал, пока не потратят немного времени, чтобы пнуть шины. Я создал видео, в котором рассказывается об основах, на blog.greensock.com, и скоро выложу видео, в котором будут рассмотрены более сложные темы. Дизайнерам, похоже, нравится новый плагин motionBlur, который автоматически применяет направленное размытие движения на основе угла перемещения объекта DisplayObject и его скорости (да, размытие может быть диагональным). Физика2D также является хитом — она позволяет вам анимировать вещи на основе скорости, ускорения, трения, гравитации, ускорения и т. д. TweenLite теперь получает полноценные элементы управления, такие как pause (), resume (), reverse (), play (), и перезапустите (). Если вы еще этого не видели, посмотрите 60-секундный промо-ролик на домашней странице blog.greensock.com . Также есть большие улучшения в структуре кода и есть полная документация ASDoc. Что касается версии 12, у меня нет ничего конкретного, чем можно поделиться, но есть несколько идей, которые подпрыгивают вокруг моей головы, с которыми я экспериментировал. Однако сейчас я все еще сосредоточен на версии 11 и помогаю людям понять ее потенциал.
Проекты GreenSock редки в том смысле, что они не являются открытым исходным кодом. Что заставило вас пойти по этому пути и чувствуете ли вы, что так получилось лучше?
Абсолютно. Платформа GreenSock Tweening не может быть такой надежной, надежной и оптимизированной, как сегодня, если бы не уникальная модель лицензирования. Я не думаю, что это подходит для каждого типа проекта, но идеально подходит для платформы анимации. А для тех, кто не знаком с ней, стандартная «бесплатная» лицензия делает код полностью бесплатным практически для всех типов использования, включая большинство коммерческих проектов. Существует очень специфический, редкий тип использования (возможно, 1% случаев коммерческого использования), который требует специальной лицензии, которая входит в корпоративное членство в клубе GreenSock. И некоторые из необязательных плагинов являются преимуществами членства в Клубе GreenSock (это способ сказать «спасибо» тем, кто поддерживает проект).
Клуб GreenSock выполняет критически важную роль, предоставляя механизм денежных потоков, обеспечивающий постоянное развитие и поддержку. Все выигрывают от этого, хотя в нем участвует очень небольшая часть базы пользователей. Поначалу нескольким разработчикам трудно понять это, поднять голову, как только они увидят какие-либо признаки механизма финансирования, какими бы честными они ни были, но большинство людей понимают его ценность и осознают, насколько это выгодно всем. Фактически, многие рассматривают модель лицензирования как функцию, а не как обязательство, поскольку она демонстрирует определенный уровень приверженности и стойкости, что дает им уверенность в том, что она будет и впредь поддерживаться и совершенствоваться. Посмотрите на послужной список, и вы увидите, что ни один другой движок не разрабатывался и не обновлялся бы так быстро, как GreenSock, и модель лицензирования делает это возможным. Я бы сказал, что очень недальновидно полагать, что лицензия MIT (или аналогичная) всегда лучше, и я объясняю почему в моей статье «Free»! = Better »на blog.greensock.com . Я выбрал уникальную модель, потому что твердо убежден, что в конечном итоге она лучше служит сообществу, обеспечивает превосходный конечный продукт и защищает от некоторых общих недостатков разработки с открытым исходным кодом.
Члены клуба приветствуют членов клуба, которые читают это — вы делаете все это возможным, и я так благодарен за вашу поддержку.
Директор имел процветающее сообщество, основанное на продаже плагинов и модулей кода, однако Flash не смог создать тот же рынок. Считаете ли вы, что разработчики действительно могут зарабатывать деньги / прибыль, продавая свой код, и если да, то есть ли у вас какие-либо советы, чтобы помочь начать?
Конечно. Я не знаком с сообществом Director много лет назад, но я вижу много людей, продающих свой код ActionScript в эти дни. Я не мог сказать, насколько они все прибыльны, но тот факт, что их так много, говорит мне, что что-то должно работать. Разница с сообществом Shockwave много лет назад может иметь непосредственное отношение к природе Интернета в то время. Блоги и форумы стали настолько распространенными в наши дни, и они показывают множество примеров кода и идей бесплатно. Это замечательная вещь, но она также делает ее более сложной для людей, которые хотят продать свой код. Они конкурируют со свободным кодом, и давайте посмотрим правде в глаза — большинству из нас, разработчикам, нравится разбираться со своими вещами и создавать свои собственные решения, так что заманчиво просто искать бесплатный код и пытаться собрать воедино то, что нам нужно, не теряя при этом никаких денег.
Тем не менее, я думаю, что со временем ландшафт станет зрелым, поскольку разработчики сгорят из-за заброшенных проектов с открытым исходным кодом и свободного кода, заполненного ошибками. Будет возрастать потребность в высококачественных, усовершенствованных решениях, которым разработчики могут доверять, особенно в более сложных вещах. TransformManager — пример относительно сложного нишевого продукта, за который хорошо осведомленные разработчики готовы платить, поскольку он экономит им огромное количество времени и хлопот. Вы бы предпочли потратить недели (или месяцы), пытаясь выяснить, как создать подобный инструмент, или заплатить доверенному источнику 299 долларов, и у вас сегодня есть документация, примеры и специальный форум для других пользователей?
Поверь мне — там есть рынок. Вам просто нужно продемонстрировать четкую ценность и заслужить их доверие.
Что касается советов, вот несколько из них:
- Сделайте ваш API максимально понятным, простым и понятным. Представьте, что вы отдаете его в руки полного идиота — могут ли они легко это понять?
- Если вы не можете сделать это уникальным, не делайте этого вообще. Если на рынке уже есть 300 решений для слайд-шоу, не делайте это 301, если только ваше решение не выдувает все остальное из воды. Ищите проблему, которую никто не решил хорошо. Чем сложнее проблема, тем лучше — облегчить.
- Приготовьтесь к множеству вопросов. Вы можете думать, что что-то очевидно, но вы будете удивлены, сколько «глупых» вопросов вы получите. Ожидайте это. Не расстраивайся. Служите своим клиентам хорошо, и они будут лояльными.
- Документируйте свой код. ASDocs являются стандартными — используйте их. Приведите примеры тоже. Поставьте себя на место ваших клиентов — им нужно как можно быстрее начать работать.
- Не слишком увлекайтесь попытками защитить свой код. Я, как правило, фанат предоставления клиентам исходного исходного кода вместо файлов SWC или MXP и т. Д. Как клиент, я хочу иметь возможность устранять неполадки и копаться в коде, если мне это нужно. Позволь мне сделать это. Когда вы ставите много препятствий на моем пути, вы говорите мне, что не доверяете мне, и вы затрудняете использование вашего продукта, поэтому я с меньшей вероятностью буду покупать у вас снова.
- Если вы можете, создайте форум, на котором клиенты могут оставлять свои вопросы. Это не только сокращает необходимость отвечать на один и тот же вопрос снова и снова (так как они могут искать на форуме перед публикацией), но также предлагает клиентам помогать друг другу, облегчая бремя для вас. Просто убедитесь, что вы внимательны и не слишком полагайтесь на других, чтобы оказать вам техническую поддержку.
Оптимизация сейчас является горячей темой в сообществе Flash, особенно с учетом того, что Flash на горизонте. Какие шаги вы предприняли, чтобы ваш двигатель Tween был максимально эффективным? Есть ли у вас какие-либо советы для разработчиков из того, что вы узнали?
Вау, это широкий вопрос (но хороший). За последние годы я многое узнал об оптимизации, и если бы я перечислил все это здесь, ну, ответ был бы слишком длинным. Я, вероятно, опубликую что-нибудь в своем блоге в конце концов с различными советами, но вот несколько:
Функциональные вызовы дороги. Избегайте их, если можете, выполняя операции в строке. С этим можно переборщить и сделать ваш код слишком длинным, сложным и повторяющимся, так что это балансирование. Таргетинг на наиболее часто используемые фрагменты кода.
AS3 выигрывает от строгой типизации данных, так что делайте это везде, где можете.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//slow:
var num:int = Math.round(n);
//4x faster:
var num:int = (n > 0) ?
//slow:
for (var i:int = 0; i < myArray.length; i++) {
}
//faster:
var l:uint = myArray.length;
for (var i:int = 0; i < l; i++) {
}
//slow:
for (var i:int = myArray.length — 1; i > -1; i—) {
}
//faster:
var i:int = myArray.length;
while (i—) {
}
|
Доступ к общедоступным свойствам намного быстрее, чем к получателям / установщикам (потому что, опять же, функции работают медленно).
1
2
3
4
5
6
7
|
//slow:
public function get myProp():Number {
return _myProp;
}
//faster:
public var myProp:Number;
|
Что касается оптимизации двигателя анимации, я потратил бесчисленные часы на его оптимизацию, особенно в областях с интенсивным использованием. Вы можете увидеть, как это сочетается с некоторыми другими движками на blog.greensock.com
Не могли бы вы немного рассказать о партнерстве с Грантом Скиннером и о том, на что было похоже сотрудничество? Есть ли планы выпустить больше проектов вместе на основе работы, которую вы оба проделали с платформой Tween?
Грант такой крутой парень и отличный разработчик. Для меня было честью работать с ним. Он приходит из гораздо более традиционного / структурированного опыта, когда речь идет о написании кода, поэтому он дал мне ценные советы и объяснил, как важно следовать отраслевым стандартам для таких вещей, как структура именования пакетов обратного домена, теряя «$» впереди. Имена параметров и т.д. График работы Гранта строг, учитывая то, что он летает на конференции, и у него тоже есть дела, но он был достаточно любезен, чтобы выделить время, чтобы поболтать со мной, что я очень ценю.
Что касается будущих планов, мы надеемся продолжить сотрудничество, как позволяют графики. Я взволнован, чтобы видеть, куда все идет отсюда.
Если бы вы могли выбрать одну вещь, что бы вы назвали своей любимой частью ActionScript 3? Кроме того, что бы вы изменили или хотели бы реализовать?
В AS3 нет особой части, которую я бы назвал своей любимой — мне просто нравится, как она дает мне возможность создавать практически все, что я могу себе представить. Это быстро, гибко и смехотворно способно. Что бы я изменил? Гектометр Ну, я никогда не был поклонником встроенных компонентов Flash. Им нужен серьезный капитальный ремонт. И есть некоторые действительно раздражающие ошибки, особенно на Mac, которые, я надеюсь, Adobe исправит в короткие сроки. PixelBender обладает удивительным потенциалом, но кажется запоздалой мыслью, а язык должен быть похож на AS3. То, как реализованы некоторые ограничения безопасности, кажется мне просто глупым и обременительным. Но на самом деле, мы должны отдать должное команде Adobe за создание удивительной технологии, которая была ответственна за некоторые из самых богатых интерактивных процессов.
Я продолжаю удивляться тому, что возможно с Flash.