Почему я мигрировал с OpenFL на Unity

Infinity Inc

Друзья, я чувствую какую-то необходимость объясниться, почему после 1.5 месяцев разработки Infinity Inc. на OpenFL и всяческого нахваливания его я все-таки я вдруг перешел на Unity. На блогах все друг друга знают, так что я удалил лишние представления. Оригинальный текст здесь: kanobu.ru/pub/431958/


После выхода игры в вебе мы сформулировали себе конкретную задачу — доработать игру и выпустить на Steam. Мы не рассматривали ни мобильные платформы, ни тем более консоли. Опираясь на опыт разработки flash игр я решил попробовать связку Haxe + OpenFL. Очевидные плюсы такого выбора: кроссплатформа, знакомый синтаксис, множество собственных наработок, которые просто перенести с AS3 в Haxe. Минусы: отсутствие визуального редактора(хотя не проблема, я все уровни собирал в Flash IDE) и сыроватость самого движка.

Сразу скажу, что работать с Haxe мне понравилось. Используя стандартные средства OpenFL я очень быстро спортировал движок игры, поигрался — все работает отлично. Пока на каком-то этапе я не уперся в производительность. На уровне, где умирает много персонажей и есть большое количество различных пушек, крови и партиклов, игра начала немного подвисать. И я считаю, что это нормально, учитывая подход (все рисовалось обычным OpenFL дисплей листом, даже многочисленные партиклы).

Тогда я наткнулся на превосходную в OpenFL вещь — tilesheet. Используя метод drawtiles() можно добиться отличной производительности с помощью batch рендеринга. В таком случае, в идеале, у вас будет всего 1 или несколько контейнеров для графики (я сделал 2 — для геймплея и для ui). Правда, пришлось заново переписать все визуальные классы, помучиться с матрицами и сортировкой объектов. Но в итоге я получил очень хороший прирост производительности.

Следующая вещь, которую нужно было сделать — написать свой аналог TextField'a, но только для bitmap текста. И вот тут я понял, что начинаю погружаться в разработку чего-то иного, а не игры. Быстрое решение для текста выглядело ужасно, а учитывая будущую локализацию игры, отнестись к этому вопросу нужно было серьезно. К этому моменту я разрабатывал игру на Haxe чуть больше месяца и чувствовал все большее нежелание писать свои велосипеды.

О Unity3D я конечно же знал, немного работал, но не собирался переходить полностью. Моя версия 4.3 для Mac OS была жутко глючная и постоянно вылетала, да и к постоянно виснущему MonoDevelop'у я не испытывал теплых чувств. Даты добавления игры на GamesJam Канобу совпали с датами моей растущей медленными темпами депресии по поводу того, что я такой плохой программист, не могу собраться с духом и написать в Haxe все то, что мне нужно. Но, спасибо джему, в комментариях к игре промелькнула фраза — ребят, почему не выберете нормальный движок и не зарелизитесь везде? Эта фраза оказалась чем-то вроде внедрения идеи из фильма «Начало», поэтому я решил попробовать. На удивление, новый юнити оказался намного стабильнее, а так как во время разработки на Haxe я свичнулся с MacOS на Win, то не пришлось связываться с Mono. Visual Studio, пока что, очень и очень радует. Переход с Haxe на C# вообще не проблема.

Как и с Haxe я очень быстро собрал фундамент игры, в производительность пока не уткнулся. Но появилась новая опция — теперь кроме Steam мы постараемся сделать iOS и Android. Сегодня я собрал первый мобильный билд, и хотя еще нужно решить как поступить с управлением — играется очень бодро: www.youtube.com/watch?v=ZZ3cO8tIHmU

Вывод?

Haxe для меня хуже не стал, но Unity оказался проще на данный момент (это важно, не исключено что через месяц буду писать, почему ушел с него). Плюс появились бенефиты в виде дополнительных платформ. Все тоже самое можно реализовать и на Haxe, но с Unity все-таки оказалось быстрее и надежнее.

За новостями игры следите тут:

Игра на джеме: gamesjam.org/2539/
  • +14

Комментарии (19)

+1
П.С. Пост не холивара ради, а вдруг поможет кому не совершать моих ошибок.
+1
Лично для меня 3 попытки начать работать с Unity заканчивались только убитым временем и головной болью. Каждый раз начинал и через пару часов бросал. Дико бесит и тупит IDE, после Xcode это просто какой-то ад.
После твоего поста задумался в 4 раз, придется попробовать. В противном случае затея отложится еще на полгода)
0
Вот да, у меня так же было. При этом я умудрился еще на такой глючной версии сделать пару игр на заказ. Степень отвращения была такой большой, что свои собственные игры я вообще не хотел на нем делать. Не знаю, может дело было именно в Mac OS версии, но на винде + вижуал студио тормоза пропали
+2
В принципе я пока себя от юнити отговариваю тем, что в Game Maker уже насидел больше 110 часов и сдружился с API, пишу на нем чисто кодом, пока 3d не планирую. Да и экспорт есть под консоли + мобилки + тв приставки :)
+1
Я то же уже пару раз садился за юнити, еще года 2 назад, но тогда мне все показалось очень сложным, новым и непонятным, плюс я еще совсем не разбирался в 3D и короче на этом мой интерес угас, так как на тот момент Flash вполне справлялся со всеми поставленными задачами. Но вот работая над последним проектом shapikthequest2, в определенный момент, я так же осознал, что приходится очень много велосипедить, написал свой простенький редактор, утилитные классы загрузки-выгрузки ресурсов и т.д. так же в связи с последними тенденциями рынка flash игр становится ясно что надо взрослеть и переходить на мобилки\PC платформы, а плюс еще на флеше шаг в сторону — уперся в производительность. Вообщем ясное дело что технологию надо менять, скачал снова Unity, и сел разбираться, только начал с более простенького 2D, и в этот раз все как по маслу, собрал пару сцен, покрутил API, вроде все хорошо, C# не представляет никаких проблем, нормальный редактор, и целай куча вкусных плюшек и возможностей, не говоря уже о кроссплатформености и производительности. Единственное что очень ново и непонятно это парадигма компонентов, то есть совершенно другой, на сколько я понял, подход к разработке, организации кода и архитектуре проекта.
Вообщем не смотря на то что я большой фанат и приверженец Flash(технологии) и моего любимого as3, становится очевидно что надо взрослеть и перестать самому себе совать палки в колеса)
0
+1
0
Хороший пост, и всё — как по мне — правильно пишешь.

Если ты сел делать игру — то лучше всего делать игру, а не сооружать собственные кастомные решения, чтобы можно было наконец делать игру.

Ты не контора из 4637867845 человек, где можно держать собственный RnD отдел и делать свои движки. Ты — инди, и очень правильно минимизировать расходы времени и средств. А Unity — это удобный инструмент для разработки игр, где можно делать быстро, удобно и достаточно качественно.

А Haxe — согласен — приятный язык. Да и OpenFL в теории отличный (если у тебя достаточно часу та натхнення, чтобы возиться с его багами и сырыми вещами).
  • SeeD
  • SeeD
0
Целиком аминь!
0
А ещё я вот посмотрел твоё геймсджемное видео на Ютубе, и ты, оказывается, симпатичный <3
0
Не зря красился и волосы укладывал ^__^
0
ты же в кепке)))
0
Это ты меня ещё не видел :P
0
Ахтунг! Симпатичные программисты в чате! )
0
Дай ссылочку))
0
Тоже на симпатичного парня посмотреть захотелось?
0
Посмотрим потом вместе, когда я в гости приеду))
0
Тоже первое что бросается в глаза — это вынужденность делать средства, чтобы делать игру, а не делать игру)
Это раньше было, в универские времена:
«С утра садимся мы за прогу,
Мы рады велики писать
И, презирая лень и негу,
Строчим „hello!“!»
(импровизация на базе Пушкина «Телега жизни»)

А сейчас всё таки хочется больше игры делать, чем велики)

Я вот сижу на openfl исключительно хтмл5 ради)
Для телефонов air, ну а на стим если, то уверенно решил юнити.
0
Лайкнул на джеме. Тоже на Unity перехожу. Решил сделать продолжение Absorbed на нём. Хотел спросить, у тебя ведь уровни из тайлов состоят? Ты эти тайлы вручную составляешь, каждый тайл как префаб, или какой-нибудь плагин есть чтобы тайловые уровни рисовать?
0
Нет, у меня тайлов нет. Стены это коллайдеры-ректанглы, а все остальное просто объекты набрасываю. Арт потом в фотошопе собираю целой картинкой
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.