Gamedev — Разработчики Unity помоги пожалуйста! с


Содержание

Gamedev — Разработчики Unity помоги пожалуйста! :с

Unity3D — это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.

В.: У меня отсутствует часть сообщений в консоли, хотя они точно должны там быть.
О.: Выключите опцию Collapse в консоли.

В.: Как мне реализовать паузу?
О.: Наиболее простой вариант — установить Time.timeScale в ноль.

В.: Как заставить два меш-коллайдера взаимодействовать?
О.: Включить опцию Convex у обоих.

В.: Как отключить/заблокировать курсор?
О.: Screen.showCursor; Screen.lockCursor.

В.:Как придать телу импульс?
О.: Rigidbody.AddForce с параметром ForceMode.Impulse.

В.: Как изменить громкость всех источников звука в сцене?
О.: AudioListener.volume

В.: Как избавиться от смазывания текстур при отдалении от них камеры?
О.: Отключить генерацию mipmaps в настройках импорта текстуры.

В.: Как отключить вывод предупреждений в консоль?
О.: #pragma warning disable (в справке msdn даны подробности)

В.: Как спозиционировать Scene View на выбранном объекте?
О.: Edit > Frame Selected или просто клавиша F.

В.: Как сделать объект невидимым для Raycast?
О.: Поставить его в стандартный слой Ignore Raycast.

В.: Как сделать так, чтобы игра была в горизонтальном а не в вертикальном режиме?
О.: В Player Settings нужно выбрать пункт Landscape left в Screen оrientation.

В.: Как отключить обработку коллизий для коллайдера?
О.: Включить опцию коллайдера isTrigger. Однако, такой коллайдер всё ещё будет принимать Raycast.

В.: Куда сохраняются логи редактора?
О.: C:\Documents and Settings\zaicheg\Local Settings\Application Data\Unity\Editor\Editor.log
Этот же документ можно посмотреть, нажав Open Editor Log в консоли.

В.: Куда сохраняются логи приложения?
О.: Для standalone: _Data\output_log.txt. Для web: C:\Documents and Settings\user\Local Settings\Temp\UnityWebPlayer\log

В.: Где можно посмотреть, какие ресурсы сколько занимают в моём билде?
О.: Там же, в Editor.log (после сборки билда).

В.: У меня глючит физика.
О.: Проверьте, осущетвляются ли все физические действия в FixedUpdate(). Увеличьте размеры объектов. Избавьтесь от тонких (или безтолщинных) мешей (Plane). Уменьшите FixedTimesetp. НЕ ДВИГАЙТЕ СТАТИЧЕСКИЕ КОЛЛАЙДЕРЫ (начиная с Unity5 уже можно, но всеравно не стоит)

B.: Не получается отредактировать элемент массива mesh.vertices (mesh.normals и прочее).
О.: Редактируйте во временном массиве vertTemp, а потом mesh.vertices = vertTemp.

В.: Я отключил скрипт, но он всё равно частично работает!
О.: Отключение скрипта действует лишь на вызов метода Update(). Start, Awake и прочие будут работать.

В.: Как увеличить частоту физических расчётов?
О.: Edit > Project Settings > Time > Fixed Timestep

В.: Как приостановить выполнение в Editor Mode (поставить на паузу)?
О.: Debug.Break

В.: Как отобразить кириллицу в GUI?
О.: Локализация в коде это плохо. Нужно хранить текст в текстовых файлах и через код вытаскивать нужные строчки. Например, так (не самый лучший пример, но суть понятна)

В.: Как мне подгружать дополнительные ресурсы в рантайм?
О.: AssetBundles.

В.: Как менять хоткеи редактора?
О.: HKEY_CURRENT_USER\Software\Unity Technologies\Unity Editor

В.: Как разрешить игре работу «в фоне»?
О.: Edit → Project Settings → Player → Run in Background

В.: Почему не работает динамичный батчинг?
О.: В Unity есть лимит на количество вертексных атрибутов в 900 штук (лимит поставлен юнитеками опытным путем, может быть изменен в будущем, самому поменять его нельзя), именно вертексов, а не поликов. Т.е. смотрим на шейдер, которым хотим что-то отрисовать, на его входящие параметры. Видим, например, position, uv, normal — 3 атрибута. Делим 900 на 3, получаем лимит в 300 вертексов. Вот если модели с материалом на данном шейдере будут не более 300 вертексов — они будут сбатчены. Т.е. если отказаться от normal в шейдере, то получим position, uv — 900 / 2 = лимит в 450 вертексов. Если откажемся от uv (можно посчитать в том же вершинном шейдере для статичной геометрии, но это уже специфичные вещи), то получим 900 / 1 = лимит в 900 вертексов. От position отказаться нельзя, это координаты самого вертекса. Аналогично, если передавать position, uv, uv2, normal, tangent, color, то получим 900 / 6 = лимит в 150 вертексов.

В.: Почему возникают баги с обработкой столкновений коллизии?
О.: Это не баги, это непонимание того, как работает физика в юнити, уже было неоднократно объяснено. Коллайдеры без RB двигать нельзя, двигать нельзя, двигать нельзя — они считаются статичным миром, который двигаться не может и внутри расчитывается с оптимизацией по кластерам. Как только статичный коллайдер двигается — весь статичный мир перестраивается. Объекты с RB считаются отдельно как динамические объекты. Собственно, отсюда и «баг» — т.к. статичный мир не может двигаться, то и события наступать не могут при его принудительном движении.
P.S. Судя по профайлеру тот же CharacterController является статик-коллайдером со всеми вытекающими последствиями.
P.P.S. После выхода Unity 5 стало можно, но всеравно не тоит.

В.: Почему не работает Asset store? Как заставить работать?
О.: Попробуйте выключить режим использования DirectX 11

В.: Какие отличия между Pro-версией и обычной?
О.: Заходим на страницу покупки Unity и на нужной лицензии выбираем Read more. После этого появится окошко, в котором можно посмотреть отличия между лицензиями.

В.: Где можно взять исходный код Unity?
О.: Нажмите здесь, выберете Россию, потом свяжитесь с представителями Unity Technologies. Разумеется это не бесплатно
Оригинальный текст с сайта Unity:
«If you want to license Unity to develop content for consoles and/or for embedding, cloud distribution or to access Unity source code, contact us here.»

Правила поведения в теме:

  • Прежде чем задать вопрос, обязательно читайте F.A.Q. и пользуйтесь поиском по теме, возможно на ваш вопрос уже есть ответ!
    Кнопка поиск находится в правом верхнем углу.
  • Сообщения, не относящиеся к теме и вопросы, ответы на которые есть в F.A.Q. будут удаляться.
  • Обсуждение пиратских версий Unity или просьбы выложить пиратский контент, а так же сообщения, содержащие пиратский контент будут удаляться, а авторы по возможности будут караться.


В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку «Жалоба» под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

Сообщение отредактировал Displax — 25.07.17, 18:45

Как попасть в game-dev и с чего начать карьеру в этой области если ты веб-разработчик?

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

Рассматриваю работу в Москве.
По компаниям мне сложно сказать где бы я хотел работать , в силу того, что не в курсе всех кто тут обитает.

В настоящий момент я занимаюсь веб-разработками (3 года), попал сюда скорее под влиянием внешней среды нежели по собственным амбициям. В ближайшее время хочу уйти из веба и начать заниматься только играми.
Изучаю Unity3D и C#. Другие движки не рассматриваю так как Unity меня вполне устраивает для моих маленьких домашних заданий по вечерам и в дальнейшем хотелось бы работать именно с ним.
Из пройденных мной книг были «Unity in action», «Game Programming Patterns», и C# Шилдта.
Среди моих навыков ничего кроме того, что узнал из книг у меня нет, и проектов своих тоже(выполненные задания из туториалов не считаю за свои проекты)

Может вы знаете ещё какой нибудь хороший материал для поднятия скила, и посоветуете книги или туторилы?

  • Вопрос задан более двух лет назад
  • 3016 просмотров

EvolDev , назови город, где хочешь работать. Назови компании, которые тебя интересуют. Удаленно тебе работать хочется или ходить в офис? Какие у тебя текущие навыки, проекты, где твой гитхаб? В девгам/хакатонах участвовал, результаты есть?

В общем, вопрос надо дополнить конкретикой.
А то у тебя получается вариация на тему: «Как нарисовать сову?»

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

Отредактируй свой вопрос с учетом всей этой информации, а то ответов толковых так и не появится.

Самый простой способ продемонстрировать свои способности работодателю — сделать игру. Выбираете любую классическую ретро-игру попроще (змейка, тетрис, арканоид), садитесь и делаете. Когда закончите с геймплеем, сделайте главное меню, выход по кнопке Esc, туториал или хотя бы инструкции — короче говоря, все те мелочи, которые делают игру игрой, а не прототипом. Потом берёте и выкладываете исходники на GitHub, а сборку на GitHub Pages или itch.io. Если игра мобильная, то можете разориться на лицензию разработчика и подзасрать магазин своей поделкой, тут уж как сами хотите.

Когда всё это сделаете, можете подавать резюме, этого должно быть достаточно на позицию джуна. Будет плюсом, разумеется, если вы сделаете не одну игру, а несколько, желательно разных жанров. Они не обязательно все должны быть магазинного качества, тут уже скорее важно показать, что вы умеете делать игры в общем, а не только тетрисы. Для проверки своих навыков очень рекомендую поучаствовать в геймджемах (Ludum Dare, itch.io), они хорошо учат собранности и вырезанию лишних фичей.

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

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

Сами по себе знания вас не трудоустроят. Они требуются при трудоустройстве, но трудоустраивает вас именно поиск вакансии и попытка на нее устроиться (отправки резюме, хождение на интервью).

Между прочим есть множество гейм-дева и в вебе.

Saboteur Да это само собой понятно, в вакансиях написан стек технологий, можно по нему пройтись изучить, а на собеседованиях после жёсткого тролинга узнаётся, что необходимо подтянуть.


Но ещё интересно за раннее узнать, что спрашивали у людей которые пробовали устроится, что они знали на тот момент, и требовал ли работодатель предъявить какие нибудь проекты, если да то какого плана и сложности, оно должно быть обязательно выложено в маркет и приносить прибыль, или это какой нибудь плагин вроде pathfinder, или хотят чтобы у меня half-life3 был при себе. Потому что , да в вакансиях пишется, что требуется наличие собственных проектов, но из этого складывается вопрос — каких?

EvolDev, Простите, но компаний — огромное количество. Зачем вам знать что именно спрашивали у тех, кто устроился в RIOT, или в варгейминг, которые расположены в другой стране?

Посмотрите вакансии в тех компаниях, в которые вы собираетесь устраиваться, попробуйте найти разработчиков оттуда.

Game девелопинг НИЧЕМ не отличается от обычного девелопинга. Те же структуры данных, языки, баги и все такое. Рядовой разработчик совсем не обязательно может привнести свою идею, особенно начинающий. Будет просто работать по задачам, которые ему ставят.

Посмотрите вакансии в тех компаниях, в которые вы собираетесь устраиваться, попробуйте найти разработчиков оттуда.

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

Узнайте названия проектов. Погуглите — кто-то из разработчиков явно пишет что-нибудь где-то в инете, возможно даже на тостере/хабре — сможете тогда легко написать в личку.

Стоит потратить день на подобное — если компания хотя бы человек 50-100, обычно кого-то найти можно.

Unity / Game Developer

Unity/Game Developer – это разработчик, который создаёт игры, а также бизнес-приложения, широко используемые для рекламных кампаний. Game-разработчики заняты в полном цикле жизни игры: создание, тестирование, доработка, поддержка, обновления, модификация и т.д. С помощью Unity все чаще создаются большие онлайн-игры. Задача разработчиков состоит в том, чтобы грамотно создать клиентскую часть игры.

Одним из основных достоинств Unity является возможность создания кроссплатформенных продуктов. Такие огромные компании, как Intel и Microsoft с выпуском своих новых устройств также выпускают библиотеки под Unity для того, чтобы сделать разработку под устройства этих компаний более простой и удобной.

Если вы хотите стать разработчиком игр на Unity, то вам необходимо хорошее знание языка C#. Если ваша цель – создание простых игр, то достаточно будет и базовых знаний программирования. Но при разработке сетевых сложных игр от разработчиков требуется также знание паттернов проектирования и понимание того, каким образом будет работать клиент с сервером. Огромным плюсом является знание 3D редакторов, таких как 3DMax, Blender, Maya или других.

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

Игры, созданные отдельным разработчиком или небольшим коллективом без финансовой поддержки издателя компьютерных игр, называют инди-играми (от англ. independent video game). Одним из флагманов инди-индустрии, конкурирующим с крупнобюджетными играми, является проект игры Minecraft, которая была создана одним разработчиком.

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

Требования к Unity/Game разработчику:

  • Знание редактора Unity, опыт работы с движком Unity3
  • Уверенные знания и опыт работы с языком программирования C#
  • Опыт работы с 3D редакторами
  • Хорошие теоретические знания шаблонов проектирования, алгоритмов и структуры данных
  • Знание ASP MVC и паттернов проектирования будет преимуществом
  • Умение работать в команде
  • Знание английского языка на уровне чтения технической документации

Unity/Game разработчик может занимать такие должности:

Unity Developer/ C# Unity Developer
Unity/VR Developer
Junior Game Developer
Unity Middle Game Developer
Senior Unity/Unity Developer
Team Lead Unity/Unity Developer

Интервью с создателем Unity Technologies

Сказать, что Unity сегодня — самый доступный, уютный и гибкий движок, значит не сказать почти ничего. На нем работают игры самых разных жанров: замечательная Hearthstone: Heroes of Warcraft, амбициозная Endless Space, восхитительная Monument Valley и еще окончательно не вышедшая, но уже чертовски красивая The Forest. Список действительно огромен.

Многие считают, что графика игры целиком зависит от движка. Это, конечно, не так. Некоторые думают, что движок — ничто, всего лишь технология, которая ни на что в целом не влияет. Эти люди тоже ошибаются. В первую очередь удобный в обращении движок с богатыми возможностями сокращает время разработки и позволяет авторам сосредоточиться на важных для произведения вещах: на вдумчивом геймплее, дизайне, атмосфере и сюжете. Вот главное отличие хорошего движка от плохого. Удобство.

На московской конференции разработчиков DevGAMM мы встретились с основателем компании Unity Technologies Дэвидом Хельгасоном, чтобы в первую очередь узнать, как же так получилось, что небольшая компания фактически без маркетинга и в кратчайшие сроки завоевала статус гиганта программного обеспечения. Узнали. А заодно разведали и еще много всего интересного.

О настоящем

Мода на разработку игр в России возвращается, пусть и немного не в том виде. Вряд ли мы скоро увидим вал крупных проектов вроде «Код доступа: рай» или «Операция Silent Storm», но инди-сектор уже загорелся. Так получилось в первую очередь благодаря Kickstarter и щадящим партнерским программам от разработчиков игровых движков.

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

С этого мы и начали наш разговор: каково это — быть и русской компанией тоже?

[Игромания] В России Unity успел обрести популярность — логично предположить, что у вас здесь и так уже приличная доля рынка. Так зачем вам офис в России, если дела все равно идут замечательно? Какая у вас стратегия развития на нашем рынке, и отличается ли она от стратегий в других регионах?

[Дэвид Хельгасон] На самом деле никаких особых отличий нет. Многие считают нас американской или датской компанией, но это не так. Наш самый крупный офис находится в Дании, но там работает меньше четверти всех людей. Следующий по размеру офис расположен, кажется, в Шанхае или Сан-Франциско — они примерно одинаковые по размеру. Подразделение в США — это около 15% нашей компании, что очень мало. Unity Technologies — очень крупная компания, и наши люди были везде. Везде, кроме России. Да, мы пытались работать с российскими партнерами через наш офис в Литве, но нас не оставляли мысли о необходимости физически находиться в России: иметь возможность на месте оказывать поддержку покупателям, которые регулярно нуждались в нашей помощи и часто хотели поговорить с нами напрямую. Мы хотели стать российской компанией так же, как до этого стали китайской, шведской и так далее.

[Игромания] Unity развивается очень быстро, что часто может быть опасным. Не пугает ли это вас?

[Дэвид Хельгасон] Да, мы действительно растем невероятно быстро, но ведь и рынок не стоит на месте. Тем не менее мы всегда считали, что стабильность важнее быстрого развития. Это не значит, что мы вообще не рискуем. Просто мы избегаем глупых рисков. Unity Technologies очень консервативна. Сейчас у нас работает примерно 450 человек — вдвое больше, чем год назад. Такой рост мы показываем не каждый год, обычно мы увеличиваемся где-то на 15% каждые 12 месяцев. Наши приложения становятся лучше и лучше, ведь рынок растет очень быстро, и мы не хотим от него отставать. У нас не стоит цель его обогнать, главное — не отстать.

[Игромания] Нам кажется, что важную роль в вашем успехе сыграла схема дистрибуции, которую сейчас перенимают большие игроки вроде Epic и Crytek. Вы боитесь их?

[Дэвид Хельгасон] Вовсе нет. Думаю, что низкая цена или, как в нашем случае, бесплатная версия — это естественные вещи. То, как приложения в принципе должны распространяться. Но мы не добились бы успеха, просто предлагая более дешевую версию движка. У нас все получилось потому, что мы действительно очень хороши. Ведь у Unreal была бесплатная версия почти столько же времени, сколько и у Unity3D. Бесплатную модель Unreal Development Kit предложили сразу после нас, но они не отказались от роялти, в которые наша компания не верит. Компания может взять бесплатную версию Unity3D, сделать на движке игру и выпустить ее без всяких выплат и обязательств. Например, популярную игру 10000000 сделали на бесплатной версии нашего движка без каких-либо затрат на него.

О перспективах

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

Дэвид Хельгасон особо отмечает, что Unity годится для самых разных платформ и жанров. «До недавнего времени большие компании делали большие игры, разными версиями которых часто занимались разные команды. Сейчас же одна команда может сделать игру для одной платформы, а затем быстро перенести ее еще на пять», — говорит Хельгасон. Впрочем, сам он предпочитает мобильные игры, для которых не нужны диван и телевизор.

[Игромания] Вы одни из первых предложили полноценные средства для разработки игр на мобильных платформах, предугадав потребности рынка. Что, на ваш взгляд, стоит ожидать от мобильных платформ в будущем?

[Дэвид Хельгасон] Мне кажется, ничто в мире уже не будет развиваться так быстро, как мобильные игры. Вы слышали, что в следующие пять лет пять количество обладателей смартфонов вырастет до пяти миллиардов? Уже сегодня более двух миллиардов человек пользуется умными телефонами. Я думаю, аудитория продолжит расти быстрыми темпами, пока не достигнет приблизительно 2/3 населения планеты, а затем сбавит темп.

[Игромания] А что случится с рынком персональных компьютеров?

[Дэвид Хельгасон] Рынок ПК, как вы знаете, сокращается. Игры все еще неплохо там себя чувствуют, что очень хорошо. Игры с компьютеров никуда не денутся, но мы не увидим и серьезного роста. На ПК в целом ситуация совершенно спокойная, но этот рынок не покажет взрывного роста и не полезет на небо за звездами. А вот мобильные платформы потихоньку начали это делать. У консолей всегда были замечательные показатели, но и здесь никто не ждет большого роста. Консольный рынок по-прежнему очень велик и важен, но выдающихся результатов не показывает.

Цукерберг рекомендует:  5 способов повышения качества кода

[Игромания] Увидим ли мы новые консоли, или восьмое поколение станет последним?

[Дэвид Хельгасон] Сложно сказать, но моя интуиция подсказывает, что это все же не последнее поколение консолей. Где-то в секретных лабораториях уже идет какая-то работа над новым железом, но компании только выпустили свои приставки, так что об их наследницах говорить еще рано.

Давным-давно все было в руках ПК-гейминга, а затем консоли взяли верх. Игры на ПК не умерли, но рынок сильно уменьшился и лишился крупных инвестиций. У кого-то получалось работать с платформой, другие из-за пиратства были на грани смерти. В России многие играли на ПК, но на Западе эта платформа сильно отставала. Затем был взрыв, связанный с Facebook: если ты не там, то ты вне игры. Тогда все зашло слишком далеко и раздулось до огромного пузыря, который едва ли не полностью достался Zynga. А затем все лопнуло. Конечно, все было не настолько плохо, я немного сгущаю краски. Затем пришли мобильные устройства: если ты не там, то ты покойник. И я помню, что встречал очень много людей, которые пророчили смерть всему, что не мобильник. Глупо так думать. Никакая мода не вечна.

[Игромания] А что вы думаете по поводу Oculus Rift?

[Дэвид Хельгасон] Пока еще слишком рано о чем-то говорить. Скажем, сейчас в мире есть 50 тысяч Oculus Rift — это ничто. Даже если каждый обладатель купит специально разработанную для устройства игру, цифра будет не сравнимой с продажами в Steam и на мобильных платформах. Но после выхода коммерческой версии Oculus Rift устройство будет очень популярным.

[Игромания] А что насчет Smart TV и микроконсолей?

[Дэвид Хельгасон] Это увлекательные штуки, но мне кажется, что они особо себя не проявили. На мой взгляд, основные конкуренты Smart TV и микроконсолей — это не традиционные домашние консоли, а мобильные устройства. Микроконсоль должна быть хоть в чем-то лучше, чем мобильник в твоем кармане, а это не так уж и просто.

Мы заключили партнерство с LG и Samsung, и многие игры для этих телевизоров создаются на Unity. Тем не менее это нишевая категория, которую сложно назвать очень важной. Она хороша для людей, которые издают там игры, но это едва ли что-то большое. Однако объем рынка Smart TV все равно будет расти.

О единстве

Компания Дэвида Хельгасона предлагает экономить время и деньги не только благодаря гибкому и удобному движку. Есть еще магазин Asset Store, где за небольшую сумму можно приобрести для своей игры 3D-модели, анимации, звуки и скрипты. Создают все это, конечно же, сторонние разработчики. Как утверждает Хельгасон, выгодно это и продавцам, и покупателям — разработчики экономят время, покупая, скажем, набор скриптов, который отвечает за поведение камеры в шутерах, а создатели получают существенную прибыль.

[Игромания] Расскажите подробнее про магазин. Большую ли прибыль он приносит в Европе?

[Дэвид Хельгасон] Поскольку 70% от продаж мы отдаем продавцам, наша компания получает не очень много. Это маленькая часть нашего бизнеса, но тем не менее мы ее очень ценим, ведь магазин сильно помогает разработчикам. С самого начала мы не сомневались в этой идее, потому что ясно видели пользу, которую она в себе несет.

Каждый из шести тысяч покупателей сэкономил минимум по три дня, что в общей сложности выливается в 16 лет сэкономленного рабочего времени. Один человек потратил три дня на код, а затем месяц на написание сопроводительной документации, и сэкономил этим более шестнадцати лет другим разработчикам! Это невероятно! За следующий год из магазина скачают шесть с лишком миллионов различных товаров, на которые разработчики потратили бы, допустим, день в среднем. Речь идет о миллиардах спасенных долларов в год.


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

[Дэвид Хельгасон] Наверняка где-то так и было. Тем не менее этот магазин мы создавали в первую очередь для независимых разработчиков. Ведь, как вы знаете, для разработки игры требуется очень много навыков: нужны программист, художник, аниматор, дизайнер. И если большой компании с огромным бюджетом несложно собрать такую команду под одной крышей, то у независимых разработчиков в команде редко бывает больше двух человек. И эти люди не всегда могут собственными силами выполнить всю работу. Именно за этим крылась идея Asset Store. И все же крупные компании любят наш магазин не меньше: зачем им тратить время на то, что можно купить за несколько долларов, если есть куда более сложные и важные задачи?

О будущем

Говоря о будущем своей компании, Дэвид Хельгасон предсказуемо оптимистичен. И правда, поводов для волнения нет — движок пользуется хорошим спросом, магазин Asset Store забит доверху, а система продвижения игр, созданных разработчиками, набирает популярность.

Последнему Unity Technologies, кстати говоря, уделяет сейчас как можно больше внимания. «Благодаря этой системе игроки без лишних усилий и затрат находят игры, которые могли бы им понравиться, — говорит Хельгасон. — Вы просто делитесь своими пользователями, потому что ваши продукты рассчитаны на схожие интересы. Это и есть кросс-продвижение».

[Игромания] Вы начинали как разработчик игр, но вскоре поняли, что создание инструментария для разработки вам больше по душе. Не хотите частично вернуться к изначальной концепции и выпустить парочку игр?

[Дэвид Хельгасон] Лично я нет. Но мы сейчас работаем с десятками тысяч студий, со многими из которых время от времени встречаемся, что-то обсуждаем, и наши инженеры сотрудничают с ними. Безусловно, мы помогаем не столько с играми, сколько с различными технологиями, и часто сами учимся на чужом опыте, чтобы сделать Unity еще лучше. Например, недавно мы сотрудничали с MADFINGER Games из Чехии — очень талантливая студия, которую не нужно учить делать игры. Их опыт помог нам в разработке новых функций и развитии технологии. Можно сказать, что в какой-то степени мы и так разрабатываем игры через тысячи студий по всему миру. И, честно говоря, это намного лучше, чем делать какую-то игру каждые три года.

[Игромания] Вот мы говорили о будущем, о том, каким будет рынок и все остальное. А какой вы видите свою кампанию, скажем, через пять лет?

[Дэвид Хельгасон] Хочется верить, что и через пять лет мы будем примерно той же компанией, которой остаемся уже 11 лет. Вряд ли мы что-то кардинально изменим. Мы начинали с простой задачи: популяризация разработки видеоигр. Мы хотели предоставить удобную, быструю и гибкую мультиплатформенную среду для разработчиков, чтобы они тратили меньше времени и денег на создание потрясающих игр и могли оперативно подстраиваться под меняющиеся потребности аудитории. Например, оказалось, что в большинстве случаев делать игру только для одной платформы — это очень плохая идея. А возможность едва ли не моментально переносить игру с одной платформы на другую не только позволяет сэкономить много денег и ресурсов, но и часто помогает избежать фиаско. Именно этого мы и добивались в Unity с первых дней.

В переводе на русский Unity значит «единство». Соответствуя своему названию, компания Дэвида Хельгасона объединяет под крылом всех: крохотные независимые студии и мастодонтов рынка видеоигр, создателей компьютерных настолок и серьезных шутеров, адептов мобильных игр и разработчиков хардкорных игр для консолей и ПК.

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

Вступление в GameDev. Начало работы с Unity. Интерфейс

Ну вот и настал долгожданный час. В предстоящих трех туториалах, мы создадим свою простую игру похожую на Flappy Bird. Но главной целью будет познакомиться с интерфейсом и устройством Unity.

В этом туториале мы разберем следующее.

  • Как скачать Unity и создать свой аккаунт
  • Интерфейс юнити, за что отвечает каждая панель
  • Как управлять и настраивать объекты
  • Как перемещаться по сцене
  • И больше : )

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

Шаг I: Скачать Unity

Думаю у вас с этим проблем не будет, однако на всякий случай лучше написать.
Переходим на офф. сайт Unity, желательно английский (ты еще не начал учить English? Если нет, то торопись)

Нас встречают яркими скринами с других игр. Но мы не отвлекаемся, и жмакаем Get Started, что бы скачать уже юнити и самому делать крутые штуки.

Нас переносит на вот такой экран, с предложениями. Какую же юнити нам выбрать?
Unity Plus стоит 25$ в месяц, дают немного плюшек, и обязательна к покупке если вы заработали или получили от 100.000$ до 200.000$ используя Unity.

Unity Pro стоит 125$ в месяц. Вам быстрее отвечают на вопросы, отдельная линия поддержки, и дают скидки в Asset Store. С этой подпиской вы можете зарабатывать на Unity сколько хотите.

Unity Personal не стоит денег. Я так думаю что это наш выбор. На самом деле в ней достаточно всего что бы делать классные игры, и даже больше. Можно ей пользоваться если еще не подняли 100.000$.

Жмем Try Personal и идем дальше.

Тут важно кликнуть на то что мы со всем соглашаемся (вы же прочитали под чем подписываетесь :D ?), и нажимаем скачать Unity Hub. Почему Unity Hub, а не просто Unity? Unity Hub позволяет просто устанавливать новые версии юньки. Поверьте она обновляется часто, и все время удалять старую, заходить на сайт и качать новую иногда надоедает.

Устанавливайте, открывайте, и должен быть вот такой вот экранчик.

Разберем все по порядку.

  1. Sign In, это то куда мы сейчас пойдем. Логинится, и создавать свой аккаунт. Это очень важно, так как юнити требует что бы у вас был свой аккаунт. Ну и тем более вы не сможете скачать себе ресурсы с AssetStore без него
  2. Жмакая на New мы создаем новый проект. Легко.
  3. Projects. Тут будет список наших проектов.
  4. Во вкладке Learn вы найдете интерактивные туториалы. Если хорошо с инглишь ооочень советую их пройти.
  5. Installs. Тут наши версии юнити.

Нажимаем на 1. Sign In, в списке выбираем Sign In, и видим вот такое окно

Нажимаем на create one и далее проходим регистрацию

После чего возвращаемся в наш Unity Hub, убеждаемся что есть аккаунт, и нажимаем на Projects -> New

В 1. Пишем свое название проекта, внизу выбираем место куда его сохранить. В 2. Template вы можете выбрать шаблон для игры. Избираем 2D. И начинаем, нажимая на Create Project.

Шаг II. Разбираем интерфейс

Когда вы откроете Unity, перед вами появится что-то такое.

Для первого открытия может быть многовато. Но траст ми, Unity позволяет настроить интерфейс что бы показывать все что нам нужно. А когда разберем что за что отвечает, будет очень легко продолжить дальше.

В правом верхнем углу нажмите на Default и выберите 2 by 3. Нам так будет удобнее разбирать что к чему.

И юнька теперь будет выглядеть вот так. Попробуй.

Давай разберем за что отвечает каждая панель.

1. Scene View

Панель Scene это то где ты настраиваешь игру. Перетаскиваешь свои объекты и ресурсы (assets) на сцену (а сцена это то где происходит твоя игра), и выставляешь их. Если ты запустишь игру, и там будет происходить тищ, бам, вау, то сцена будет параллельно обновляется. Если ты внесешь изменения на сцене когда игра запущенна, весь прогресс потеряется. Помни об этом юный друг, и избегай ошибок прошлых.

2. Game View

Панель Game представляет собой уже готовую игру. То есть тут отображается все как есть в игре. Ты нажимаешь на Play и в этой панеле играешь.

Так же в этой панеле есть выбор разрешения. Обычно стоит свободное соотношение, то есть как ты настроишь размер панели, таким и будет разрешение игры. Ты можешь выбрать другие соотношения. Это нужно будет делать что бы проверить что интерфейс и игра не плывут, когда меняется экран. Нажав на плюсик можешь создать свое. Пробуй!!

3. Hierarchy Window

Панель Иеархии содержит в себе список GameObject-ов на сцене.
Но что такое GameObject? Хух, в целом это объект или ресурс твоей игры. Он имеет некую точку на сцене, то где он находится. Ты конфигурируешь то что делает GameObject через Components (компоненты). То есть собираешь как лего. Смотри, когда мы создали сцену у нас уже в иерархии есть два объекта. Camera и Directional Light. Они оба являются GameObjects, но один смотрит на игру, а другой освещает сцену. Точно так же GameObjects могут быть чем угодно, от звуков, выстрелов, частиц, персонажей, до интерфейса, и объектов которые управляют геймплеем через код.

Так же GameObject может быть как папка. То есть он может содержать в себе другие GameObjects. Это очень удобно когда нужно групировать некоторые объекты. Например твой персонаж может быть GameObject с моделью персонажа, а внутри него другой GameObject который уже модель меча или M16.

Если ты удаляешь объект с Hierarchy окна, объект удаляется и со сцены. А еще старайся хранить там порядок. Так как игра состоит из сотен и тысяч таких GameObjects.

Тут показано как искать объекты, и группировать их. Когда ты складываешь одни GameObjects в другой, первые становиться детьми (children), а последний — родителем (parent). Двигая parent ты будешь перемещать и всех его childs тоже.

4. Панель Project

Окно Project содержит в себе все ресурсы(assets я дальше и буду писать ассеты), которые могут использоваться в вашей игре. Если вы хотите добавить что-то, модель, текстуру, анимацию, перетаскивайте ее в окно Project. А главное создавайте папки и сортируйте свои ассеты. Потом очень сильно упростить разработку.

5. Панель Inspector

В окне инспектора отображаются компоненты о которых мы говорили ранее. Вы выбираете любой объект, и инспектор будет показывать его свойства. К примеру выберите Directional Light. В Инспекторе вы заметите компонент Light и его свойства, которые отвечают за цвет света, его интенсивность и прочее.

6. Toolbar


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

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

Ну а теперь к инструментам

Рука. Позволяет нам вот таким образом перемещаться по сцене.

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

Ну а если Ctrl(или Cmd) и Alt(или Option) то сможете приближать и удалять. Ну или пользуйтесь колесиком мышки. Только способ с клавишами более точный.

И наконец если вы зажмете правую клавишу мышки, то сможете перемещаться по сцене как в шутере от первого лица нажимая на WASD. А подниматься и опускаться на E и Q.

А что бы перемещаться быстрее зажми Shift.

Что бы из любой тулы переключится на “руку” нажми Q

Потом идет Translate tool. Она позволяет тебе перемещать и выбирать объекты. Как только ты ее выберешь то, увидишь цветные стрелочки с центра выбранного объекта. Эти стрелочки отображают три оси объекта. X, Y, и Z. X красного цвета, Y зеленого, а Z голубого.

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

Вы можете перемещать объект по одной оси, нажав на нужную стрелочку.

Нажав на прямоугольник, можете двигать в плоскости, то есть по двум осям.

Следующая тула, это поворот. Нажав и ведя по одной из окружностей вы вращаете объект по этой оси. Нажав в центре, вы можете вращать свободно.

Unity для мобильных устройств

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

Interview with Pixonic

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

«Что действительно здорово в Unity — это встроенная поддержка инструментов, которые используют наши художники, Photoshop и Maya».

«Переход на Unity был одним из лучших решений, которые мы приняли во время работы над Jurassic World Alive. Так мы получили функционал, гибкость и поддержку, необходимые для создания большой игры вовремя и в рамках бюджета. И мы никогда не жалели об этом шаге».

«Мы решили отказаться от внутренней технологии в пользу Unity, чтобы пересмотреть наши представления о том, как разрабатываются большие игры».

«Переход на Unity, чтобы делать мобильные игры, позволил нам сосредоточиться на разработке игры, а не тратить время на создании движка».

Успешные разработчики игр полагаются на Unity

Найти сокровище в Age of Magic, ролевой игре с богатой графикой

Герои, локации, битвы и конфликты — базовые игровые элементы были великолепными. Unity Cinemachine упростила работу с камерами, поэтому всего лишь за год энергичный коллектив запустил одну из лучших RPG на мобильных устройствах.

Успех War Robots обеспечен сбалансированным сочетанием игрового процесса и методов монетизации

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

Как студии удалось издать Trivia Crack на нескольких платформах одновременно?

Команда выбрала Unity ради упрощения процесса разработки, гибкости инструментов, а также возможности издания на iOS и Android одновременно.

Warlords of Aternum крайне удачно покупает рекламу

InnoGames использовали решение Unity Ads Audience Pinpointer, чтобы оптимизировать свои цели по привлечению пользователей. Им удалось улучшить показатель удержания на 7-й день на 20%, что позволило увеличить затраты на рекламу на 60% за один год.

Как с помощью Unity создавался феномен жанра МОБА

Один из самых продуктивных игровых издателей подпитывает свой успех, адаптируя популярные игры для различных платформ в непохожих друг на друга регионах. Узнайте, как они привлекают 10 миллионов активных пользователей ежедневно (DAU).

Через 62 дня после мягкого запуска эта игра заработала 125 миллионов долларов

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

Штурм мобильного рынка сетевым шутером

Воспользовавшись незанятой нишей на рынке, Game Insight разработала мобильную версию создаваемого ими консольного шутера. За две недели Guns of Boom набрала 5 миллионов загрузок, а через год перепрыгнула планку в 50 миллионов. Сегодня их ежедневная активная аудитория (DAU) насчитывает миллион игроков.

Panzerdog использует все преимущества инструментов Unity для привлечения пользователей и монетизации

Узнайте, как Panzerdog, небольшой стартап по разработке игр, воспользовался решениями Unity для монетизации и привлечения пользователей во время мягкого запуска Tacticool и добился оборота в 1 миллион долларов за первый месяц после всемирного запуска.

Как DOTS полностью меняет разработку и производительность мобильных игр

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

Компания Gameloft ценит скорость разработки на Unity.

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

Переход на Unity при создании Jurassic World Alive

При разработке этой игры студии Ludia пришлось сделать сложный выбор: продолжить разработку на своем движке или использовать стороннюю платформу. Принять решение помогли предоставляемая Unity корпоративная поддержка и обучение. Узнайте подробности.

Как сделать мобильную игру ААА-уровня

Unity предоставила Gamevil все необходимое для того, чтобы создать качественную мобильную MMORPG, сравнимую с ААА-проектами для PC. Узнайте, как студия этого добилась.

Как студия Jelly Button создала игру мечты

Узнайте, как Unity сэкономила Jelly Button десятки человекочасов в месяц и позволила им создать многопользовательскую F2P-игру, возглавившую рейтинги по сборам в 20 странах и с 50 миллионами загрузок.

Как Blizzard вышла на мобильный рынок с популярной карточной игрой

Взгляните в прошлое и узнайте о разработке мегахита Hearthstone от Blizzard на Unity. Пошаговая сетевая игра впитала в себя всю красоту и стиль World of Warcraft, и даже спустя много лет она все еще способна создать напряжение в соревнованиях благодаря новым функциям и мощной поддержке разработчиков.

Прототип за три месяца

Джонатан Хокинс создал прототип VR-игры за три месяца, что позволило ему получить спонсорскую поддержку для Eclipse: Edge of Light. Узнайте, как он этого добился.

От любителя до процветающей игровой студии


В 2012 году Маджид Косрави (Majid Khosravi) стал в свободное время разрабатывать мобильную игру на Unity. Сегодня его игры настолько популярны, что их загрузили более 10 миллионов раз, доход от игр достиг солидных размеров, а сам Маджид возглавляет процветающую компанию из семи сотрудников.

Их игры — их правила

Узнайте, как платформа Unity помогла основанной в 2008 году шестью игровыми художниками Fireproof studios сосредоточиться на том, что они умеют лучше всего, создать серию отличных тактильных головоломок и продать более 10 миллионов копий.

Быстрое проектирование, стремительные итерации

Узнайте, как платформа Unity помогла Square Enix перенести богатую вселенную оригинальной консольной игры Tomb Raider на мобильные устройства и создать увлекательное и признанное произведение.

На создание игры могут вдохновить самые странные вещи. В случае Стю Денмана исследования его дедушки-физика вдохновили его на разработку Tiny Bubbles — завораживающей двумерной игры-головоломки, которая заняла первое место на конкурсе Google Indie Games 2020.

Узнайте, как он расширил редактор Unity и использовал такие ассеты, как TextMeshPro и I2 Localization, чтобы создать свою прекрасную двумерную игру.

Функциональность

Universal Render Pipeline (ранее Lightweight Render Pipeline) — это однопроходный процесс упреждающего рендеринга с минимальным количеством вызовов отрисовки. Он обеспечивает высокую производительность, особенно на маломощных устройствах, например, на телефонах и планшетах, а также в ресурсоемких приложениях, например, XR.

Цукерберг рекомендует:  Игры на java - Как сделать приложение в java видимым и писать в нем

Разработка вашей первой игры с помощью Unity и C#. Часть 4

Продукты и технологии:

Unity, C#, Microsoft .NET, Mono

В статье рассматриваются:

  • разработка для Windows;
  • использование специфичного для платформы кода;
  • варианты сборки;
  • настройки игрока.

Добро пожаловать в последнюю статью цикла по разработке игр в Unity. Помните, когда впервые взорвался рынок приложений? На волне всеобщего увлечения создали колоссальное количество программ, и у нас появились приложения для всего. Но в этом море приложений людям стало сложно найти нужное приложение. Приложения, которые теряются на рынке, стали крупной проблемой для разработчиков. Windows Store/Windows Phone Store — далеко не доминирующая рыночная площадка на планете. Означает ли это, что вы не должны ничего разрабатывать для этого рынка? Абсолютно нет. У разработчиков есть реальные шансы на то, что здесь их приложения будут найдены своей аудиторией. Я часто слышал о разработчиках, приложения которых становились рекомендуемыми. Я знаю троих, с приложениями которых это произошло на других платформах, а я общаюсь со множеством разработчиков, использующих все платформы.

В этой статье я рассмотрю процесс переноса в Windows игры, созданной в Unity. Этот процесс довольно прямолинеен и позволяет весьма эффективно интегрировать платформу, что довольно легко реализовать в игре. В Unity 4.5 доступен превосходный инструментарий, который также поддерживает новые универсальные проекты (Universal Projects) (решения, генерирующие пакеты для Windows Phone и Windows Store с общим кодом).

В процессе работы всегда помните о популярной поговорке: «Тестируй на ранних этапах и делай это часто». Вряд ли вы слышали более значимую мантру разработки ПО, и она особенно верна в разработке игр. Но я хотел бы немного переиначить ее: «Тестируй на ранних этапах на устройствах и делай это часто». Независимо от платформы вы обнаружите, что настоящие устройства могут функционировать несколько иначе, чем их эмуляторы.

Платформа

Если вы читаете этот журнал, то, вероятно, имеете представление об экосистеме Windows. Я лишь кратко расскажу, что поддерживает Unity в этой экосистеме. Вы можете вести разработку в расчете на Xbox 360, Xbox ONE, Windows Phone 8/8.1, Windows 8/8.1 (приложения Windows Store) и настольные компьютеры. В бесплатной версии Unity можно выбрать любую из этих платформ, кроме Xbox. Вы увидите, что Xbox перечисляется в вариантах сборки, но не сможете ничего скомпилировать под него, если только вы не являетесь участником программы ID для Xbox ONE. В случае Xbox 360 вы должны зарегистрироваться через уполномоченного издателя. Если вы работаете над чем-то сногсшибательным, пожалуйста, ознакомьтесь с программой ID по ссылке xbox.com/Developers/id. В Windows Phone и Windows Store процессы сборки очень похожи.

Помните, что Windows Phone и Windows Store предлагают следующие варианты сборки: Windows Phone 8 через Silverlight, Windows Phone 8.1 через Silverlight или Windows Runtime (WinRT), Windows 8, Windows 8.1, универсальные приложения, рассчитанные на Windows Phone 8.1 и Windows 8.1.

Разработка для Windows

Выполнить сборку из Unity на самом деле довольно легко. Для локального тестирования просто откройте диалог сборки (File | Build Settings), щелкните Build и выберите папку для вывода. Вариант Build and Run запустит вашу игру после компиляции либо на подключенном смартфоне, либо в вашей локальной системе — в зависимости от того, что именно вы выбрали. Это базовый уровень. После успешной сборки будет открыта выбранная вами папка либо с исполняемым файлом, либо с решением Visual Studio. Ошибки будут выводиться в консольном окне, поэтому всегда лучше заранее открывать его через меню. Если у вас не открыто консольное окно, вам придется все время посматривать на самую нижнюю строку состояния в окне Editor и обращать внимание на сообщения с красным текстом.

Для всех вариантов сборки Unity выполняет сборку с помощью так называемого игрока (player) и поддерживает игроков всех других платформ, упомянутых ранее. Создавая сборку своей игры, вам понадобится добавить в сборку каждую нужную вам сцену. Чтобы загрузить различные сцены в вашей игре (кроме первой, которая загружается по умолчанию), используйте Application.LoadLevel, который принимает либо имя сцены, например Application.LoadLevel(«Level1»), либо индекс вида Application.LoadLevel(2). Я не любитель указывать индексы, потому что, как вы увидите, порядок сцен может запросто меняться.

Каждый уровень, который вы хотите загружать в коде, должен быть добавлен в сборку. В диалоге Build settings вы включаете любые сцены кнопкой Add Current или перетаскиванием файлов сцены на диалог сборки. Здесь вы можете переупорядочить их (что, опять же, делает загрузку сцен по индексу опасной). Вы можете разрешить или запретить использование этих сцен для любой сборки, помечая или снимая флажки рядом с ними. Как показано на рис. 1, нужно выполнить следующие операции.

  1. Добавить сцены в сборку.
  2. Убедиться, что нужные сцены отмечены. Я часто отмечаю тестовую сцену для включения в локальную сборку и сбрасываю ее флажок в финальной сборке.
  3. Выбрать платформу, под которую вы хотите скомпилировать игру.
  4. Щелкнуть Switch platform, чтобы Unity подготовила ваши ресурсы для выбранной платформы и включила специфичные для платформы константы препроцессора, такие как UNITY_METRO, UNITY_IPHONE, UNITY_WEBPLAYER и т. д.
  5. Скомпилировать свою игру в пакет, специфичный для платформы.

Рис. 1. Добавление сцен в сборку

Для настольной Windows Автономная (настольная) сборка предлагается по умолчанию при открытии Unity. При такой сборке Unity использует Mono для компиляции сборок (assemblies) и пакетов вашей игры вместе с ядром исполняющей среды. Вы получаете исполняемый файл и папку, в которую пакуется все. Эта сборка (build) предельно прямолинейна.

Для Windows Store и Windows Phone А здесь начинается самое интересное. При экспорте в Windows Store и Windows Phone можно добиться весьма впечатляющей интеграции с платформой. Вы можете использовать активную плитку (live tile), чтобы завлекать пользователей вернуться в вашу игру, отправлять текстовое сообщение, применять настройку геозон (geofencing) и др. Главное, что нужно отметить, — интегрировать функциональность, специфичную для платформы, в вашу игру сравнительно легко.

Процесс сборки слегка отличается от сборки для настольной системы, хотя вы по-прежнему можете воспользоваться Build and Run из диалога и довольно быстро получить рабочее приложение Windows Store или Windows Phone для тестирования.

Чтобы понять, где специфичный для платформы код важен для вашей Unity-игры, посмотрите, как Unity компилирует ваш код. Код, выполняемый в Unity Editor, компилируется лицензированной версией Mono. Это означает, что вы не можете обращаться к WinRT (Windows Store/Windows Phone 8.1) API, например использовать GeoLocation, пока игра выполняется в Editor, поскольку специфические WinRT-методы отсутствуют в Mono. Аналогично в Mono есть свои средства, которых нет в Windows Runtime, такие как Hashtable и доступ к файлам через System.IO в традиционной .NET. Многие виды функциональности в Mono и Windows Runtime перекрываются, но у них другие API.

Когда вы компилируете свой проект для Windows Store, Unity использует Microsoft .NET Framework для компиляции игровых сборок. По умолчанию для компиляции сборок применяется .NET Core, чем, по сути, и является WinRT .NET. Вам просто нужен способ сообщить Unity компилировать ваш код, специфичный для платформы, только при компиляции для этой конкретной платформы.

Есть два способа использования кода, специфичного для платформы. (Существует и третий, называемый мостовым [bridge], который связывает операции между кодом Unity и решения Visual Studio, но он применяется гораздо реже и поэтому здесь не рассматривается.) Первый способ — подключение плагина. Вы можете написать свой плагин, что весьма тривиально, или скачать подходящий из нескольких хороших источников. На момент написания этой статьи плагины от prime31.com для Windows Store и Windows Phone были бесплатными. Практически все основные издатели, применяющие Unity, используют плагины в своих игровых проектах. Скачивайте их, пока можно.

Использование специфичного для платформы кода

Через плагины Модель плагинов в Unity использует две версии библиотеки с одинаковыми сигнатурами методов. Одна из них является, по сути, заглушкой, компилируемой под .NET Framework 3.5 и помещаемой в Assets\Plugins\YourPlugin.dll. Эту версию Unity применяет, когда ваша игра выполняется в Editor. Другая компилируется под целевую платформу, скажем, Windows Store или Windows Phone и пакуется в вашу игру, когда вы осуществляете сборку из Unity (рис. 2).

Рис. 2. Сборка с кодом, специфичным для платформы, через плагин

Специфичная для платформы библиотека помещается в Assets\Plugins\

\YourPlugin.dll (платформой может быть Windows 8.x, iOS, Windows Phone 8 и т. д.). Если у вас есть причина создать свою библиотеку вместо того, чтобы скачивать одну из множества доступных, загляните по ссылке bit.ly/1EuLV1N — там есть базовые инструкции на этот счет. Основное отличие в плагинах (помимо API платформы, конечно) заключается в том, куда вы помещаете специфичную для платформы DLL. Места размещения плагинов можно узнать по ссылке bit.ly/1v2ml1m.

Применение одного из плагинов с prime31 для установки активной плитки — дело простое: достаточно подключить код с рис. 3 к любому GameObject в вашей сцене. SettingsPane и класс Tiles — плагины, содержащие функциональность для реализации специфичного для платформы кода.

Рис. 3. Код плагина от prime31

Через директивы препроцессора Вы также можете использовать директивы препроцессора, чтобы включать или отключать компиляцию подставляемого кода. Это распространенный способ при разделении кода между платформами и разнообразными технологиями, и он тоже часто применяется в Unity-играх. С помощью этого способа вы просто указываете директиву в коде класса. Эти директивы можно использовать в разных целях. Помните важное правило: разделяйте свой код по платформам с помощью директив препроцессора, специфичных для платформы; одни директивы становятся активными в момент переключения платформ в настройках сборки в Unity (вроде UNITY_METRO), другие — только при компиляции вне Editor (NETFX_CORE), а третьи могут быть доступны постоянно (например, проверка версии Unity, UNITY_4_5 и другие директивы, определенные вами).

Я покажу пример использования кода, специфичного для платформы Windows. Если нужен доступ к GeoLocation в Windows Runtime, этот код можно включить прямо в класс, производный от MonoBehavior (рис. 4), и этот класс назначить любому GameObject. Поскольку этот код скомпилирован в Editor с помощью Mono, он потерпит неудачу без его обертывания в подходящую директиву препроцессора. Нам нужно сообщить Unity, что этот код компилируется только вне Editor. Возможно, вас интересует, в чем разница между NETFX_CORE и UNITY_METRO. Первая директива — это параметр компиляции, используемый, только когда сборки вашей игры компилируются для Windows Runtime. Вторая применяется при выборе Windows Store в качестве платформы в настройках сборки в Unity. Она может быть активна в вашем коде на C#, UnityScript или Boo. Лично я предпочитаю директиву NETFX_CORE для обертывания своего WinRT-кода, а не UNITY_METRO, так как NETFX_CORE доступна лишь при экспорте/сборке, а UNITY_METRO активна в Editor, как только вы переключаете платформы в Build Settings. То есть код может выполняться и в Editor, что вызовет проблему, если он содержит специфичный для платформы API. Вы можете добавить в ту же строку другие директивы, такие как && !UNITY_EDITOR, но я предпочитаю обходиться NETFX_CORE.

Рис. 4. Использование Geolocation

Сборки

Unity будет компилировать ваш код для Windows Store и Windows Phone 8.1, используя .NET Framework под Windows Runtime. Она не использует Silverlight for Windows Phone 8.1. Однако код для Windows Phone 8 компилируется как HH — Silverlight-пакет для Windows Phone, как и следовало бы ожидать.

Unity будет компилировать ваши игровые сборки (assemblies) и создаст решение Visual Studio, который вы в свою очередь будете использовать для определения финальной сборки (build). Иначе говоря, кроме случая сборки под настольную систему, вам понадобится выполняться финальную компиляцию в Visual Studio, прежде чем отправлять свою игру в Windows Store или Windows Phone Store. Решение, генерируемое Visual Studio, содержит двоичные файлы Unity, упакованные с вашими игровыми сборками и базовым хост-приложением на XAML/C# или C++. При каждой сборке из Unity единственное, что перезаписывается Unity, — ваша папка Data. Любой пользовательский код или другие изменения, внесенные в решение Visual Studio, не перезаписываются при последующих сборках из Unity.

Сборки для Windows Store и универсальных приложений

Я рассмотрю варианты сборки для Windows Store (рис. 5). Типы сборки для Windows Store в Unity включают Windows 8, Windows 8.1, Windows Phone 8.1 и универсальные решения, которые содержат проекты для Windows Phone 8.1 и Windows 8.1, а также общий проект, как показано на рис. 6. Кроме того, обратите внимание на флажок Unity C# Projects на рис. 5. Это невероятно полезная функция, и я настоятельно советую пользоваться ею. Она позволит создать решение Visual Studio с дополнительными проектами, содержащими ваш Unity-код (рис. 7). Вы можете изменять код в этих проектах до определенной степени, и при компиляции Visual Studio будет запрашивать Unity заново обработать ваши игровые сборки, не выполняя заново полной сборки из Unity. То есть вы можете редактировать свой Unity-код в конечном решении Visual Studio, что крайне важно для отладки кода, специфичного для конкретной платформы. Это означает, что вам не придется заново компилировать решение из Unity при каждом изменении в коде.

Рис. 5. Сборка для Windows Store

Рис. 6. Универсальное приложение с общим проектом

Рис. 7. Дополнительные проекты

Когда Unity генерирует ваше решение Visual Studio, стоит обратить внимание на несколько моментов. Прежде всего ваш проект Windows Store по умолчанию будет рассчитан на компиляцию под аппаратную платформу ARM, а не x86 (по крайней мере, на момент написания этой статьи). Это создает путаницу, когда пытаешься скомпилировать и запустить свой проект, и тут вдруг получаешь ошибку с сообщением, что система не относится к ARM. Хотя я советую создавать сборки как для ARM, так и для x86, в целях локального тестирования нужно выбрать x86, чтобы избежать этой ошибки с ARM. Кроме того, на момент написания статьи в Unity не было 64-разрядных игроков для Windows Store или Windows Phone. Если у вас есть одно из немногих ARM-устройств с Windows 8, такое как Surface 1 или Surface 2 (RT не относится к Pro; Pro является системой на базе x86), тогда выбирайте ARM и выполняйте удаленное развертывание и отладку. Однако большинство разработчиков использует для локального тестирования ПК на основе x86.


Далее вы заметите, что Build Configuration Type включает варианты Debug, Master и Release. Это контрастирует с типичными .NET-приложениями, где возможны лишь варианты Debug и Release. Сборка Debug самая медленная. Она содержит отладочную информацию и поддерживает Unity Profiler — средство профилирования в версии Pro, применяемое для оптимизации игр. Сборка Release полностью оптимизируется, но тоже поддерживает Unity Profiler. Сборка Master — это то, что вы передаете в каждый магазин. Это оптимизированная, готовая к работе версия, которая не поддерживает Unity Profiler. При первом тестировании игры я выбрал сборку Master, чтобы получить реальное представление о скорости работы игры на своем устройстве.

В случае Windows Phone два основных варианта: Windows Phone 8 или Windows Phone 8.1. Приложения Windows Phone 8 будут нормально работать на устройстве с Windows Phone 8.1, хотя в Windows Phone 8.1 стратегия совместного использования кода, специфичного для платформ, гораздо эффективнее, поскольку вы можете ориентироваться на универсальные приложения, которые делят около 90% API с приложениями Windows Store. Однако в случае типичной игры это совместное использование кода может оказаться не особо полезным, если только вы не пишете специфичный для платформ код.

Как только у вас будет решение в Visual Studio, запакуйте его и отправьте в магазин, как и любое другое приложение Windows Phone или Windows Store. У вас обязательно должна быть учетная запись разработчика для Windows Store; вы лишь раз платите за нее и потом пользуетесь всю жизнь. Процесс передачи неоднократно описывался в различных материалах, но краткие обзоры можно посмотреть в «Publish to the Windows Store» (bit.ly/Za0Jlx)), «Publish to the Windows Phone Store» (bit.ly/1rdDCwR) и «Why and How to Port Your Unity Game to Windows and Windows Phone» (bit.ly/1ElzrcL).

Параметры игрока Я обсуждал базовый процесс сборки из Unity для Windows, но не рассмотрел, как задать значки, начальные экраны (splash screens), имя приложения и другие необходимые элементы. Все это можно найти в Player Settings, которые загружаются с экрана Build Settings и позволяют конфигурировать все основные параметры для приложений Windows Store и Windows Phone, как показано на рис. 8. Вы можете указать здесь начальный экран, имя приложения, издателя, параметры компиляции, значки, возможности приложения, например сервисы позиционирования, и некоторые другие параметры. Эти параметры публикуются в вашем решении Visual Studio, как только вы впервые скомпилируете решение из Unity.

Рис. 8. Параметры игрока для Windows Store

Значки приложения Unity предоставляет вашему приложению некоторые значки по умолчанию, чтобы оно могло быть скомпилировано в Visual Studio. Но вы должны сменить эти значки по умолчанию, иначе вы рискуете не пройти сертификацию. Unity заметно упрощает просмотр того, какие изображения вы можете задать в проекте, но вы должны свериться с документами на сертификацию для каждой платформы, чтобы определить, какие именно изображения обязательны. Вы должны проверить Visual Assets в файле Package.appxmanifest в Visual Studio (для Windows Store и универсальных приложений), так как Unity могла установить некоторые изображения по умолчанию, которые вы не заменили своими, — их нужно удалить.

Как минимум, в приложении Windows Store должны быть эмблема магазина 50×50, квадратная эмблема 150×150, квадратная эмблема 30×30 и начальный экран 620×300, как описано в Windows Dev Center (bit.ly/1vIJsue). В приложениях Windows Phone 8 обязательны изображение списка приложения (app list image) и изображение для плиток по умолчанию малого и среднего размеров, используемых на экране Start, как описано в Windows Dev Center (bit.ly/1oKo8Ro). Приложения Windows Phone 8.1 требуют тех же изображений. Магазины (которые, по слухам, унифицируются с Windows 10) могут запросить некоторые другие изображения в процессе передачи, например экранные снимки.

Если вы намерены предоставить только одно изображение для плиток на экране Start, то должны передать изображение, масштабируемое до 240% в случае приложений Windows Phone Store и до 180% в случае приложений Windows Store, как поясняется в Windows Dev Center (bit.ly/1nzWber).

Кстати, некоторое время назад я написал простенькую утилиту, которая помогает генерировать изображения для приложений Windows Store. Вы найдете ее по ссылке bit.ly/ImageProcessor.

Перекомпиляция и перезапись Вспомните, что Unity перезаписывает только вашу папку Data в вашем проекте Visual Studio (рис. 9). Это обоюдоострый меч. Вы можете задать начальный экран, значки и прочее в любой момент в Unity (и я советую делать именно так), но, если вы уже сгенерировали свое решение Visual Studio, файл Package.appxmanifest, содержащий эти настройки, не будут перезаписан при следующей компиляции из Unity. Вам придется вручную задавать визуальные ресурсы, возможности и многое другое в своем решении Visual Studio в файле Package.appxmanifest или создавать новую папку и искать разницу в структуре папки с помощью утилит вроде BeyondCompare, или удалять решение Visual Studio, если в нем нет вашего кода, и давать возможность Unity заново сгенерировать его. Обычно я выбираю третий вариант, потому что я храню все свои сконфигурированные изображения значков и начального экрана в Unity. Мне остается лишь не забыть перенести собственные активные плитки в решение Visual Studio. Если вы разрабатываете под Windows Phone 8 (но не 8.1), значок в любом случае должен быть установлен в Visual Studio; этот случай один из немногих, которые не обрабатываются из Unity.

Рис. 9. Папка Data в проекте Visual Studio

Only thing Unity overwrites Unity перезаписывает только эту папку

Заключение

Процесс сборки чрезвычайно прост. Настройте параметры сборки, щелкните кнопку Build, откройте решение и разверните его. Я показал варианты оптимизации вашей сборки через плагины и директивы препроцессора. Поскольку вы можете вызывать специфичный для платформы код вне Mono, вы получаете кое-какие дополнительные возможности. Не забудьте проверить на prime31.com плагины для Unity, которые в настоящее время бесплатны для платформы Windows. Они позволяют легко интегрировать функционал платформы всего несколькими строками кода. Также заглядывайте на Channel 9 за новыми обучающими материалами по Unity (рассчитывайте на десятиминутные видеоролики) и в мой блог на Channel 9 за многими советами по компиляции игр для разных платформ.

Дополнительные ресурсы

  • Блог Адама на канале Channel 9 (bit.ly/AdamChannel9)
  • «Microsoft Virtual Academy: Developing 2D & 3D Games with Unity for Windows» (bit.ly/FreeUnityTraining)
  • Ресурсы Unity (unity3d.com/learn)

Адам Тьюлипер (Adam Tuliper) — старший идеолог по технологиям в Microsoft; живет в солнечной Южной Калифорнии. Разработчик инди-игр, один из администраторов Orange County Unity Meetup и автор на pluralsight.com. Скоро в его семье появится третий ребенок, так что связывайтесь с ним, пока у него еще есть свободные минуты, по адресу adamt@microsoft.com или через twitter.com/AdamTuliper.

Выражаю благодарность за рецензирование статьи экспертам Unity Томасу Дирванаускасу (Tomas Dirvanauskas), Игнасу Зиберкасу (Ignas Ziberkas) и Тоутвидасу Цилису (Tautvydas Žilys).

Создание игры на Unity небольшой командой: особенности технологии

Разработчик детского мобильного паззла Fold the Adventure Алексей Галкин написал для ЦП колонку о том, на что следует обратить внимание при разработке мобильной игры на платформе Unity: как выбрать правильные ассеты из Asset Store, в каком сервисе хранить данные о прогрессе пользователей и где взять звуки для игры.

Начало

Чтобы сделать хорошую игру, нужна хорошая идея. Но даже имея идею, создать на её основе достойную игру совсем непросто. Помимо банальной удачи, существует огромное множество вещей, с которыми приходится иметь дело. Бесконечное число решений необходимо принять в весьма скромное время. Ведь время — это деньги, а бюджет проекта имеет тенденцию исчезать до того, как сделано хоть что-то достойное демонстрации (не говоря уже о выпуске).

Эта история о том, как наша небольшая инди-команда создавала игру Fold the Adventure («Сложи приключение») на основе оригинальной идеи. Поскольку игра выпущена, мы можем перевести дух и окинуть взглядом три месяца, потраченные на разработку. Несмотря на наличие многолетнего опыта в игровой индустрии, создание Fold the Adventure заставило нас изрядно попотеть ввиду непредсказуемых поворотов событий и весьма ограниченных ресурсов. Добро пожаловать в наше приключение!

Выбор движка: Unity

Сказать по правде, движок нам выбирать не пришлось. Мы сразу взяли Unity и не пожалели об этом. Нашей первостепенной задачей было создание сравнительно небольшой игры и запуск её на максимальном количестве платформ. При этом хотелось избежать возни с программированием на Objective C и Java. С Unity нам это удалось. И хотя всё было не так просто и гладко, как предполагалось, движком мы остались довольны.

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

Вот некоторые из рекомендаций, которые мы выработали после довольно продолжительного использования Unity (не ограниченного созданием Fold the Adventure):

  • Необходимо с самого начала потратить время на изучение базовой архитектуры Unity, включая игровые объекты, скриптуемые объекты, сцены, префабы, ассеты, методы-события и порядок их вызова, сопрограммы, измерение времени, обработку ввода, сериализацию. Unity может показаться лёгким в использовании движком, но без понимания его основ можно провести бесконечные часы за отладкой и рефакторингом.
  • С самого начала сформулируйте правила структуризации, а также именования ассетов и игровых объектов. Даже небольшая игра имеет тенденцию превращаться в хаос без должной организации. Существует много статей, посвящённых данному вопросу. Можно также ориентироваться на проекты, публикуемые разработчиками в Unity Assets Store.
  • Программируйте как можно меньше. Вместо этого активно используйте WYSIWYG (What You See Is What You Get — свойство прикладных программ, в которых содержание отображается в процессе редактирования и выглядит максимально близко похожим на конечную продукцию — ред.) возможности редактора Unity. Благодаря лёгкой расширяемости, редактор Unity позволяет превратить разрабатываемую игру в удобный конструктор, которым смогут пользоваться даже те, кто не умеет программировать. А это существенно упрощает и ускоряет создание игрового контента.
  • Избегайте использования привычных практик, которые плохо сочетаются с идеологией Unity. Какой бы заманчивой не была возможность размещения всех объектов игры в рамках одной сцены или сохранение параметров игровой механики в XML-файлах, подобный подход существенно осложнит жизнь на более поздних этапах разработки.
  • Будьте аккуратны и внимательны при использовании систем управления версиями. Unity имеет тенденцию непредсказуемо менять файлы. Например, внесение изменений в префаб влечёт за собой модификацию всех файлов сцен, в которых он используется, но только после их последующего сохранения. Всегда используйте force text в качестве режима сериализации ассетов и внимательно следите за файлами, которые заливаете на сервер, чтобы не уничтожить результат работы коллег.
  • Тестируйте игру на максимально возможном количестве платформ. При этом не забывайте, что настройки можно определить для каждой из платформ в отдельности. Без подобного тестирования, вы, как и мы, можете столкнуться с тем, что ваша игра ведёт себя по-разному в web player-е под Windows и OS X.
Цукерберг рекомендует:  Плагины - Я избавился от лишних видео на страницах =)

Ассеты: создавать или покупать

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

Если ассеты для игры могут быть сделаны силами команды — одной проблемой меньше (cкорее всего). Но есть ещё фаза прототипирования, а для неё также нужны ассеты, которые с большой долей вероятности будут выброшены. Поэтому практически каждой команде требуются ассеты, которые она не может или не хочет делать. Вопрос в том, где их взять.

Первым и самым очевидным ответом для нас, как для Unity разработчиков, был Unity Assets Store. Какой бы заманчивой ни казалась эта возможность, она влечёт за собой и ряд сложностей:

  • Ассеты в Unity Assets Store доступны всем без исключения. Однако никто не хочет, чтобы их игра была похожа на другие. По крайней мере, мы этого очень не хотели.
  • Практически невозможно купить один пак ассетов, который бы удовлетворил все нужды проекта, и возникает проблема стилистической совместимости. Для Fold the Adventure мы купили несколько паков, из которых использовали меньше половины.
  • Несмотря на то, что общее количество ассетов в Unity Assets Store довольно велико, найти среди них что-то подходящее для конкретных нужд бывает весьма непросто. При этом качество зачастую оставляет желать лучшего. Мы потратили часы на поиски, при этом не всегда имея возможность оценить качество пака без его покупки.

Вторым вариантом был аутсорсинг ассетов. Безусловно, этот путь отнимает больше времени и денег, чем просто покупка чего-то из Unity Assets Store. Однако, при удачном раскладе, получаемые ассеты уникальны и более качественны.

Существовала также возможность покупки ассетов из источников помимо Unity Assets Store. Однако здесь возникала проблема совместимости с Unity, и мы решили воздержаться от таких экспериментов.

Когда мы принимали решение о том, какие ассеты делать самостоятельно, а какие нет, мы начали с их категоризации. Как оказалось, ассетов, которые были уникальны для нашей игры и выделяли её среди прочих, было сравнительно немного. Их мы решили сделать своими силами, прибегая к помощи аутсорса там, где это было возможно. Остальное было куплено в Unity Assets Store.

Вот несколько простых правил, к которым мы пришли в ходе поиска и покупки ассетов в Unity Assets Store

  • Чтобы избежать стилистических расхождений, желательно покупать ассеты одного типа у одного автора. Это не мешает купить модели у одной студии, а партиклы у другой, но при этом нужно следить за совместимостью стилей.

  • Избегайте использования ассетов в том виде, в котором они были куплены. Достаточно внести небольшие изменения (например, немного перерисовать текстуры, реструкурировать партиклы) или использовать ассеты нестандартным образом.
  • Если вы планируете выпуск игры на мобильных платформах, убедитесь, что покупаемые ассеты оптимизированы под них.

Музыка и звуки заслуживают отдельного внимания. Они редко создаются инди-командой самостоятельно (если у вас есть композитор, то вам либо очень повезло, либо вы уже не инди). К счастью, существует большое количество сервисов, поставляющих royalty-free музыку и звуки, включая Unity Assets Store. И это совсем недорого.

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

Где хранить данные: Parse

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

В поисках лучшего решения мы обнаружили Parse. Parse — это кросс-платформенный сервис BaaS (Backend as a Service — платформа типа «бэкенд как сервис», предоставляет облачную серверную инфраструктуру для всех типов приложений — ред.), который позволяет приложению сохранять данные в облаке, поддерживает авторизацию пользователей, серверные функции, push-оповещения и аналитику. Это не исчерпывающий список функциональности, но он даёт общее представление о том, что есть Parse.

Одной из причин, по которым мы выбрали Parsе, была его интеграция с Facebook (первая версия Fold the Adventure создавалась именно для Facebook). И, несмотря на то, что позднее фокус разработки был смещён на мобильные платформы, мы продолжили использовать Parse.

Ещё одной приятной особенностью Parse является его ценовая политика. Поначалу она кажется немного странной, но, после размышлений и расчётов, оказывается более чем удачной. По существу, вы ограничены количеством запросов в секунду. Хорошая новость в том, что 30 запросов в секунду даются бесплатно. Может показаться, что это совсем немного, но на деле этого достаточно для поддержки тысяч пользователей. При условии, что вы используете эти запросы разумно.

В Parse вы делаете всё через запросы. Для получения и изменения полей данных, создания отношения между таблицами, формирования выборки — для всего нужен запрос. На первый взгляд, количество запросов должно быть довольно большим, но, на деле, большую часть элементарных операций можно объединить в один запрос с помощью метода ParseObject.SaveAllAsync. Кроме того, Parse выбросит исключение, если предел запросов в секунду превышен. Но ничего не мешает вам подождать некоторое время и выполнить запрос повторно. И хотя игра в таком случае может показаться пользователю «подвисшей», эта проблема легко обходится с помощью внесения небольших изменений в пользовательский интерфейс и логику сохранения и чтения данных.

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

Использование Parse в рамках Unity не сопряжено с особыми трудностями и хорошо документировано. По сути, вам необходимо скачать Parse SDK, настроить вашу игру на сервере Parse и в проекте Unity, а также немного попрограммировать. Один очевидный нюанс: вы не сможете использовать Parse, если устройство, на которое установлена ваша игра, не имеет доступа к интернету.

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

Стационарные платформы против мобильных: компромиссы

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

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

Вот несколько рекомендаций:

  • Если вы планируете запуск на мобильных платформах и используете тени, то ограничьтесь режимом forward lighting. Несмотря на запекание освещения и сокращения числа объектов, отбрасывающих тени, мы не смогли добиться приемлемой производительности в режиме deferred lighting. Возможно, мы недостаточно старались, но форумы Unity, по большей части, солидарны с нами в этом вопросе.
  • Минимизируйте количество draw call-ов. Большое количество полигонов в моделях не скажется так сильно на производительности, как дополнительные draw call-ы. Мы планировали большую оптимизацию, направленную на сокращение количества draw call-ов, чтобы лучше поддерживать старые модели мобильных устройств, но, к сожалению, не смогли сделать её в отведённые жёсткие сроки.
  • Не злоупотребляйте текстурными выборками в шейдерах. Это может привести к существенному падению производительности. В нашей игре мы были вынуждены использовать несколько специальных шейдеров вместо одного универсального — именно по этой причине.

Помимо различий в производительности и аппаратных ограничений, существует ещё одно важное отличие между стационарными и мобильными платформами. И это отличие — режим ввода. Игра, созданная для управления с помощью клавиатуры и мыши, плохо переносится на мультитач и акселерометр. Мы убедились в этом на своём горьком опыте. Прежде всего, в Unity разделена обработка мыши и мультитача. А потому было необходимо создать систему, унифицирующую этот аспект. Для этих целей мы использовали систему ввода из состава NGUI, которая, после небольших доработок, показала себя весьма хорошо. Она также позволила нам решить проблему распределения ввода между пользовательским интерфейсом и игровым управлением, которая доставляла нам некоторые неприятности на тот момент.

Пользовательский интерфейс в целом потребовал ряда модификаций для корректной поддержки мобильных устройств. Например, вместо прокручивания колёсика мыши и удерживания кнопок пришлось ввести мультитач-жесты. Некоторые из модификаций можно было потенциально упросить с помощью готовых решений из Unity Assets Store. Но в нашем случае это был простой pinch, а потому мы решили написать его за час с нуля, вместо того, чтобы тратить дни на подключение и отладку системы, которая «делает всё и даже больше».

Наибольшее количество проблем вызвало внутриигровое управление. Мы начали с традиционного набора ASWD + мышь для управления персонажем и камерой, планируя использовать экранный джойстик на мобильных устройствах. Но всё получилось не совсем так, как мы ожидали: игра стала практически неуправляемой. Нам пришлось срочно менять внутриигровое управление, при этом внося изменения даже в игровую механику. Методом проб и ошибок мы остановились на point-n-click управлении, которое на мобильных устройствах воспринимается интуитивно.

Локализация: чем проще, тем лучше

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

Локализовывать необходимо всё, что имеет отношение к человеческому языку. То есть тексты, речь, надписи на текстурах — всё это должно быть локализовано. Такой процесс очень быстро может стать весьма трудоёмким и дорогим. Поэтому крайне важно свести количество локализуемого контента к минимуму.

Надписей на текстурах лучше избегать, и использовать, например, текстовые поля NGUI. Если в игре необходима речь, то, скорее всего, потребуются и субтитры, поскольку локализация речи не только дорогое удовольствие, но ещё и требовательное с точки зрения места, занимаемого игрой.

Но минимизация локализуемого контента — это только начало. Следующий этап — подготовка самой игры к локализации. Плохая новость состоит в том, что Unity (на момент написания данной статьи) не имеет встроенных механизмов для этих целей. И хотя существует целый ряд специализированных решений в Unity Assets Store (например, l2 Localization), мы решили использовать систему локализации, идущую в составе NGUI.

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

Мы использовали Google Docs Sheets для хранения файла локализации. В таком варианте он легко доступен всем членам команды, может быть быстро обновлён и скачен в CSV формате. Кроме того, мы открыли доступ к этому файлу ряду друзей, говорящих на других языках. Таким образом мы получили часть переводов бесплатно.

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

Заключение

После того, как все сделано, игру необходимо тщательно протестировать (стоит это делать и неоднократно в процессе разработки). Этим должно заниматься максимальное количество людей на максимальном количестве устройств. Ничто не портит хорошую игру так, как пропущенный баг. При этом нужно обязательно слушать жалобы игроков. Поскольку эти жалобы превратятся в неудовлетворённых клиентов сразу после выхода игры на рынок. А этого точно никто не хочет.

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

Эта история, вместе с выпущенной игрой, завершает три месяца тяжёлой и кропотливой работ. И, несмотря на то, что мы столкнулись с множеством сложностей, процесс разработки Fold the Adventure был весьма захватывающим. Надеемся, что игра, которую мы создали, а также полученный нами опыт сделают мир немного лучше. Удачи в создании ваших игр!

(Можем дать ключи на игру в App Store — запросы пишите в комментариях.)

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Вот такие статьи я люблю. Так как я сам индигейдевелопер.

Всем привет, спасибо, что заинтересовались тем, как мы делали Fold the Adventure! :)

@Sergey Kritskiy: Здравствуйте!
Дело вовсе не в том, где лучше картинка/саппорт/цена.
На момент выбора движка — мы знали какую игру бы будем делать, что нам для это понадобится, какие ассеты, интерфейс, сеть, база данных и т.д. Честно скажу в сторону UE4 мы даже не смотрели зная, что в нём за 2 месяца мы не соберём игру ни при каких обстоятельствах, а на юнити мы это сделали. Однако мы не догматичны в своих утверждениях и если инди команда делает например крутой атмосферный проект, то UE4 со своим адским набором графических фич «из коробки» — будет идеальным решением для этой команды. Производство игры на UE4 — к сожалению все еще «по факту» стоит дороже чем производство игры на Unity, что в свою очередь для инди команды играет большую роль. Итого по совокупности факторов — «По нашему мнению, Unity — это лучший игровой движок для инди-разработки в настоящий момент».

@Anton Azarov: Здравствуйте!
Вы знаете, есть такой замечательный проект WoT, так вот на мой взгляд, надеюсь вы со мной будете солидарны, этому проекту стоило взять сразу UE или CryEngine и заткнуть за пояс по графике все ФПСММО на рынке. Но как мы знаем они взяли BigWorld и даже с ним заткнули за пояс все ФПСММО на рынке, но не по графике. Я думаю WoT не пожалели в итоге, что взяли BigWorld, также и мы не пожалели, что взяли Unity и нам удалось закончить проект в супер короткие сроки и запустить его в AppStore.

Если у читателей будут еще вопросы — пишите, постараюсь на них ответить :)

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

Работа unity разработчик, вакансии unity разработчик

1-20 из 19162 результатов

Получать новые вакансии на почту

Unity-разработчик

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity C# разработчик

110 000 — 130 000 руб.


Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity/С# Разработчик

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity 3D-разработчик

100 000 — 130 000 руб.

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Гейм- разработчик Unity

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Разработчик Unity 3D (C#)

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Разработчик Unity 3D

Another Sports Game (ИП Насонова Дарья Петровна)

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity разработчик

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Разработчик Unity 3D

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity-разработчик

Полезная ли была для вас вакансия?

Пожалуйста, опишите проблему

Unity разработчик

Опыт разработки на Unity не меньше года Приветствуется : Опыт разработки с аналогичными инструментами (UE4) Опыт разработки .

Unity

Уроки по использованию Unity — использующей C# платформы для разработки игр от Microcoft.

Интеграция своей игры в Steam: работа с лобби в Steamworks.NET

Steam предоставляет инструменты для интеграции своих сервисов в игры с помощью Steamworks. Рассказываем о том, как создать игровое лобби и работать с ним.

Практические советы по использованию профайлера в Unity

Unity профайлер даёт конкретные данные о производительности игры и облегчает процесс её оптимизации. В этой статье научимся с ним работать.

Вакансии, где нужны знания Unity

Оптимизируем работу с физикой в Unity

В данном материале будет рассмотрено несколько полезных приёмов использования физики в играх и примеры их практического применения. Предполагается, что у читателя уже есть опыт разработки на Unity. Как быстро написать…

Как быстро написать игру для Android на Unity

В своё время Flappy Bird, не имея сложной механики и графики, стала хитом. Сегодня мы расскажем, как всего за 10 минут написать свой вариант игры на Unity под Android.

События и курсы

Создаём простое VR-приложение под Android с помощью Unity

Виртуальная реальность — это новое захватывающее направление в разработке приложений. Разберём, как создать VR-приложение с обзором в 360 градусов для Android. Навыки программирования не требуются.

Курс «Создание 2D-игры под Android»

Курс по созданию 2D-игры на Unity 5, в ходе которого вы познакомитесь с Unity, созданием скриптов, управляющих элементов и публикацией игры в Google Play.

Создание Minecraft на Unity3D. Часть вторая. Генерация мира

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

Как разрабатывать приложения смешанной реальности для Microsoft HoloLens: взаимодействие с окружающим пространством

В предыдущей части мы создали нашу первую голограмму и научились с ней взаимодействовать. Теперь мы соединим нашу голограмму с реальным миром.

Создание Minecraft на Unity3D. Часть первая. Создаем базовый куб с текстурой

Мы начинаем серию уроков, ориентированную на то, чтобы научить вас создавать простую Minecraft-подобную игру, а также изучить различные аспекты движка Unity3D. Так как это вводный урок, алгоритмы и структура объектов, представленные…

Программистов ищут в веб-студии (PHP, вёрстка), а также начинающих командах по разработке игр (Unity), платформы в сфере проектного менеджмента (UI), аналитической платформы для анализа финансовых рынков (С#)

Программист Unity3D и C++, Москва Работа в офисе Нужен опыт Регулярная зарплата (100–150k) Игровая Механика — небольшая группа разработчиков игр на PC и мобильные платформы, существующая более 1,5 лет. В декабре 2015 года…

Самый простой способ сделать игру на Unity 5

Видеокурс о создании игры на Unity 5 от самых основ до сборки под Universal Windows Platform.

Save the Penguin — рассказ о первом опыте разработки под Android

Программирование велось в Unity в свободное время и заняла около месяца. Идея для игры пришла сама собой: таймкиллер в портретной ориентации с возможностью игры одним пальцем.

Руководство по моделированию 2D водной поверхности

Рассказывает Alex Rose В этой статье мы рассмотрим создание динамической 2D воды с простейшей физикой. Мы будем использовать рендер линий, мешей, триггеры и частицы. Конечный результат с волнами и брызгами…

Создание ландшафта на Unity за 24 часа

Рассказывает Натаниэль Долдерсам, голландский разработчик игр Скриншоты и ссылки на скачивание демо-ландшафта расположены по этой ссылке. Введение В этой статье я расскажу о том, как мы с Питером за 24 часа…

Пишем Сапёр на Unity. Обработка конца игры

В заключительной части нашей серии мы будем доводить уже почти готовую игру до ума. К концу этого урока ваш Сапёр будет вполне играбельным: игрок сможет и проиграть уровень, и выиграть…

Пишем Сапёр на Unity. Взаимодействие

Мы продолжаем нашу серию уроков по написанию Сапёра на Unity. В этой части мы реализуем взаимодействие между клетками, сделаем так, чтобы они подсвечивались при наведении мыши, а также добавим возможность…

Пишем сапёр на Unity. Настройка

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

Как выполнять сохранение и загрузку игры в Unity

Совсем недавно мы опубликовали серию уроков (1 часть, 2 часть, 3 часть, 4 часть) по созданию простой игры, используя очень распространенный игровой движок — Unity. В этой статье мы покажем…

Пишем арканоид на Unity. Добавление звуков и новых уровней

Мы продолжаем цикл статей о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком. В каждой из статей мы затронем один из аспектов…

Пишем арканоид на Unity. Поведение блоков, префабы и дизайн уровней

В этой статье мы продолжаем серию уроков о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком. В каждой из статей мы затронем…

Пишем арканоид на Unity. Механика мяча и платформы

Итак, мы продолжаем цикл статей о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком. В каждой из статей мы затронем один из…

Пишем арканоид на Unity. Настройка проекта

Мы начинаем цикл статей о написании простой игры на Unity — классического арканоида. Использовать будем только 2D инструменты, предоставляемые нам движком, который, ко всему прочему, совсем недавно стал бесплатным. В…

Методы оптимизации при разработке в Unity 3D

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

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих