[Из песочницы] Разработка code-based UE4 проектов под iOS в Windows
Один из самых часто задаваемых вопросов на официальном форумe Unreal Engine 4, касаемо разработки для iOS, это возможность разработки code-based проектов на Windows, без необходимости покупать и использовать Mac OS X как того требует официальная документация. Решения есть, но они плохо расписаны и могут отнять много времени на пробы и ошибки. О трудностях перевода на русский и говорить не приходится. Так и родился этот туториал, которым я хочу с вами поделиться.
Для начала, не много фактов. UE4 официально позволяет разрабатывать игры под iOS только на Mac OS X и XCode соответственно. Согласитесь, особенно в нашей стране, докупать мощный макинтош сравнимый по производительности с уже имеющимся PC, дело довольно накладное. Да и переучиваться под новую ОС и среду разработки захочет не каждый, а если и решится, то потратит на это приличное количество рабочего времени прежде чем выйдет на прежний уровень эффективности.
Сразу оговорюсь, что полностью обойтись без компьютера (PC или Mac) работающего под управлением OS X не получится, по крайней мере в текущей версии движка. Однако есть довольно оптимальное и компромиссное решение проблемы. Уже сейчас, все пользователи последней версии движка (4.2.x) имеющие доступ к его исходникам на GitHub (или, например, скачавшие их со всеми известного торрент-трекера), обладают недокументированной возможностью настроить компьютер под управлением Mac OS X в качестве сервера сборки и компиляции проектов, а саму разработку проекта и его тестирование на устройствах вести исключительно из-под Windows. Придется разве что периодически заглядывать в Mac и проверять, работает он еще или вы его с концами заморили постоянной компиляцией кода.
Что же для этого нужно? Как уже было сказано, понадобится компьютер работающий под управлением Mac OS X (10.8 и выше). Вы можете купить подержанный Mac или Mac Book или запустить OS X на виртуальной машине. Как и на чем будет работать ваш OS X — решать вам. В качестве примера, мы в данный момент используем Mac Mini (Late 2009), купленный с рук по дешевке. Со своими задачами он справляется, но в будущем обязательно поставим машинку по быстрее (самое важное это процессор и дисковая система). Имеет смысл поискать компьютер на ebay (если конечно у вас есть время подождать с доставкой 2–3 недели; у нас не было).Итак, положим, что у нас есть все что нужно, а именно: рабочий PC под управлением Windows (7 SP1 и выше), а также компьютер под управлением OS X (10.8 и выше). Компьютеры должны быть соединены в обычную локальную сеть. В теории предлагаемый метод выглядит следующим образом. В исходниках UE4 есть программа UnrealRemoteTool. Запустив ее на OS X, мы сможем посылать ей команды на исполнение с удаленного компьютера (компилировать, паковать и т.п.). В нашем случае посылаться команды будут с ПК работающего под Windows и на котором ведется разработка в UE4: редактируется контент, пишется код проекта и т.д. В чистом остатке, после правильной настройки, мы сможем напрямую из редактора UE4 компилировать и паковать проект под iOS также как это делается в случае с обычной PC сборкой. Оттуда же, вы сможете устанавливать готовые ipa на все iOS устройства подключенные к вашему ПК. Далее приведена детальная инструкция, как настроить все программы и оборудование на обеих системах. Поехали
Шаг 1: Для начала нам нужно получить доступ к исходникам UE4. Если они уже у вас есть из неофициальных источников, то можете пропустить этот шаг. Если же вы официально зарегистрированный разработчик Unreal Engine 4 и имеете активную подписку, то вам нужно сделать следующее. Зайдите на сайт GitHub и зарегистрируйтесь там, если у вас еще нет аккаунта. Войдите под ним. Далее перейдите на сайт Unreal Engine — авторизуйтесь там и в настройках аккаунта (раздел Account) укажите своей GitHub аккаунт в соответствующей строке. Сохраните изменения. Далее ваша дорога лежит на GH-страницу Epic Games в GitHub: github.com/EpicGames/ — в списке репозиториев выберите UnrealEngine. В правом верхнем углу нажмите кнопку Fork, а в появившемся окне с выбором аккаунта, выберите ваш GitHub аккаунт. Убедитесь, что забрана версия 4.2 и старше. После этого вы переместитесь на страницу вашего личного ответвления движка. Рекомендуется прочитать целиком все описание на странице, прежде чем двигаться далее, но главное, что вам нужно тут сделать, это скачать два архива Required_1of2.zip и Required_2of2.zip, которые находятся в параграфе Getting up and running. Осталось скачать GitHub клиенты для локальной работы с исходниками. Для Windows его можно скачать здесь, а для OS X вот здесь.
Далее для каждой операционной системы нужно выполнить свой набор шагов по отдельности. Начнем с Mac OS X, а завершим настройку уже на PC, после чего вы сможете свободно вести разработку под iOS платформу.
Mac OS X Шаг 2: Первым делом нужно обновить систему до как минимум версии 10.8, а лучше до последней на данный момент версии Maveriсks (10.9.x). В левом верхнем углу кликаем на яблоко, выбираем About This Mac → Software Update. Вы переместитесь в AppStore и если доступны обновления установите их.Шаг 3: Затем установить XCode. Он бесплатный, скачать его можно отсюда.
Шаг 4: Для того чтобы разрабатывать проекты под iOS, нужно быть зарегистрированным в Apple Developer Program. Программа стоит 99 $/год. Сейчас стало довольно легко получить статус девелопера, не нужно отправлять ни каких факсов для этого. Для тех, кто еще не зарегистрирован, советую начать отсюда. Для тех же, кто уже зарегистрирован, нужно создать сертификат и Provision profile на его основе для своей игры, а также желательно задуматься и об AppID, чтобы в полной мере иметь возможность тестировать GameCenter, iCloud, IAP и Push сообщения. Все это можно сделать в Member Center. Делайте все в точности с описанием на сайте и процесс не займет у вас много времени. Обратите внимание, что для установки Provision profile-а на OS X компьютере, достаточно скачать его и открыть двойным кликом. Откроется XCode и все. Ни каких дополнительных сообщений не появится — это нормально. С установкой сертификатов на компьютер все обстоит чуть сложнее, но тем не менее более прозрачно (вы сможете сами их увидеть в приложении Keychain после импорта). Единственное, могут возникнуть проблемы у бывших UDK разработчиков, у которых остался сертификат (который можно скачать с сайта Apple), но нет закрытого и открытого ключа, которые использовались для генерации сертификата. В таком случае идите на сайт Apple, создайте новый сертификат, опять же следуя инструкциям, а затем создайте новый Provision Profile на основе него. AppID от этих действий не пострадает, как и все уже имеющийся приложения и provision/distribution profile-ы.
Шаг 5: После того как вы импортируете сертификат и Provision profile в систему, вам нужно экспортировать сертификат и его закрытый ключ обратно. Для этого откройте Applications → Utilities → Keychain Access.app. В верхнем-левом окошке выберите login, ниже выберите My Certificates, а затем найдите свой импортированный сертификат в списке справа. Кликните по нему правой кнопкой и выберите Export. Сначала экспортируйте его с расширением *.cer, а затем раскройте его, выделите появившийся ключик и экспортируйте его выбрав расширение *.p12. Два этих файла, а также ваш Provision profile понадобятся вам на PC позже, поэтому сохраните их на флешку или например в Dropbox.
Шаг 6: Теперь нам нужно забрать исходники с GitHub-а. Для этого открываем терминал OS X: Applications → Unitilites → Terminal.app. Можно обойтись и без него, но с ним будет и быстрее, и гораздо удобнее в итоге. Скоро поймете почему.
Шаг 7: Перейдите в корневой каталог введя команду:
cd / На заметку: Если вас попросят ввести пароль, вводите его, не обращая внимания на неподвижность каретки. Так и должно быть. Введите пароль вслепую и нажмите Enter.Шаг 8: Создайте новую папку в корневом каталоге:
sudo mkdir UE4 Шаг 9: Убедитесь, что у данной папки есть все необходимые права доступа: sudo chmod 777 UE4 Шаг 10: Далее установите скачанный клиент GitHub на Mac. Запустите его, авторизуйтесь под своим аккаунтом. В левом столбце вы увидите список аккаунтов, с которых можно скачивать репозитории: выберите свой аккаунт. В появившемся справа списке репозиториев выберите *Ваш_Аккаунт*/UnrealEngine и нажмите Clone To Computer. В качестве папки для клонирования укажите созданную вами ранее папку UE4, находящуюся в корневом каталоге жесткого диска.ВАЖНО: Четко соблюдайте все пути и директории для клонирования репозиториев, создания UE4 проектов и т.п., иначе ваш проект просто не соберется из-за ненайденных тут и там файлов. В данный момент система очень чувствительна к изменению расположения исходников движка и самих проектов!
Шаг 11: Обратите внимание, что скачанные ранее zip файлы не надо распаковывать на OS X. Тут нужен только исходный код.
Шаг 12: После того, как исходники скопируются на ваш компьютер, вернитесь в командную строку и выполните следующую команду:
for ((; ;)) ; do ./UnrealRemoteTool; done Она запустит на выполнение утилиту UnrealRemoteTool, которая с этого момента будет слушать команды с вашего PC под управлением Windows. Обратите внимание, что мы запустили ее в цикле. Если вдруг утилита закроется из-за ошибки, например, то она откроется заново и продолжит работу. Таким образом вы можете всегда держать включенным ваш OS X компьютер и в любой момент паковать с его помощью iOS проекты. На случай полного выключение питания Mac-а, можно настроить его так, чтобы он включался после нештатного выключения. Делается это следующим образом: System Preferences → Energy Saver включаем галочку Start up automatically after a power failure. Теперь, чтобы каждый раз не запускать вручную Terminal и не выполнять for команду для запуска UnrealRemoteTool выполним следующий набор команд в окне Terminal (нужно открыть новое окно, так как текущее занято ожиданием команд от UnrealRemoteTool): cd / sudo chmod 777 / touch StartUnrealRemoteTool.command sudo chmod 777 StartUnrealRemoteTool.command open / перед вами откроется окно Finder с корневым каталогом. Найдите там файл StartUnrealRemoteTool.command. Нажмите по нему правой кнопкой, выберите пункт меню Open With → TextEdit.appВ открывшемся файле напишите следующие команды
cd /UE4/UnrealEngine/Engine/Build/IOS for ((; ;)) ; do ./UnrealRemoteTool; done нажмите в самом верху, слева File → Save. Теперь откройте настройки системы System Preferences → User & Groups выберите свой аккаунт в левом окне, и перейдите на вкладку Login Items слева-сверху. Нажмите на плюсик на открывшейся закладке, перейдите в корень и выберите файл StartUnrealRemoteTool.command. Таким образом, при каждом старте системы UnrealRemoteTool будет запускаться автоматически и ваш Mac будет всегда готов к работе.Шаг 13: В OS X нам осталось узнать название вашего компьютера и настроить Files Sharing. Зайдите в System Preferences → Sharing и поставьте галочку рядом с File Sharing. Выберите пункт Allow access for All Users. Наверху окна вы увидите название вашего компьютера. Нажмите на Edit и в появившемся окошечке переназовите его так, чтобы в нем не было пробелов. Например HGSMacMini. Обратите внимание на постфикс .local в конце названия вашего компьютера. Запишите куда-нибудь на бумажку все название вместе с постфиксом, оно скоро нам понадобится.
Windows Шаг 14: Для работы с code-based проектами в Windows и для возможности скомпилировать из исходников сам движок, необходимо установить Visual Studio 2013 (не ниже). Подойдет бесплатная Express версия; скачать ее можно здесь.Шаг 15: Запустите один раз VS2013 после завершения установки; выберите тему оформление; выберите привычную конфигурацию среды; на предложение авторизоваться — авторизуйтесь (понадобится, если в дальнейшем захотите использовать TFS Online в качестве системы контроля версий)
Шаг 16: Далее установите GitHub клиент на Windows. После установки авторизуйтесь со своим аккаунтом, а второй и третий шаг можете пропустить. Далее откройте настройки клиента (шестеренка, справа-сверху) и в поле Clone Path введите C:\UE4 — нажмите кнопку Update. Теперь можно выкачать исходники из интернета. Нажимаем на плюсик в верхнем-левом углу, перейдите на вкладку Clone. Аналогично тому, как это было сделано в OS X, выбираем свой аккаунт в левой колонке, а в правой UnrealEngine и нажимаем Clone внизу окна.
Шаг 17: Опционально: Если вы планируете работать с TFS в качестве системы контроля версий, то на данном этапе необходимо отключить забранный проект в GitHub, иначе он будет выбивать вас из под TFS, всякий раз, когда вы будете пытаться открыть Solution проекта в VS2013. На основном экране клиента, в левом столбце должен отображаться проект UnrealEngine. Нажмите на него правой кнопкой и выберите Remove. Далее закройте GitHub, перейдите в папку C:\UE4\UnrealEngine и удалите скрытую папку .git — если она не удаляется, перезагрузите компьютер или воспользуйтесь программой анлокером и удалите ее.
Шаг 18: После того как исходники скопируются, по очереди откройте ранее скачанные zip файлы (вместо стандартной утилиты Windows, лучше воспользуйтесь WinRar или др.): Required_1of2.zip и Required_2of2.zip — извлеките их содержимое в папку C:\UE4\UnrealEngine с заменой.
Шаг 19: Далее в папке C:\UE4\UnrealEngine создайте текстовый файл и изменить его название вместе с расширением на следующее: UE4Games.uprojectdirs — откройте его в Notepad++ или в обычном Notepad и добавить в него `./` (без кавычек, только точку и слеш). Сохраните файл.
Шаг 20: Теперь перейдите в папку С:\UE4\Unrealengine\Engine\Programs\UnrealBuildTool и откройте файл BuildConfiguration.xml (лучше всего открывать этот и все последующие файлы в Notepad++, чтобы не повредить кодировку. Аккуратно пользуйтесь вставкой).
Внизу перед закрывающим тегом вставьте следующий xml код:
C:\UE4\UnrealEngine\Engine\Binaries\DotNET\IOS\IPhonePackager.exe.configC:\UE4\UnrealEngine\Engine\Source\Programs\IOS\iPhonePackager\Properties\iPhonePackager.exe.config
и убедитесь, что в секции присутствует следующая строка (если ее нет, ее надо вставить, или исправить false на true):
Шаг 24: Осталось импортировать сертификат. Нажмите на кнопку Пуск и введите в поиске название MMC.exe и нажмите Enter. В появившемся окне, нажмите File → Add/Remove Snap-in… В появившемся окне, в левом столбце выберите из списка Certificates, затем нажмите кнопку Add, в появившемся диалоговом окне укажите My user account и нажмите Finish, а затем и OK. Диалог закроется, а в левом столбце основного окна появится пункт Certificates — Current User. Разверните его и выберите папку Personal → Certificates. Щелкните правой кнопкой по центральной части окна, где отображаются сертификаты и выберите All Tasks → Import. В появившемся окне мастера, нажмите Next. Найдите свой сертификат экспортированный в OS X на диске, выберите его. Нажимайте Next, а потом Finish. После этого снова нажмите All Tasks → Import → Next. Но на этот раз найдите экспортированный закрытый ключ с расширением *.p12 выбрав его предварительно среди фильтров. Затем нажмите Next, появится предложение установить на него пароль. Пропускайте, иначе при автоматической паковке проекта в UE4, возможны отказы в доступе. И также жмите Next, затем Finish. Все подготовительные работы завершены. Закройте MMC.exe. На предложение сохраниться, откажитесь. К сертификатам это отношения не имеет.
Шаг 25: Наконец вы можете запустить C:\UE4\UnrealEngine\GenerateProjectFiles.bat файл для генерации проекта движка и вспомогательных программ. Как только скрипт отработает, запустите сгенерированный UE4.sln в первый раз (это solution самого движка). Наверху, в настройках проекта выберите Development Editor и Win64, предварительно посмотрев вот это видео, чтобы не возникло вопросов где выбирать Win64. Далее в Solution Explorer выделите проект UE4, нажмите по нему правой кнопкой и выберите Build. Движок будет компилироваться 15–40 минут. Все зависит от процессора и дисковой системы, как отмечалось ранее.
Шаг 26: По завершении сборки вы сможете открыть готовый редактор UE4, который располагается вот здесь: C:\UE4\UnrealEngine\Engine\Binaries\Win64\UE4Editor.exe. На старте, вам будет предложено создать проект. Выберите Code Base Project, снимите галочку с Include Starter Content, а в качестве директории выберите C:\UE4\UnrealEngine\ — напоминаю, директория очень важна! Затем нажмите Create Project.
Шаг 27: Окно создания проекта закроется и откроется Visual Studio 2013 с исходным кодом вашего нового code-based проекта. Все что нужно, это выбрать в Solution Explorer ваш проект и нажав по нему правой кнопкой выбрать Build.
Шаг 28: После компиляции проекта, запустите снова UE4Editor.exe и выберите свой проект из списка. После открытия, вы попадете на карту созданную по умолчанию подходящую для тестирования базовой функциональности проекта (возможность сборки и разворачивания на устройствах). Поэтому сохраните эту карту в директорию вашего проекта. Для начала она послужит вам в качестве вашей стартовой карты, для запаковки проекта. Далее откройте настройки Edit → Project Settings → Maps & Modes и укажите в поле Game Default Map только что сохраненную карту. Чуть ниже, убедитесь, что в поле Default GameMode указан GameMode вашего проекта, который вы создали и скомпилировали. Например IdolGameMode. Если он не выбран, выберите его из списка.
Шаг 29: Не покидая настройки перейдите в раздел Packaging и разверните верхнюю секцию Project. Снимите галочку с Full Rebuild иначе при каждой сборке проекта, будет перекомпилироваться весь движок, а это очень-очень долго! Full Rebuild стоит применять только при сборке релизных или других важных билдов, где полная сборка действительно необходима.
Шаг 30: Остался последний шаг, сконфигурировать проект под iOS. Находясь в настройках, перейдите в раздел iOS и нажмите на кнопку конфигурации. Все, ваш проект готов к запаковке и загрузке на девайсы.
Шаг 31: Для того чтобы запаковать проект в *.ipa файл, закройте настройки и нажмите в основном окне редактора File → Package Project → iOS. Выберите директорию, куда вы хотите поместить готовый ipa файл и нажмите OK. Начнется компиляция и запаковка проекта. По окончании запаковки в указанной директории появится папка с названием платформы, для которой производилась сборка (в нашем случае это iOS) и в ней вы найдете заветный ipa файл с игрой. Стоит отметить, что запаковка может быть довольно долгой, а за ее прогрессом можно следить в окне Window → Output Log. Процесс может занять от нескольких минут, до нескольких часов, если у вас стоит слабая машина под OS X. Тут все зависит от ваших финансовых возможностей. Но стоит отметить, что после первой компиляции и регулярном изменении только контента проекта в самом редакторе, запаковка занимает меньше минуты даже на слабом Mac Mini.
Шаг 32: Если все пройдет штатно, и сборка завершится успехом, вы получите ipa файл, который можно загрузить на устройство, например, при помощи iTunes. Добавьте ipa в iTunes (или положите его в папку к остальным приложениям на диске, и он сам его увидит). Подключите устройство к компьютеру, на вкладке Apps выберите в списке ваше приложение и нажмите Install. Осталось синхронизировать ваш девайс и приложение будет установлено на девайс.
Шаг 33: Как альтернативный метод запуска приложений на девайсах (можно запускать одновременно на нескольких), в редакторе, в правой части меню, нажать на стрелочку рядом с кнопкой Launch и выбрать из списка нечто типа All_iOS_On_YourPC, а затем нажать на кнопку Launch. Начнется запаковка проекта и установка на подключенные девайсы (Mac также включен в работу). В данный момент весь процесс заканчивается сообщением Build Failed, но обычно ошибка происходит уже после того как произведена установка на все девайсы. Загляните в Window → Output Log и прокрутите лог вверх. Если увидите характерный участок, в котором данные передавались на устройство, то все должно быть в порядке. Так что не стоит волноваться по поводу этой ошибки — все готово к запуску на iOS.
Заключение Вот и все. Ваше рабочее место готово к созданию iOS проектов на UE4 прямиком с вашего ПК под управлением Windows. В заключении отмечу, что данный метод работает только c code-based проектами. Однако, вы легко можете превратить любой Blueprint проект в code-based, просто добавив в него пустой файл с кодом: в редакторе нажмите File → Add Code To Project. Таким образом проект станет code-based и будет нормально собираться выше указанным методом.На данный момент метод был проверен на следующих версиях движка: 4.2 и 4.2.1