понедельник, 28 июля 2014 г.

Unity + winphone = ?

UPD: всех мусульман с праздником ураза-байрам! По этому случаю татарский словарь на ios в течение трех дней будет бесплатным. Православных поздравляем с днем крещением Руси и тоже советуем скачать этот словарик :)

Ок, опыт по разработке и паблишингу win phone приложений появился.

Я научился делать как нативные приложения (к примеру, на основе дефолтного шаблона сделан словарь lugat, а также мультипайвотный турецко-русский и русско-турецкий словарь), так и unity игр. При разработке нативных приложений надо следовать тем же паттернам, что при разработке на iOS. Если понимаешь, что такое делегат и как работает data provider, проблем не будет. Однако верстка страницы больше напоминает андроид - там больше работаешь вручную с XML-ками, нежели тянешь курсором за констрейны.

Как и ожидалось, больше всего проблем было с юнити. Процесс портирования пробовали на старом бедном матаке, который уже пережил 100к закачек на андроиде и только недавно вышел на iOS. Не хочется особо рассусоливать, пройдемся списком по граблям, которые встретил в процессе:




  •  винфоны в большинстве своем слабые, идут с оперативкой 512 Мб - будьте готовы, что придется оптимизировать. Конечно, можно в dev центре ограничить список, но таким образом мы отсечем 80% рынка
  • unity для винфона собирает с настройкой mscorlib, поэтому вовсю использовать силу c# не получится.
  • предыдущий пункт может также означать, что некоторые либы, собранные на моно, не пойдут. К примеру, надо качать отдельную сборку для hotween на его официальном сайте
  • каким образом происходит сборка  unity проектов: солюшн собирается в либу unityplayer.dll, далее линкуется с другими плагинах лежащими в соответствующей папке. Два очень важных момента: 
    1. в редакторе все компилится под моно, а для винды на .net. Они разные, поэтому можно ожидать кучу приколов
    2. б) для проверки совместимости библиотек используется Mono.Cecil. Ну так вот, если используются платформозависимые библиотеки (Microsoft ads, к примеру), не поставляемые по умолчанию windows phone sdk, mono.cecil может ругаться на отсутствующие рефы. Самый простой и топорный способ разрешить проблему - тупо скопировать dll в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\WindowsPhone\v8.0 и т. д. Правильный же способ - пересобрать Cecil со включенными библиотеками, начальный взять из гита. Вот эта тема очень полезна для осознания происходящего - http://forum.unity3d.com/threads/wp8-adcontrol-mono-cecil-assemblyresolutionexception.196766/


  • Microsoft ads легко интегрируется в сборку, но учетка Microsoft ads недоступна для жителей России - вы попросту не получите честно заработанные деньги. Меня такой вариант не устраивал, поэтому ставил admob с помощью плагинов от Reign studios.
  • Да, не надо считать себя самым умным и сходу попытаться написать плагин под винфон. Для начала надо читать документацию - в unity очень клево все расписано :)
  • Я так и не понял, почему никто не использует postprocessbuildplayer, хотя его использование очень уместно. К примеру, нужно выставить необходимые разрешения. Или внедрить платформозавсимый код (как в случае инициализации плагинов от Reign Studios). Короче, все разленились, поэтому надо делать кучу неавтоматизированной ручной работы самому.
  • Неприятная детская грабля - unity собирает проект, где все иконки и сплеш скрины идут по умолчанию. Настроек в unity как в других платформах нет. Надо делать руками в сгенерированном проекте. Более того, в винде есть так называемые плитки - куча мороки и никто их не использует. Плюс один гемморой от майкрософта.
  • Я так понял, в винфоне нет локальных нотификаций. Remote есть, а локальных - нет. Обидно, очень полезный инструмент.

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

Комментариев нет:

Отправить комментарий