Pull to refresh

Comments 33

Жаль, но пост очевидно шустро отправится в черновики. Уберите ссылки на приложение или добавьте хаб «Я пиарюсь»
Здесь не любят ссылки? Сейчас сделаю.
Пользователи-то может и любят, но у администрации другой взгляд на этот вопрос.
Вроде как и интересно, но слишком поверхностно, перечитал, а толку вроде и нет никакого.
И чем Unity 4 не угодил?
Все равно у каждого проекта своя специфика. Я вот сам не люблю посты с простынями кода и код не читаю. Поэтому я хотел лишь дать направление — показать, что это возможно, куда копать и что использовать.

В Unity 4 напрочь развалился код, который создавал префабы — его надо переписывать. Кроме того после конвертации в Unity 4 внезапно появились глюки Mono, но правда они не исчезли, при откате на 3.5, поэтому тут вроде Unity 4 не виноват.
Я не говорю о простынях кода, просто, хотелось бы немного подробней в некоторых моментах, например, чем бы помог ScriptableObject?
Я конечно по ссылке перешёл, но с двух предложений в хелпе не очень понятно что оно такое.

А моно у меня в 3.5 тоже глючит не слабо, так что сам юнити тут скорее всего не при чём, да.
ScriptableObject — он полегче чем MonoBehaviour и его можно сохранить в отдельный ассет. Т.е. не надо создавать префабы для этого дела, можно просто ссылаться на этот ассет.

Другими словами ScriptableObject — это свой тип ресурса.
В чем проблема была перевести на Starling коль вы вектор все равно в растр переводили?
Мало того что бесплатно, так и в разы быстрее бы сделали.
Про Starling не слышал.

Изначально курс был взят на Unity, т.к. востребованная технология, и точится под платформы хорошо. Да и я по основному роду деятельности уже 5 лет с C# вожусь.

И мне очень нравится редактор в Unity, вернее то, что я могу заниматься кодом, а дизайном уровней, балансировкой, графикой — другие люди. Первый опыт на Flash у меня был с PushButton Engine — это как Юнити, но без редактора — просто ад какой-то.
Часто можно обойтись и без редактора. Кстати, чем Flash IDE не редактор? Накидал клипов на сцену, пробежал по ним скриптиком, получил на выходе что надо. А тот же AIR с растровой графикой не пробовали?
AIR пробовали, когда он еще вроде версии 2 был. Не очень хорошо — на векторе вообще тормоза дикие, на растре лучше но не настолько. Брали проект на Flixel (ссылку не дам, гуглите по Star Navigator) и один в один его переводили — на iPhone 4 тормозило адово.

Сейчас вроде в AIR какие-то некст-ген компиляторы появились, может ситуация стала лучше :)
Отметьте, пожалуйста, в статье что Вы проверяли на AIR 2. Просто тормознутость AIR-а до 3-й версии общеизвестна. Но личный опыт показывает, что хотя приходится заниматься оптимизацией, на последнем всё работает достаточно шустро. Поэтому интересно было бы узнать чужой опыт именно о 3.5.
Подправил чуть статью.

На Unity тоже были нюансы, например, для слабых девайсов ( iPhone 4 в их числе :) ) мы отключили один партикл-эффект, который просто в ноль убивал производительность.
А зачем вы изобретали велосипед со спрайт атласами?

Если взять какой-нить фреймворк (например, ex2D) — то там уже есть встроенная поддержка атласов, со всеми вкусностями типа разного размера спрайтов, обрезки прозрачных областей и т.п. Осталось бы только написать конвертер в этот формат и все.
Сейчас, я думаю, я бы так и поступил. 25$ — это небольшие деньги.

На момент написания проекта я знал об атласах и draw calls лишь в теории.

С другой стороны, я получил хороший опыт, и знаю теперь, как правильно организовать работу с ассетами. В следующих проектах я рассчитываю выйти за пределы использования обычных квадратных спрайтов — так можно создать более эффектную визуалку. Но такие возможности, как я знаю, никакие готовые движки не предлагают.
Я имею в виду всякие векторные анимации — все таки 3D дает возможность создавать любые, формы не зависимо от количества реально задействованных измерений.
Ох… Тогда флаг вам в руки )

Почитайте пост на хабре от автора Contre Jour. Он там как раз описывал сколько он продолбался с антиальясингом отрисовки линий на треугольниках GPU.
Вместо того, чтобы оптимизировать Flash проэкт, с учетом возможностей Starling, Stage3D и др., при этом не переписывать проэкт на другую платформу, вы делаете огромный шаг переходя от ActionScript с Unity?
Вы уж простите, но если вы занимаетесь разработкой Flash игрушки, и при этом ничего не знаете о Starling и Stage3D, говорите о тормознутости Флеша на уровне AIR 2.0… то боюсь вам Unity ничем не поможет, вы в нем также само ничего не получите, не умея вникать в технологию.
Также не совсем понял, зачем вам Unity? Если у вас 2D, то зачем вам framework такого уровня? Если всетаки нацелились на 3D то почему не смотрели, тотже 3D для Flash? Flare3D, Away3D, Alternativa3D и др.? Я свою 2D паззл игру, за пару часов переписал на Away3D, чисто из любопытсва, и скажу что эти Frameworks довольно далеко развились, позволяя создавать решения в пару строк.
Юнити — хорош для 2D игр тоже. Удобная среда, кроссплатформенность, куча инструментов, полная кастомизация.

Я бы даже Angry Birds сейчас на юнити стал писать. При этом даже почти нет забивания гвоздей микроскопом.
Изначально был взят курс на Unity. Как на зарекомендовавшую себя кроссплатформенную технологию. Примеры быстрых приложений на мобильниках под Unity были. Примеров на AIR не было, а наш опыт с запуском проекта, написанного на Flixel оказался негативным. Решение использовать Unity обосновано именно этим.

Кроме того, в C# у меня опыта на порядок больше, чем в ActionScript.

В 3D не целимся, т.к. дорого.

Т.е. изначально посыл был именно влезть в Юнити с использованием текущих ассетов.
Все познается в сравнении. А также всему свое место. Мое сравнение показало для меня, что для простых 2D игр, без сверх задачь — Flash+Starling проще и быстрее чем Unity, который мне чемто .NET напоминает, большого монстра.
И на счет стоимости 3D вы также неправы. Away3D и Alternative3D бесплатны. Flare3D уже платный но и возможности чуток другие. На томже Away3D, с легкостью можно обычный плоский Марио превратить в 3D платформер, импортировав карты от старого.
Не, я не про стоимость движков, я про стоимость контента — трудозатрат очень много. В 2D «дешевле» идею выразить.

А еще в Unity удобно, конструировать сцены и настраивать параметры. Особенно, если не ты это делаешь :)

А у вас есть на Starling какие-нибудь проекты под iOS или Android. Мне интересно, как AIR шагнул в плане производительности. Почему-то в моем информационном поле AIR не попадаются упоминания как средство для разработки под телефоны. Помню, Corona мелькала, как хорошее решение для флешеров.
В производительности шагает не AIR а Flash. Тут более важна версия Flash, а сам AIR делает связь между Flash и аппаратоной частью на нативном уровне, доступ к GPU И т.д.
Т.е. AIR 2.6 будет работать на АRM6 но без GPU, а вот AIR 3.5 даст вам GPU и все остальное но уже минимум ARM7 требования, ну и без Linux.
А вот оптимизация и производительность, шагает в самом Flash. Так с версии 10,* можно заметить что рендер идет не всего слоя а только области динамического объекта, что дало хороший скачек производительности. с версии 11.1 появился Stage3D, который дал следующий скачек, подняв планку производительности в 2D анимации. Далее ввели многопоточность и т.д.
на сегодня, Adobe предалгает идеальное решение для 2D игр. Можно долго спорить, но для меня это как выбор между C++ и VB для простой программы аля ToDo, хоть с++ и крут но писать простые задачи на с++ будет слегка странным. Так вот и с Unity vs Flash. Вопрос совсем не в производительности, а в скорости разработки. Серьезная 3D задача — да Unity3D в руки и вперед. Платформер 2D? я бы выбрал Flash. Пробовал на HTML5 свою игру перевести, промучавшись пару денель, плюнул на это дело, мало того что сырое, так и никакой кросс платформенности.

Решать вам. но если вы хорошо знаете Unity и примитивно Flash, то лучше Unity, иначе незная тонкости API, слепите тормоза на уровне страшных баннеров.
Со всей ответственностью заявляю — 2Д платформер удобнее писать на Unity. Просто на порядок. Даже если не хотите использовать встроенную физику (которая в Unity есть из коробки).

Например, в Unity можно за пару дней написать собственный редактор уровней, который будет открываться прямо внутри самого юнити, наравне с окном сцены, консолью и т.п.

При этом по сложности платформа ничуть не сложнее флэша. Единственное, что там труднее — это ГУИ. Но для этого есть библиотеки.
Я пробовал эир со спрайтами, отрисованными через гпу. Правда, не старлингом, а другим фреймворком. Но не менее эффективным. Так вот, все равно — быстродействие отвратительное. Никому не советую писать на флэше. Мы сами приняли тяжелое решение уйти на юнити и ни разу не пожалели.
Не хочеться обижать, но на хабре вот такое писать? С такимже успехом вы могли и на JavaScript написать код который положит браузер в пару строк и также написать потом, «попробовал, тормозило, прешли на ассемблер».
Давате всетаки быть ИТшниками а не снобами. Нелюбовь к Флешу из-за баннеров, ненужно превращять в неприязнь, а незнание технолигии в недостатки самой технологии.
Нелюбовь к флэшу и незнание технологии?? У меня с флэшом опыта лет 10 было. Я его просто обожал и ковырял его со последнего болтика (вплоть до написания кода для флэша на Си под Alchemy). В частности, на флэше с применением плоских спрайтов через Stage3D я написал вот это вот движок (с применением шейдеров, карт нормалей и прочих вкусностей):



Так что ни о какой нелюбви и незнании технологии речь не идет. И с Air я провозился тоже неслабо.

Так вот — Air под мобилы (в частности iOS) обеспечивает на порядок худшее быстродействие, нежели Unity. И я говорю тупо о выводе спрайтов. О скорости работы ActionScript в эире по сравнению с языком юнити — я вообще промолчу. Любой более-менее тяжелый цикл приведет к заметному падению быстродействия.

Так вот — я повторю еще раз — я никому бы не советовал писать что-то более-менее серьезное на Air под мобилы. Нам было тяжко, но мы ушли на юнити. И теперь понимаем, что слава богу.
Вы чересчур категоричны.
Вот простой тест на ios: Starling сцена с 480 спрайтами/16 draw calls (цифры, мне кажется, вполне подходящие для реального проекта) выдают стабильныe 30fps:
Все зависит от игры. 480 ок. А если 2к? А если 4к?
В общем, имхо — лучше сразу пойти в юнити чем посередине проекта понять, что эира не хватает.
PS: Да, и как я говорил выше — дело ведь не только в отрисовке спрайтов. Еще есть такая штука, как скорость работы самого языка, которая для ActionScript под мобилами (да и не только под мобилами) — оставляет желать много лучшего.
Лучше выбрать наиболее подходящий инструмент. Кстати, AIR бесплатен, а юнити — инструмент не самый дешевый.
Sign up to leave a comment.

Articles