Как я Unity для экспорта на xbox360 настраивал да игру писал

А еще купил Devkit для этого дела
А еще купил Devkit для этого дела

Написать игру на консоль я захотел еще в раннем детстве. В каком-то журнале, вроде Страны игр, была заметка, что есть особенная версия playstation 1, которая позволяет запускать код, написанный на С. Эту консоль купить и сейчас тяжело, а тогда вообще нереально, но мечта осталась.
В наше время написать игру уже сильно проще, многие игровые движки позволяют экспортировать код на различные платформы и кажется, что в этом нет особенной сложности. Казалось бы, берешь Unity или Unreal engine, пишешь по туторам игру, да экспортируешь, все просто. Но если вникнуть в тему, то все куда как интереснее.

Сейчас будет важный момент, который стоит понимать до того, как начнется основной рассказ. Многие современные движки сейчас бесплатные, как романтическая любовь, если вы делаете на типовые платформы, вроде pc или android, то ни технических проблем не будет, ни кто-то не попросит с вас денег. Но если вы захотите сделать игру для старой платформы, вроде Ps Vita или Xbox 360, то появляются первые проблемы. Дело в том, что лицензия на экспорт на них продавался отдельно, как и девкиты, и все это стоило очень больших денег. Если вы - крупный разработчик, то для вас не проблема купить девкит, лицензию к нему, выпустить игру и отбить деньги. А если же вы просто энтузиаст, которому охота сделать прототип на умершую платформу, так называемый Homebrew, то добро пожаловать в объятия пиратства.

Огромное количество людей занимаются тем, что разбирают слитые sdk платформ и делают свои варианты sdk, т.е. на некоторые платформы можно найти библиотеки или движок, что поможет написать игру бесплатно. Та же Большая N распространяет свою версию unity для написания игр для 3ds, но мы сегодня говорим про xbox 360 и официально тут уже ничего не купить. Если пиратство для вас неприемлемо, то читать дальше не стоит, загляните на форум gbatemp и там можно попробовать найти фанатские легальные sdk.

Unity и его версии

Как я Unity для экспорта на xbox360 настраивал да игру писал

Движок Unity очень популярный не только из-за количества поддерживаемых платформ, но и из-за общей простоты работы. Многие используют его на основной работе, потому использовать для написания homebrew вполне хорошая идея. Свои первые прототипы я делал для ps vita и по ним можно без проблем найти туториалы в сети, которые подскажут что скачать, как экспортировать, ну и как потом пережать проект, чтобы он запустился на взломанной консоли. С Xbox360 такого туториала нет, потому когда я начинал свои поиски, то обратиться за помощью было просто некуда.

Чтобы экспортировать из Unity на любую платформу, вам потребуется 4 вещи:

  1. sdk платформы, на которую вы экспортируете
  2. сам Unity, он бывает разных версий
  3. набор support files для нужной платформы, чтобы связать sdk и unity
  4. лицензионный ключ, который откроет возможность экспорта
Если хотите писать homebrew - надо привыкать копаться в поиске
Если хотите писать homebrew - надо привыкать копаться в поиске

Поиск по гуглу и форумам почти не давал информацию. Без проблем можно было найти файлы для ps3, ps4, ps vita, но не xbox 360. Через какое-то время повезло и выяснилось, что нужно искать версию unity 5.4.0b11 либо b3, эти бета-версии пока что последние, что могут экспортировать как для xbox360, так и для playstation 3, с которой я буду разбираться позже. Версия unity достаточно древняя, но нам подойдет.

Немного про версии unity. Движок обновляется каждый месяц, в итоге версий набралось уже очень много. От версии к версии добавляются новые фичи, потому support files от одной не подходят к другой. Далее, менялись версии prefab при переходе от 2017 версии к 2018, да и хотя бы плагины от одной версии могут не подойти к другой. Потому поиск рабочей версии - это не особо просто, ну и не выйдет скачать последнюю версию unity, нажать экспорт и получить игру для любой платформы, как некоторые думают.

Официальные версии sdk гуляют по закрытым форумам и лишь изредка происходят сливы. И по xbox было так же, когда посвященные люди обсуждали методы написания игр, а массовый слив произошел году в 2016, хотя могу и путать. Сейчас же найти sdk от бокса можно на многих форумах и торрентах, стоит лишь поискать XDKSetupXenon21256.3.exe или более поздний. Я пробовал этот и все заработало. Но чтобы установился sdk, нужно поставить visual studio 10 full, у меня стояла 2017 версия, она не подхватилась, как и vs10 express. Ставите сперва vs10 full, затем sdk, затем unity, а затем support files.

То самое пиратство

Магическая последовательность байт
Магическая последовательность байт

Описанное выше, если посмотреть, не является особенным пиратством. Озвученные версии unity можно найти в гугле и скачать с официального сервера, как и support files, точно так же, как и sdk, а visual studio вообще бесплатный. Но установив все это, вы не получите возможности экспортировать, потому что у нас нет ключа, который надо активировать, чтобы появилась возможность экспортировать. Вы без проблем можете погуглить и найти в сети ключи от ps3, ps3, psvita, но xbox360 просто нет. И вот тут надо взламывать unity.

До того момента, как unreal engine 4 включился в плотную борьбу за разработчиков, оба движка были платными. Unity в этом плане был более демократичный, предоставляя в халявной версии основной функционал и самое главное неудобство состояло в том, что нельзя было поменять цвет темы программы на темную версию, это было доступно лишь в pro версии. Но как ни странно, это сильно раздражало пользователей, отчего в сети появлялись различные способы взлома движка, причем сделать это можно самостоятельно, произведя подмену пары байт через hex-редактор. А можно найти и кряк, тут уже кому как удобнее. Слабая защита указывает на то, что о ней и не особо-то парятся, разработчики движка зарабатывают с других вещей. Ссылок я тут давать не буду, их можно будет найти в ролике, что я прикреплю к этой статье.

Наконец-то экспортируем проект

Проект собирается из Unity в нативный код
Проект собирается из Unity в нативный код

На этом моменте я ожидал, что будут какие-то особые проблемы уже с экспортом. Дело в том, что после экспорта проекта на ps vita, полученные файлы надо прогонять через самописный скрипт на python от Silica. Для switch тоже не так просто экспортировать, там довольно капризный сборщик. Но неожиданно экспорт и сборка проекта для xbox360 в нативный код произошла в один клик. Редактор ругался на какие-то неправильно заполненные поля, но экспортировал полностью рабочую игру. И чтобы запустить ее, надо скинуть ее на флешку, зайти во freeboot в директорию и запустить исполняемый файл.

Мой рабочий стол во время тестов
Мой рабочий стол во время тестов

Первым делом я проверил работу геймпада, затем экспортировал несколько проектов и все они заработали с нормальным fps. Из заметных косяков было лишь то, что стандартные вызовы onGui интерфейса на реальном устройстве выглядят очень мелкими. Да и вообще, с интерфейсом надо разбираться, от других разработчиков я так же слышал отзывы, что некоторые вещи заводятся через костыли. Но той же ps vita из unity не срабатывал вызов стандартной экранной клавиатуры, отчего пришлось писать свою реализацию, досадно, но ничего не поделать. Так же на боксе не совсем корректно заработал standart шейдер, отчего и тени не отображались, но тут, как мне кажется, надо вникнуть сильнее и пробовать свои шейдеры. Но в остальном телодвижений неожиданно сильно меньше, чем с другими консолями.

Повышаем комфорт разработки

Как я Unity для экспорта на xbox360 настраивал да игру писал

Если вы писали мобильные проекты для unity, то замечали, насколько удобно на тесте нажимать клавишу build and play и дальше движок сам собирает проект, пересылает его на устройство и запускает. С хоумбрю разработкой такого удобства ждать не приходится, хотя и очень хочется. При установке sdk есть возможность добавить консоль по сети, после чего нажимать компиляцию, какие-то файлы будут пересылаться, но проект не стартанет. Его можно пересылать руками, но будет это довольно долго. Просто представьте, дождаться компиляции проекта, скинуть на флешку, подключить ее, зайти в браузере и запустить. Когда запускаешь одну игру, то это удобно, но когда тестируешь работу, то такая последовательность действий быстро надоест.

Различные виды официальных девкитов, от самого простого к самому навороченному
Различные виды официальных девкитов, от самого простого к самому навороченному

Выход из сложившейся ситуации есть. Нужно переделать консоль в devkit. Даже на youtube можно найти много обучалок, которые рассказывают, как можно на обычную консоль залить прошивку девкита, после чего появится возможность эмулировать привод, снимать оперативную память, писать читы и кучу-кучу всего. Правда, когда я пытался разобраться в этой теме, то многие форумы отмирали, как и ссылки на полезные материалы, но саму прошивку можно найти. И я собирался купить на авито дешевую версию слимки, чтобы перепрошить ее, пролистывал другие города, чтобы за 3-4 тыс купить уже прошитую консоль, и тут мне неожиданно улыбнулась удача.

Я купил Devkit (вернее, Demo kit)

Demo kit. Без наклейти от fat не отличить
Demo kit. Без наклейти от fat не отличить

На авито висело объявление, где продавец предлагал купить самую простую версию девкита от xbox 360. Это тестовая версия, в ней почти ничего нет, есть только нужная прошивка, да возможность запускать свой код по сети. Мне больше ничего не надо, и пускай эта консоль стоила чуть дороже, чем я собирался потратить, но сразу же взял. Заработала она именно так, как я и ожидал - я подключил к локальной сети консоль, добавил ее в сетевое окружение sdk бокса, она обнаружилась и после нажатия build and play стоит лишь дождаться компиляции и запуска проекта на консоли. Происходит это не супер-быстро, но куда удобнее всех этих телодвижений с флешкой. После чего тестировать игры стало крайне удобно.

Заключение

Чтобы ощутить всю боль и радость от разработки homebrew для старых консолей, надо этим заняться. Тут почти нет официальных инструментов, которые бы могли сделать разработку удобной, потому и каждые мелкие успехи воспринимаются, как достижение. И пока что именно работа с xbox360 показалась мне одной из самых удобных. Нужно разобраться с шейдерами и интерфейсом, остальное же все работает и запускается без тех мучений, что есть на других платформах.

Pong на 2ds с движком love potion
Pong на 2ds с движком love potion

Я в ближайшее время хочу потестировать написание игр для wiiu и wii, так же для 2ds я писал на двухмерном фреймворке, unity еще не пробовал, но интересно. И надеюсь, что выйдет написать для каждой консоли, что есть у меня, хотя бы по простому прототипу. Страшновато, правда, подходить к dreamcast, но если на sega нашелся вменяемый движок, то может и там что найдется. Посмотрим.

p.s.

Настраиваем Unity и пишем свою игру для Xbox 360
Unity и работа по сети редкого Xbox 360 Demo kit

Подробности описанной выше истории и видео с процессом я записал в роликах. Так же там есть ссылки на все материалы, которые понадобятся вам, чтобы сделать homebrew-игру на unity для xbox360. Если кто-то очень хочет узнать "а зачем это всё?", то ответ будет "потому что это весело". Ничего умнее придумать не могу, если только еще опыт разработки для устройства с сильно ограниченными ресурсами. Хотя и тут проще писать свой проект для смартфона, есть возможность окупить свои усилия и время. Если же вам просто охота сделать игру для старой консоли - то почему нет?

120120
32 комментария

Такие старания обязательно должны окупаться, так что держи мой плюс, и пусть тебе и дальше будет так же везти

18

спасибо) сейчас пытаюсь выцепить xbox one по нормальной цене и switch. из старых все ищу ps3, вот там не повезло. на авито продавали консоль, оформленную в броню из mass effect за 10к, хотел купить, но продавец не захотел из Саратова отправлять. досада.

5

Не понял про капризность экспорта на свитч, ничего такого не замечал.

2

смотрите, там вышла забавная история, которую смело можно отдельно расписывать, но это так же сопряжено с болью и отчаянием) я упоминал, что на закрытых форумах гуляют слитые версии sdk, итд. ну вот по свичу была ссылка на гугл-диск, на котором кто-то регулярно выкладывал обновления софта для разработки. я тогда каждый день возился с ps vita и своим прототипом, но как-то выделил время и попробовал разобраться вместе с товарищем, что сейчас адаптирует am2r (фанатский метройд на gamemaker) на разные платформы. 

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

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

1

Были ж веремна проблем. Впрочем они на play station до сих пор и остались. А вот на xbox сейчас мегапросто разрабатывать и развертывать. Никаких девкитов не надо, пакет приложения можно даже сразу на ПК развернуть, а можно сразу на консоли, развертывание и отладка по wifi даже есть

1

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

А на unity есть адекватные игры кроме escape from retardov?