Search Unity

Наступает конец 2014, и мы подумали, что было бы хорошо, чтобы наши пользователи знали о прогрессе, которого мы достигли в добавлении поддержки 64-битной iOS, а также получили обновленную информацию о нашей стратегии на счёт сборки под Web.

О 64-битных приложениях на iOS

Почти месяц назад мы объявили о предстоящей поддержке 64-битных приложений на iOS в Unity 5. Недавно Apple сделала еще один анонс, связанный с 64-битными приложениями на iOS:

«Как было объявлено в октябре, начиная с 1 февраля 2015 новые приложения для iOS, представленные в App Store, должны включать поддержку 64-бит и быть разработаны с iOS 8 SDK. Начиная с 1 июня 2015 обновления приложений также должны соответствовать этим требованиям. Чтобы включить поддержку 64-бит в вашем проекте, мы рекомендуем использовать установку сборки по умолчанию в Xcode «Standard architectures», чтобы получить один файл с 32-битным и 64-битным кодом».

Итак, что же это означает для вас и как мы собираемся реализовать это? Ответы на эти вопросы ниже.

Обновление ваших проектов сейчас

Мы будем поддерживать iOS 64-бит с помощью IL2CPP в Unity 4.6.x и Unity 5. Если вы планируете опубликовать новый проект или выпустить обновление для существующего проекта в Apple iOS App Store, то ваш проект должен быть повышен до Unity 4.6.x или Unity 5.0. Обновите ваш проект до Unity 4.6.1, если он уже создан на Unity 4.x / 3.x – в этом случае вам нужно выпустить обновление, или если он находится в поздней стадии разработки. Это позволит вам быстро обновить игру до 64-разрядного приложения iOS, как только станет Unity станет поддерживать 64-битную iOS.

Тем не менее, если у вас есть лицензия Unity 5.x Pro и игра на ранних стадиях разработки, или вы планируете использовать некоторые функции Unity 5, обновляйте Unity 5. Те, кто уже работает над проектами на Unity 5, могут продолжить делать это без особого беспокойства: поддержка 64-разрядной iOS и рендеринга Metal будут активно поддерживается и совершенствоваться в Unity 5.x.

iOS 64-бит для Unity 5

Мы сделали Unity 5 на основе альфа-сборки и отправили её в нашу закрытую группу альфа-группы тестирования и специальные фокус-группы, чтобы получить первые отзывы. Мы добились хорошего прогресса и имеем множество игровых проектов, работающих в 64-разрядных iOS 8. Мы также сотрудничаем с разработчиками плагина Prime31 для модернизации наиболее популярных плагинов для IL2CPP и 64-бит. После Нового года мы планируем объединить эти изменения в нашем главной бета-версии Unity 5. Таким образом, все, кто предварительно заказал Unity 5, и подписчики получат доступ к этой новой функции в первой половине января 2015.

iOS 64-бит для Unity 4.6

На Unity 4.x созданы тысячи игровых проектов, которые находятся в заключительных стадиях производства, поэтому мы решили добавить поддержку 64-разрядной iOS в Unity 4.6.x.

Только сегодня мы выпустили первую бета-версию сборки Unity 4.6.1 с поддержкой 64-разрядной iOS в нашей закрытой группе бета-тестирования. Мы ожидаем официальное обновление Unity 4.6 с поддержкой 64-разрядной iOS к концу января 2015 года.

Рендеринг Metal для Unity 4.6.x

Изначально мы планировали добавить поддержку iOS Metal только в Unity 5, но узнав ваши проблемы и получив фидбек, мы понимаем, что необходимо добавить его в Unity 4.x. Мы уже начали портировать поддержку рендеринга Metal для Unity 4.6.x и имеем альфа-сборку для закрытой группы тестирования. Мы планируем выпустить бета-версии рендеринга Metal в Unity 4.6.x в январе 2015 года и отправим официальную версию Unity независимо от поддержки 64-разрядной iOS.

Что под капотом?

Большинство из вас знает, что мы в течение длительного времени разрабатываем IL2CPP. Это позволяет нам дать вам большую производительность скриптов (см. наш блог о производительности на WebGL здесь) и также позволит нам быть более гибкими и эффективными в поддержке различных платформ, включая 64-разрядную iOS. Для ознакомления с технологией посетите наш предыдущий пост в блоге «Будущее скриптов в Unity».

В Unity 4.6.x и Unity 5 мы будем поддерживать два движка скриптов: Mono и IL2CPP. Появился переключатель движка скриптов в «Player settings» для платформы iOS:

image00

Движок скриптов может быть Mono или IL2CPP. Если выбираете Mono, то будет построено 32-битное ARM v7 архитектуры приложение. До 1 июня 2015 года движок скриптов Mono можно использовать для публикации обновлений 32-разрядных существующих приложений в iOS App Store или для внутреннего тестирования. Если выбран IL2CPP, то переключатель «Architecture» позволит вам собрать 32-разрядное, 64-разрядное или универсальное — предпочтительный вариант, если вы ориентируетесь как на высоко- так и низко-производительные устройства.

Наша цель, чтобы скрипты работали через IL2CPP на iOS также, как через Mono, так что выбрав IL2CPP в качестве движка скриптов, вы не заметите никаких изменений. Однако есть некоторые отличия:

  • Требуется больше времени для сборки, потому что существуют дополнительные шаги для преобразования IL байт-кода в C++ и компиляции в библиотеки движка Unity.
  • Большой размер приложений для iOS, потому что мы должны хранить код для 32-разрядной и 64-разрядной iOS в универсальном приложении, так что игры могут работать как на старых 32-разрядных устройствах, так и на новых 64-разрядных.
  • IL2CPP всегда включена очистка кода, чтобы уменьшить размер; это может означать, что типы, которые не в компиляции, возможно, необходимо будет добавить вручную.

Некоторое время могут быть ошибки в IL2CPP, потому что он выпущен недавно, однако мы исправим все, что вы найдете в еженедельной патч-релизах.

Разработка веб-игр на Unity

В Unity 5 мы введем захватывающе новую платформу — WebGL — и вы уже видели отличную игру, выпущенную на ней несколько месяцев назад. Мы считаем, что WebGL может изменить лицо веб-игр: разработчики игр получат доступ к миллиардам игроков без необходимости установки дополнительного плагина. Однако сейчас производители браузеров предлагают различные уровни поддержки WebGL в своих браузерах, поэтому в 2015 году разработчики игр могут использовать смешанные решения для того, чтобы быть самыми успешными. Недавно команда Chrome объявила об обновлении планов на NPAPI, цитируем ниже:

В апреле 2015 поддержка NPAPI будет отключена по умолчанию в Chrome, и мы будем отменять публикацию расширений, требующих NPAPI плагины от Chrome Web Store. Хотя производители плагинов работают над переходом к альтернативным технологиям, небольшое количество пользователей по-прежнему полагаются на плагины, которые ещё не завершили переход. Мы обеспечим переопределение для продвинутых пользователей (с помощью chrome://flags/#enable-npapi) и предприятий (с помощью Enterprise Policy) для временного включения NPAPI, пока они ждут перехода для критически важных плагинов.

В сентябре 2015 года мы удалим переопределение, и поддержка NPAPI будет навсегда удалена из Chrome. Установленные расширения, которые требуют NPAPI плагины, больше не будет иметь возможности загружать их.

Хорошей новостью является то, что команды браузеров Microsoft IE, Mozilla Firefox и Apple Safari не объявили каких-либо планов отказа поддержки плагинов.

Мы будем поддерживать Unity WebPlayer в Unity 5, по крайней мере в течении 2015 года, пока это полезно для наших разработчиков.

Итак, что вы должны сделать, чтобы убедиться, что вы по-прежнему достигаете наибольшее число пользователей? В настоящее время лучший способ добраться до большой аудитории игроков — выпускать игру, используя Unity 5 WebPlayer и Unity 5 WebGL. В настоящее время WebGL игры более ограничены в плане функциональности и производительности, так что если вы начинаете новый проект, рекомендуется выбрать Unity 5 WebGL в качестве целевой платформы и портировать вашу игру в Unity 5 WebPlayer позже, добавив дополнительную функциональность и используя больше возможностей Unity WebPlayer. Таким образом, геймеры смогут играть с WebGL на Mozilla Firefox, Google Chrome, Apple Safari 8.x или играть с Unity WebPlayer на Microsoft Internet Explorer или Apple Safari 7.x.

Комментарии закрыты.

  1. in IL2CPP C# socket is not work , I Can not run My App!

  2. it seems that C# socket is not supported in IL2CPP in Unity 4.6.x? how to fix this problem?

    1. in IL2CPP C# socket is not work , I Can not run My App!

      1. me too, is there any solution for this issue?

  3. Where is «Scripting Backend» setting? I can’t find it anywhere, Unity 4.6.1.f1

  4. «IL2CPP always has code-stripping enabled»

    I have to keep stripping disabled because I keep getting compilation errors when I enable it, does that mean that my app won’t work with IL2CPP unless I fix all my problems? what stripping level does it use?

    1. This also brings up a question, now that stripping is enabled by default and mandatory for 64bit apps on iOS, is the feature part of Unity free or how will that work for people without a pro license?

  5. I noticed the ultimate fate of the webplayer plug-in is left ambiguous. I do hope that it will continue to be supported unless the webgl surpasses it in performance. Web development is the thing i wish to focus on the most.

  6. Do you consider to open source your il2cpp transpiler?

  7. Great to hear, it has been a difficult end of year for dev’s providing support for IOS 8 already and possibly till after this first quarter will remain tricky, on a few projects have been using Vuforia and with deadlines past and future ones looming I really appreciate all the help I can get with the required migrations to 64-bit decided by the powers that be. I hope this means when android finally has 64 bit specifications, the switch over will be far less turbulent but who knows. Thanks again and keep up the great work.

  8. Does this mean we’re getting iOS IL2CPP in Unity 5.0.0 already? cool! but is seems a final won’t be out until 2Q 2015.
    Can you tell us what more platforms could possibly use IL2CPP..

    1. Currently iOS is the primary focus and WebGL only works on top of this technology.
      Other platforms will follow later.

  9. Great news,
    It also sounds like we hav to brace ourselves for a chaotic 1st quater bugs on both the webGL and Ios side of things. Perhaps if y

  10. Will we ever see 64 bit precision?

    1. Can you clarify that statement a bit? 64-bit precision for a particular set of APIs?

      1. 64 bit for 3D Space, so say for the Transform class. In other words, large world support.

        1. This feature request (some support for solving floating point precision problems) has absolutely nothing to do with 64 bit CPU architectures…

    2. I hope so, but it is clear that Unity will not give us C++ compile option, nor 64 bit floating point precision, that is a shame but let they continue to publish the wonderfull 64 bit iOS support…

      1. What do you mean by «C++ compile option»? Do you mean writing scripts in C++?

    3. @ARAS Yea I get that, but it just got me thinking about it.

      1. What you’re after is double precision floating point numbers, which is something I asked about at Unite Australia and they said it is being looked into because it is a problem for larger games and things like flightsims and GIS applications.

  11. » We also partnered with Prime31 plugin developers to upgrade the most popular plugins for IL2CPP and 64-bit»

    Does this mean that every plugin won’t have just to be recompiled with 64bit support but also modified to support IL2CPP?
    Or it is just to ensure that there are no issue on IL2CPP side of code?

    1. No, all plugins will not need to be modified to support IL2CPP. Some will need to be modified, no doubt, but most won’t. We’re aiming to match the behavior of Mono as much as possible. This work was done to ensure that we did not have problems on the IL2CPP side. Specifically, we wanted to confirm that p/invoke and marshaling worked well in IL2CPP, among other things.

  12. IL2CPP always has code-stripping enabled, to reduce code size; this might mean that types that are not in the compilation, might need to be manually added.

    What does this mean? Can you give an example? How do you add types manually?

    Thanks

    1. Stripping is an option with iOS/Mono builds in Unity, but it will always occur with IL2CPP. Types can be manually added by using an XML file. You can find more details in the Unity docs here.

  13. Does il2cpp supports .net threads?

    1. Yes, IL2CPP supports .NET threads now. Note that threads are not supported with WebGL, since browsers don’t support threads in JS yet. However, .NET threads do work via IL2CPP on iOS.

  14. How does the C#/Mono upgrade fit into this?

    «Until June 1, 2015 the Mono scripting backend can be used to publish 32-bit updates to existing apps on the iOS App Store»

    Does this mean we shouldn’t expect to see the Mono upgrade until after June 1, 2015?

    1. I don’t have an exact date for you, but a .Net/Mono upgrade will not happen until IL2CPP matures and has been deployed to all the platforms that require it.

  15. When will you release an editor for linux? It would go perfectly with your open sourced UI ;)

    1. Well godot looks very promising so there is that

  16. Thanks for pushing it so hard guys.. Looking fwd for the update in 2015.

  17. Limited Unity 5 Pro WebGL update for Unity 4 Pro license owners would be nice solution. I need only export my projects to WebGL, I don’t need any Unity 5 Pro new functionality ;/

    1. ….especially that Unity 4 users lost NaCl export that still would works in all 2015 in Chrome.

    2. Well, as Unity 5 Free «should» have WebGL export I don’t see the need to backport it to 4.6.x — just use the free version as you say you don’t require the Pro features anyway…

      Maybe??

  18. Will Unity 4.6.x see a WebGL export before Chrome disables NPAPI in April?

    1. No, WebGL will be a Unity 5 feature.

      1. In the comment above I have assumed that Unity 5 Free will have WebGL export — would I be right in that assumption? The only people losing out would be 4.6.x Pro users not willing to upgrade… Is that correct?

        1. Yes, WebGL deployment will be available in the free version of Unity 5

  19. Awesome update as usual! Thanks for keeping us in the loop in advance.

  20. Great work! and merry christmas to you all :)