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

Друзья, я чувствую какую-то необходимость объясниться, почему после 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
- geovizz
Комментарии (19)
После твоего поста задумался в 4 раз, придется попробовать. В противном случае затея отложится еще на полгода)
Вообщем не смотря на то что я большой фанат и приверженец Flash(технологии) и моего любимого as3, становится очевидно что надо взрослеть и перестать самому себе совать палки в колеса)
Если ты сел делать игру — то лучше всего делать игру, а не сооружать собственные кастомные решения, чтобы можно было наконец делать игру.
Ты не контора из 4637867845 человек, где можно держать собственный RnD отдел и делать свои движки. Ты — инди, и очень правильно минимизировать расходы времени и средств. А Unity — это удобный инструмент для разработки игр, где можно делать быстро, удобно и достаточно качественно.
А Haxe — согласен — приятный язык. Да и OpenFL в теории отличный (если у тебя достаточно часу та натхнення, чтобы возиться с его багами и сырыми вещами).
Это раньше было, в универские времена:
«С утра садимся мы за прогу,
Мы рады велики писать
И, презирая лень и негу,
Строчим „hello!“!»
(импровизация на базе Пушкина «Телега жизни»)
А сейчас всё таки хочется больше игры делать, чем велики)
Я вот сижу на openfl исключительно хтмл5 ради)
Для телефонов air, ну а на стим если, то уверенно решил юнити.