Unity — Вступлю в команду, которая разрабатывает игры на Unity


Содержание

2D игра на Unity. Подробное руководство. Часть 1

Настройка среды в Unity

Начнем с самого простого: загрузки и настройки Unity.

Загрузите последнюю версию с официального сайта или торрента и запустите установочный файл.

Для редактирования кода в Unity (4.0.1 и выше) служит редактор MonoDevelop. Если вы работаете в Windows, вы можете (и я вам советую) использовать альтернативый редактор Visual Studio 2013 Desktop (C#) для Windows, после чего в настройках Unity измените редактор по умолчанию на Visual Studio.

Полезно знать: невозможно использовать отладчик Visual Studio 2013 Express с Unity. Вы должны иметь Pro версию Visual Studio и купить UnityVS плагин. С версией Express, вы будете иметь лучший редактор кода, но отсутствие отладчика сведет на нет все его достоинства.

Mac OS X

MonoDevelop 4 — существенно лучше, чем старый MonoDevelop 2 в предыдущих версиях Unity. Он, конечно, далек от совершенства, но ничего лучшего под на Mac не придумано.

На каком языке программировать в Unity?

Unity позволяет кодировать на трех языках: JavaScript, C# и Boo. Рекомендую использовать C# — он более мощный и проще.

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

Вот несколько ссылок, которые могут быть вам полезными:

  • Изучение интерфейса Unitys : основа всех основ. Не зная интерфейса, вы не сможете создавать игры в Unity 3D
  • Создание сцены в Unity : изучение этого раздела поможет вам создать свою собственную сцену
Первая сцена. Создаем новый проект.

Выберите меню File , а затем создаqnt новый проект. Не выбирайте нивакой стандартный пакет на первое время. Вы можете повторно импортировать их позже, если вы захотите, просто поначалу они будут просто сбивать вас с толку.

Выберите 2D настройки. Как и прежде, вы можете изменить этот флаг в настройках проекта позже.

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

Разметка и панели Unity

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

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

Чтобы держать все под рукой, советуем создать папки во вкладке Project (Проект). Эти папки будут созданы в папке Assets вашего проекта.

Внимание: папка Assets – это место, где хранится все, что вы добавляете во вкладке Project. Она может быть невидимой в Unity, в зависимости от выбранной разметки вкладки (одна или две колонки), но вы сможете увидеть ее, открыв приложение для экспорта файлов.

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

Ассеты проекта

В вашей панели Project, вы можете найти различные типы ассетов:

Префабы

Многоразовые игровые объекты (например: пули, враги, бонусы).

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

Сцены

Сцена содержит игровой уровень или меню.

В отличие от других объектов, создаваемых в панели «Проект», сцены создаются в меню «Файл». Если вы хотите создать сцену, нажмите на кнопку «Новая сцена» в подменю и не забудьте потом сохранить ее в папку Scenes.

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

Звуки

Тут все предельно просто. Увидите, если захотите раскидать музыку по разным папкам.

Scripts

Весь код находится здесь. Мы используем эту папку в качестве эквивалента корневой папке в C# проекте.

Textures

Спрайты и изображения вашей игры. В 2D проекте вы можете переименовать эту папку в «Sprites».

Это неважно для 2D проекта, но, оставив название Textures (Текстуры), вы дадите возможность Unity автоматизировать некоторые задачи. Если вы хотите узнать подробную информацию по этой теме, вы можете прочитать об этом здесь , или здесь .

Заметка о папке Resources : если вы уже работали с Unity, вы знает, что Resources – полезная и уникальная папка. Она позволяет загрузить в скрипт объект или файл (с помощью статичного класса Resources ). Она понадобится нам в самом конце (в главе, посвященной меню). Проще говоря, пока мы не будем ее добавлять.

Наша первая игровая сцена

Панель Hierarchy (Иерархия) содержит все объекты, которые доступны в сцене. Это то, чем вы манипулируете, когда начинаете игру с помощью кнопки «Play».

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

Как вы можете видеть здесь, у нас здесь 3 потомка для объекта Level .

Пустые объекты

В Unity можно создать пустой объект и использовать его в качестве «папки» для других игровых объектов. Это упростит структуру вашей сцены.

Убедитесь, что все они имеют координаты (0, 0, 0) и тогда вы сможете легко их найти! Пустые объекты никак не используют свои координаты, но они влияют на относительные координаты их потомков. Мы не будем говорить об этой теме в этом уроке, давайте просто обнулим координаты ныших пустых объектов.

Заполнение сцены

По умолчанию, новая сцена создается с объектом Main Camera (Главная камера). Перетащите ее на сцену.

Для начала создайте эти пустые объекты:

Scripts Мы добавим наши скрипты сюда. Мы используем этот объект, чтобы прикрепить сценарии, которые не связаны с объектом – например, скрипт гейм-менеджера. Render Здесь будет наша камера и источники света. Level

В Level создайте 3 пустых объекта:

  • 0 — Background
  • 1 — Middleground
  • 2 — Foreground

Сохраните сцену в папке Scenes . Назовите ее как угодно, например Stage1 . Вот, что у нас получилось:

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

Мы только что создали базовую структуру нашей игры. На следующем этапе мы начнем делать забавные вещи: добавим на сцену фон и кое-что еще!

Добавляем фон в сцену

Наш первый фон будет статическим. Воспользуемся следующим изображением:

Импортируйте изображение в папку Textures (Текстуры). Просто скопируйте файл в нее, или перетащите его из проводника. Не беспокойтесь сейчас о настройках импорта.

Создайте в Unity новый игровой объект Sprite на сцене.

Что такое спрайт?

По сути, спрайт – это 2D-изображение, используемое в видео-игре. В данном случае это объект Unity для создания 2D-игр.

Добавляем текстуру спрайта

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

Вы должны нажать на маленький круглый значок справа от поля ввода, чтобы появилось Select Sprite (Выбрать спрайт) в Инспекторе

Мой спрайт не появляется в диалоговом окне! Убедитесь, что вы находитесь в вкдадке Assets диалогового окна «Select Sprite» (Выбрать спрайт). Если вы видите диалоговое окно пустым, — не пугайтечсь. Дело в том, что для некоторых установок Unity, даже со свежим новым 2D проектом изображения импортируются как «Текстура», а не «Спрайт». Чтобы это исправить, необходимо выбрать изображение на панели «Проект», и в «Инспекторе», изменить свойство «Текстура Type» имущество «Sprite»:

Итак, мы создали простой спрайт отображающий облака на небе. Давайте внесем изменения в сцену. В панели Hierarchy (Иерархия) выберите New Sprite . Переименуйте его в Background1 или что-то такое, что легко запомнить. Переименуйте его в Background1 или что-то такое, что легко запомнить. Затем переместите объект в нужное место: Level -> 0 — Background . Измените координаты на (0, 0, 0) .

Создайте копию фона и поместите его в (20, 0, 0) . Это должно отлично подойти к первой части.

Tip: Вы можете создать копию объекта с помощью клавиш cmd + D в OS X или ctrl + D Windows .

Слои со спрайтами

Следующее утверждение очевидно, но обладает некими неудобствами: мы отображения 2D мир. Это означает, что все изображения на одной и той же глубине, то есть 0 . И вы графический движок не знает, что отображать в первую очередь. Слои спрайтов позволяют нам обозначить, что находится спереди, а что сзади.

В Unity мы можем изменить «Z» наших элементов, что позволит нам работать со слоями. Это то, что мы делали в этом руководстве перед обновлением до Unity 5, но нам понравилась идея идея использовать слои со спрайтами. У вашего компонента Sprite Renderer есть поле с именем Sorting Layer с дефолтным значением. Если щелкнуть на нем, то вы увидите:

Давайте добавим несколько слоев под наши нужды (используйте кнопку + ):

Добавьте фоновый слой к вашему спрайту фона:

Настройка Order in Layer — это способ ограничить подслои. Спрайты с меньшим номером оказываются перед спрайтами с большими числами.

Слой Default нельзя удалить, так как это слой, используемый 3D-элементами. Вы можете иметь 3D-объекты в 2D игре, в частности, частицы рассматриваются как 3D-объекты Unity, так что они будут рендериться на этом слое.

Добавление элементов фона

Также известных как props. Эти элементы никак не влияют на геймплей, но позволяют усовершенствовать графику игры. Вот некоторые простые спрайты для летающих платформ:

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

Получение двух спрайтов из одного изображения

Выполняйте следующие действия:

  1. Импортируйте изображения в папку «Текстуры»
  2. Выберите спрайт Platform и перейдите к панели Инспектор
  3. Измените «Sprite Mode» на «Multiple»
  4. Нажмите на кнопку Sprite Editor (Редактор спрайта)

В новом окне ( Sprite Editor ) вы можете рисовать прямоугольники вокруг каждой платформы, чтобы разрезать текстуру на более мелкие части:

Кнопка Slice в левом верхнем углу позволит вам быстро и автоматически проделать эту утомительную работу:

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

В этом уроке проделаем эту операцию вручную. Назовите платформы platform1 и platform2 . Теперь, под файлом изображения, вы должны увидеть два спрайта отдельно:

Добавим их в сцену. Для этого мы будем выполнять те же действия что и для фона: создадим новый спрайт и выберим platform1 . Потом повторим эти действия для platform2 . Поместите их в объект 1 — Middleground . Убедитесь, что их позиция по оси Z равна нулю.

Prefabs (Префабы)

Сохранить эти платформы как префабы. Просто перетащите их в папку Prefabs :

Таким образом вы создадите Prefab , точно отвечающий оригинальному игровому объекту. Вы увидите, что игровой объект, который вы конвертировали в Prefab , представляет собой новый ряд кнопок прямо под его именем:

Заметка о кнопках «Prefab»: При последующей модификации игрового объекта, вы можете использовать кнопку «Apply», чтобы применить эти изменения к Prefab , или кнопку «Revert», чтобы отменить все изменения игрового объекта в свойстваъ Prefab . Кнопка «Select» переместит выбранные свойства в ассет Prefab в окне проекта (они будут выделены).

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

Теперь вы можете добавить больше платформ, меняющих свои координаты, размеры и плоскости (вы можете поместить их на заднем или переднем плане, просто установите координату Z для платформы на 0 ).

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

Прежде чем двигаться дальше, мы модифицируем наши слои, чтобы избежать каких-либо проблем с порядком их отображения. Для этого просто измените позицию игровых объектов по оси Z во вкладке Hierarchy (Иерархия) следующим образом:

Слой Позиционирование по оси Z
0 — Задний фон 10
1 — Средний фон 5
2 — передний фон

При переключении из 2D режима в 3D, в окне «Scene» (Сцена) вы будете четко видеть слои:

Кликнув на игровом объекте Main Camera , вы увидите, что флажок Projection установлен на Orthographic . Эта настройка позволяет камере визуализировать 2D игру без учета трехмерных свойств объектов. Имейте в виду, что даже если вы работаете с 2D объектами, Unity по-прежнему использует свой 3D движок для визуализации сцены. Рисунок выше это наглядно демонстрирует.

В следующем уроке:

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

Основы разработки игр на Unity

от 6 до 10 часов в неделю

понадобится для освоения

3 зачётных единицы

для зачета в своем вузе

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

О курсе

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

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

Для успешного прохождения курса, необходимо знание языка программирования C#, а также крайне желателен хотя бы базовый уровень английского.

Формат

В состав курса входят видеолекции, видеопрезентации, интерактивные формы обучения в формате видеоконференций. Длительность курса составляет 10 недель. Трудоемкость курса – 3 зачетные единицы. Средняя недельная нагрузка на обучающегося – 10 часов.

Информационные ресурсы

Для изучения языка C#

Для изучения языка Unity:

Требования

Для освоение курса необходимо обладать следующими знаниями, умениями и навыками:

  • ЗНАНИЯ:
    • на уровне представлений:
      • основы создания приложения в Unity;
      • инструментальные средства Unity;
      • основные методы языка C#;
  • УМЕНИЯ:
    • теоретические:
      • механизм использования сторонних скриптов для собственных приложений;
    • практические:
      • настраивать рабочую среду Unity;
      • создавать и использовать объекты prefabs;
  • НАВЫКИ:
    • организовывать взаимодействие объектов игрового мира.

Программа курса

Тема 1. Введение в разработку игр

Основы разработки игр. Обзор редактора Unity. Проекты, сделанные с помощью Unity. Создание игр в режиме 2D и 3D. Создание игр без навыка в программировании.

Тема 2. Работа в редакторе Unity

Установка Unity. Интерфейс Unity. Настройка рабочего пространства. Работа с ассетами. Примитивные модели.

Тема 3. GameObjects. Физика. Скриптинг

Игровые объекты GameObjects. Шаблоны игр от Unity. Создание 2D игры за 10 минут. Физика в Unity 2D. Скриптинг.

Тема 4. Начало создания 2D игры — Space Attack

Создание фона для игры. Космический корабль. Написание скрипта. Управление игровым объектом. Рефакторинг кода.

Тема 5. Экзамен и практика

Тема 6. Работа с лазером


Настройка лазера. Взаимодействие с объектами. Уничтожение объекта. Пустой трансформ. Контроллер на сцене. Скрипт движения. Ускорение.

Тема 7. Объект Enemy

Поведение Enemy. Уничтожение объекта. Попадание через коллизию. Поведение объектов при взрыве. Уклонение от нападений.

Тема 8. Создание пользовательского интерфейса

Знакомство с Unity UI. Установка UI Manager. Отображение количества очков. Окно перезапуска игры. Рефакторинг кода.

Тема 9. Сборка игры

Добавление аудио. Обработка ошибок. Сборка игры. Запуск на устройствах.

Тема 10. Экзамен и практика

Результаты обучения

  • Знание на уровне представлений алгоритмов, методов и средств обработки информации, применяемых при анализе научно-технической информации, отечественного и зарубежного опыта по тематике исследования.
  • Знание на уровне представлений основ объектно-ориентированного программирования, синтаксиса языка программирования C#.
  • Знание на уровне воспроизведения инструментальных средств разработки, доступных у платформы Unity.
  • Знание на уровне воспроизведения назначений и основных свойств стандартных элементов Unity.
  • Умения теоретические собирать эмпирический материал, опираясь на современные источники, осуществлять сбор, анализ научно-технической информации, отечественного и зарубежного опыта по тематике исследования.
  • Умения практические реализовывать базовые алгоритмические конструкции на языке программирования C#.
  • Владение навыками самостоятельного проведения библиографической работы с привлечением современных электронных технологий.
  • Владение навыками работы с интегрированной средой разработки, которая позволяет реализовывать разработку проекта.

Формируемые компетенции

09.03.02 Информационные системы и технологи

  • способность использовать архитектурные и детализированные решения при проектировании систем; проводить выбор исходных данных для проектирования информационных систем, проводить сборку информационной системы из готовых компонентов, адаптировать приложения к изменяющимся условиям функционирования (ПК-2);
  • способность использовать архитектурные и детализированные решения при проектировании систем; проводить предпроектное обследование (инжиниринг) объекта проектирования, системный анализ предметной области, их взаимосвязей, проводить выбор исходных данных для проектирования информационных систем (ПК-4);
  • способность проводить выбор исходных данных для проектирования информационных систем (ПК-12);
  • способность применять математические методы для решения практических задач (ОК-10).

09.04.02 Информационные системы и технологии

  • способностью осуществлять сбор, анализ научно-технической информации, отечественного и зарубежного опыта по тематике исследования (ПК-7);
  • умение проводить разработку и исследование методик анализа, синтеза, оптимизации и прогнозирования качества процессов функционирования информационных систем и технологий (ПК-9);
  • способность воспринимать математические, естественнонаучные, социально-экономические и профессиональные знания, умением самостоятельно приобретать, развивать и применять их для решения нестандартных задач, в том числе в новой или незнакомой среде и в междисциплинарном контексте (ОПК-1);
  • способность анализировать и оценивать уровни своих компетенций в сочетании со способностью и готовностью к саморегулированию дальнейшего образования и профессиональной мобильности (ОПК-3).

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.

Создайте мир безграничных возможностей

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

Познакомьтесь с нашими решениями для игр

Консоли и ПК
Мобильные игры
Instant Games
AR- и VR-игры

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

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

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

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

«Игры для мессенджеров, интерактивная реклама, веб-игры. Unity — это решение, которого мы все ждали».

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

Создавайте

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

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

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

Unity — Вступлю в команду, которая разрабатывает игры на Unity

Движок Unity является самым популярным сторонним программным обеспечением для разработки игр среди разработчиков по всему миру. Команды и студии всех уровней от AAA до инди используют Unity, и доля разработчиков и художников, опирающихся на Unity как на основной инструмент разработки, растет всё время.

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

Получите самые последние новости и показатели по Unity

Что было сделано с помощью Unity?

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

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

Cuphead

Разработчик: Studio MDHR

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

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

Monument Valley 2

Разработчик: ustwo Games

Игра Monument Valley 2 полностью построена на 3D-ассетах, но благодаря системе параллельного проецирования объекты кажутся двумерными игрокам.

Студия создала новый набор инструментов, позволивший им быстрее итерировать в Unity и использовать visual scripting sequence, не воссоздавая вновь несколько слоев. Одним из наборов инструментов, использованных командой, было решение Unity для 2D.

Rick and Morty: Virtual Rick-ality

После создания своей флагманской игры Job Simulator, удостоенной награды Unity’s Best VR Game 2020, студия Owlchemy телепортировала знаменитых Рика и Морти в виртуальную реальность.

Этот их первая смелая попытка по превращению 2D-мультфильмов в интерактивные 3D-вселенные. Игрок появляется в игре как клон Морти и, исследуя гараж Рика, испытывает на себе все безумства из популярного мультсериала.

Успех игры обеспечен Unity и возможностью создания многоплатформенных VR-игр при использовании инструментов Unity для VR.

Ins >Разработчик: Playdead

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

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

Ori and the Blind Forest

Разработчик: Moon Studios

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

Помимо множества других наград, полученных за оригинальное аудио и художественные достижения, игра была с восторгом принята на Made With Unity Awards в 2015, когда была удостоена награды “Best 2D visuals”.

Hearthstone

Разработчик: Blizzard Entertainment

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

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

Cities: Skylines

Разработчик: Colossal Order

Cities: Skylines — это современный взгляд на классический симулятор города. Игра основана на игровых элементах, подчеркивающих радости и трудности созидания и поддержания жизни реального города, расширяя при этом устоявшиеся каноны градостроительных симуляторов.

Команда из Colossal Order обратилась к Unity из-за гибкости этого движка и мощных возможностей. Для игроков нет ограничений, они могут размещать сооружения и есть инструменты для любой работы и любой цели. Более того, игроки могут привносить в игровой мир собственные объекты.

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

Если вы хотите узнать больше о прекрасных играх, созданных с помощью Unity, будь то 2D, 3D, VR на консоли, настольном ПК или мобильном устройстве, вы всегда можете обратиться к следующим ресурсам:

Движок Unity – особенности, преимущества и недостатки

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

Что представляет собой Unity?

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

Чем хорош Unity?

В первую очередь, как мы уже упоминали, движок Unity3D дает возможность разрабатывать игры, не требуя для этого каких-то особых знаний. Здесь используется компонентно-ориентированный подход, в рамках которого разработчик создает объекты (например, главного героя) и к ним добавляет различные компоненты (например, визуальное отображение персонажа и способы управления им). Благодаря удобному Drag & Drop интерфейсу и функциональному графическому редактору движок позволяет рисовать карты и расставлять объекты в реальном времени и сразу же тестировать получившийся результат.

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

Третья сильная сторона Unity 3D – поддержка огромного количества платформ, технологий, API. Созданные на движке игры можно легко портировать между ОС Windows, Linux, OS X, Android, iOS, на консоли семейств PlayStation, Xbox, Nintendo, на VR- и AR-устройства. Unity поддерживает DirectX и OpenGL, работает со всеми современными эффектами рендеринга, включая новейшую технологию трассировки лучей в реальном времени.

Физика твердых тел, ragdoll и тканей, система Level of Detail, коллизии между объектами, сложные анимации – все это можно реализовать силами движка. Стереотипное мнение о том, что движок пригоден только для небольших инди-игр и неспособен выдавать красивую картинку, давно уже не актуально: достаточно посмотреть технодемо ADAM, The Blacksmith и Book of the Dead от создателей среды Unity, чтобы убедиться в ее выдающихся способностях.

Наконец, Unity доступен бесплатно, что открывает перед независимыми разработчиками дверь в игровую индустрию. Конечно, существуют ограничения: бесплатная версия движка демонстрирует лого Unity перед запуском игры, а проект, созданный с ее помощью, не должен приносить разработчику больше $100 тысяч в год. Впрочем, тарифы на подписку не опустошат кошельки даже начинающей команды: Про-версия стоит $125 в месяц, что не так уж много в сравнении с другими движками, причем базовая версия содержит ровно тот же функционал, что и профессиональная.

Чем плох Unity?

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

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

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

Кому стоит использовать Unity (в первую очередь)?

Исходя из вышеописанного, движок идеально подходит для начинающих разработчиков, которым мало возможностей более простых инструментов, вроде RPG Maker, и которые, в то же время, не хотят тратиться на более дорогие и продвинутые движки. Unity позволяет быстро создать объекты, расставить и связать их, создать нехитрую сцену, задействовать собственный контент и содержимое магазина ассетов. Так как движок имеет огромную аудиторию пользователей, найти решение любой проблемы не составит труда – комьюнити с радостью поможет начинающему игроделу, официальные и пользовательские блоги и обучающие курсы (в том числе на русском языке) дадут все необходимые знания.

Большие студии также найдут в движке свои преимущества. Его возможности движка позволяют создавать масштабные игры близкие к ААА-классу. За примерами далеко ходить не нужно: Pillars of Eternity, Firewatch, Inside, Superhot – все эти громкие проекты созданы на Unity. Будь то дорогой сюжетно-ориентированный проект или многопользовательская браузерная игра на Unity3D, разработчики в любом случае получат мощный и гибкий инструментарий для создания максимально качественного продукта.


10 лучших игр на Unity

1. Rust

Популярный симулятор выживания с крафтингом, строительством, прокачкой, сражениями и прочими атрибутами жанра.

2. Pillars of Eternity

Изометрическая партийная CRPG «старой школы» от студии Obsidian, посвященная приключениям героев в фэнтезийном мире, поглощенном сверхъестественной напастью.

3. Ori and the Blind Forest

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

4. 7 Days to Die

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

5. Endless Legend

Фэнтезийная 4X-стратегия, которая предлагает игроку завоевать далекую планету, используя все возможные способы – от дипломатии до военной мощи.

6. Firewatch

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

7. Ins >

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

8. Kerbal Space Program

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

9. Subnautica

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

10. Sunless Sea

Мрачная roguelike-игра, выполненная во вселенной, которая совмещает в себе шарм Викторианской эпохи и мистическую атмосферу лавкрафтовских мифов.

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 3d?

собственную игру в жанре horror
Насколько мне, кроме как быть программистом, нужно быть художником и дизайнером?

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

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

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

Unreal vs Unity или какое «U» выбрать

Всем доброго оборота земли вокруг своей оси в вашей широте и долготе дней. Сей опус будет полезен “Сомневающимся” и поможет пролить немного излучения звезды по имени Солнце на коварную маркетинговую кампанию самых популярных игровых движков. Я занимаюсь разработкой игр уже больше 10 лет, поэтому нескромно могу выразить свое ЛИЧНОЕ мнение о всех достоинствах и недостатках. Добро пожаловать ниже…

Итак, начнем немного с истории. Unreal Engine — движок созданный профессиональной командой разработчиков игр серии Unreal Tournament в 1998 году для создания одноименной игры, а Unity3d в 2005 году профессиональной командой разработчиков, но отнюдь не игр. Целью Unity было создание движка нового поколения, который существенно должен был понизить порог вхождения для новичков в разработке игр и максимально упростить портирование готовых игр на различные платформы. Во главе угла стояла простота использования. Юнити стал по настоящему первым “Народным движком”. Я могу вспомнить ещё несколько популярных на то время, но они все погибли. В то дикое время под каждую игру писали свой собственный велосипед, потому что до Юнити получить готовый движок без огромного количества денег(десятки и даже сотни тысяч долларов) на лицензирование просто не было возможности.

Unity сразу обрел огромную базу фанатов и разработчиков за счет своей простоты и удобства, а Unreal в это время мог оперировать только обученными профессионалами с большим опытом. Порог вхождения в Unreal неприлично высок, чтобы начать программировать игры на нём, вам нужно знать С++ и тонну мелких деталей работы движка, а это не один год обучения на программиста и изучения самого движка. В юнити любой человек не обделенный логикой и азами Pascal сможет написать простенькую игру за неделю. В Unreal на подобное уйдет в 10 раз больше времени и это неоспоримый Факт.

Epic Games (разработчики Unreal) знают свои слабые и сильные стороны, поэтому выпуск Blue Print не заставил себя долго ждать и действительно понизил порог вхождения в UE, но всего лишь для “прототипирования”. Серьезные проекты по прежнему “крайне рекомендуется” писать на С++ со всеми последствиями. На рынке сейчас “на глаз” разработчиков на Unreal 1 к 10 или даже к 20 по сравнению с Unity.

Отсюда следует основной минус UE — Разработка под него на порядок Дороже и Сложнее. Специалистов мало, по факту хороших спецов учат только “уже состоявшиеся спецы” из самой Epic или других крупных контор, которые годами разрабатывают игры на Unreal. Если вы маленькая команда или Indie разработчик, то ваш предел в играх на Unreal это уже готовые мультиплеер FPS стрелялки, по тому что по факту UE был и остается движком для игры Unreal Tournament. Вся логика движка заточена под шутеры от первого/третьего лица по сети. На этом историю закончим, потому что писать об этом я могу часами, далее рассмотрим конкретные примеры работы в каждом движке.

Работа с редактором

Unreal Editor — это просто издевательство над художниками и всеми кто так или иначе связан с созданием арта, звука, анимаций, текстур и прочего. Его основной и гигантский минус — не связанность с файловой системой вашего PC, то есть нельзя просто перетащить файл из папки в папку или даже “О Б-ЖЕ!!” в само окно редактора. Теперь любой файл 3д модели или текстуры вам придется Импортировать с помощью КНОПКИ и никак иначе. Если вам надо немного поменять модель, то вам придется Удалять Руками Импортнутые объекты и Заново их Импортировать столько раз, сколько вы захотите улучшать ваш файл. Реимпорт там конечно “существует”, но он работает настолько нестабильно, что у меня теряется дар речи. Например Vertex Color никогда не реимпортится заново, все созданные клипы анимаций затираются при реимпорте и т д. Если вы не отстрадали своё в этом редакторе огромное количество времени, то готовьтесь к тому что 80% времени вы будете заниматься импортом и реимпортом, а если объектов в вашей локации 100-200-300….

Просто знайте, нельзя нажать кнопку экспорт в вашем любимом 3д пакете и получить всё в том же виде в UE, вам придется каждый объект заботливо расставлять руками, про материалы и прочее естественно забудьте тоже, потому что UE кроме Diffuse+spec+Ao+metallic импортировать ничего не будет, не говоря уже про второй UV канал на назначенной текстуре или тайлинг и прочие подробности. Я страдал достаточно для того чтобы написать свой собственный экспортер из 3ds max Vray в Unreal и потратил на это несколько месяцев лишь бы не мучаться с редактором Unreal. Это позволило переводить сцены с 1000 объектов в Unreal за каких то 30 минут компьютерного времени, но даже это не помогло мне :)

Если вы хотите делать мобильные игры, то приготовьтесь к Аду, каждый ребут редактора отключает Mobile Preview режим и вам придется вручную каждый раз включать его заново и ждать пока перекомпилируется весь рендер движок под мобильные устройства, а это занимает несколько минут. Умножьте это на поистине Эпичную стабильность редактора, который может крашится каждые 10 минут, запускается заново несколько минут на топовом железе…

Новые Фичи приходят в движок в таком состоянии, в котором разобраться в них без бутылки зачастую непредставляется возможным, потому что набор галочек и консольных команд для работоспособности “фичи” переходит все разумные границы. Хотите крутую ткань? Волосы? Плоские отражения не пост эффектом ? Будьте добры прочитайте всю документацию 5 раз, и через двое суток с красными глазами вы узнаете, что фича не доступна, пока вы не нажмете галочку в меню о котором даже не слышали ни вы, ни весь чат разработчиков UE в телеграме.

После этого Unity Editor покажется вам МАННОЙ НЕБЕСНОЙ. Это абсолютно понятный, простой в использовании механизм, полностью контролируемый и безусловно его киллер фичей является то, что писать под него плагины можно на самом Unity, а вот написать простейший скрипт в UE редакторе по расстановке объектов — только на С++ используя исходники движка. Отсюда и нереальное количество плагинов для юнити и единицы полезных для UE.

Но при этом UE до сих пор является лидером рынка по Графену, потому что им заведуют всё теже Профессиональные Разработчики Игр, которые двигают индустрию вперед. В Epic Games проблема решается просто — Нужен качественный персонаж? Берем специально обученного человека и даем ему месяц на задрачивание этого персонажа и так с каждым более менее сложным игровым объектом. Студии по разработки на УЕ насчитывает ГИГАНТСКОЕ количество людей, которые работают в редакторе со своими отдельными объектами.

Epic очень богатая контора и она может себе позволить многое: бесплатный движок (в первую очередь для того чтобы хоть как то выращивать новых специалистов для их внутренних потребностей в разработке игр), провальные игры и щедрость с ними связанную (PARAGON) в отличии от Unity, которая перебивается продажами самого движка и подписок, если бы денег было больше, то отставание в графическом плане не было бы настолько заметным, но даже сейчас 2020 версия уже не слишком сильно уступает UE.

Вывод простой, если вы богатый успешный разработчик с большим опытом и уверенностью в себе и вы любите красивую 3д графику и мультиплеер — ваш выбор UE, во всех остальных случаях — Unity.

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

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

Продукты и технологии:
Unity, C#, Microsoft .NET Framework, Mono

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

  • интерфейс Unity;
  • сцены, игровые объекты и компоненты;
  • написание кода;
  • проекты кода, генерируемые Unity.

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

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

Что такое Unity

Unity — это ядро и инфраструктура, образующие систему для разработки двух- и трехмерных игр или сцен в приложениях (и даже 2.5D). Я упоминаю игры и приложения потому, что встречал не только игры, но и обучающие симуляторы, приложения экстренного реагирования (first-responder applications) и другие приложения, ориентированные на бизнес, которые разрабатывались с помощью Unity и должны были обеспечивать взаимодействие с двух- и трехмерным пространством. Unity позволяет оперировать не только кодом, но и визуальными компонентами с последующим их экспортом на любую распространенную мобильную платформу, а также делать много всего другого, причем бесплатно. (Существует и профессиональная версия, но она не бесплатна. Впрочем, даже бесплатная версия позволяет делать впечатляющие вещи.) Unity поддерживает все основные 3D-приложения, множество форматов звука и даже понимает формат .psd (Photoshop), поэтому вы можете просто закинуть файл .psd в проект на Unity. Unity разрешает импортировать и собирать ресурсы, писать код, взаимодействующий с вашими объектами, создавать или импортировать анимации для использования с продвинутой системой анимации и многое другое.

В Unity проделана потрясающая работа, благодаря которой обеспечивается кросс-платформенная поддержка.

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

Рис. 1. Платформы, поддерживаемые Unity

Вероятно, самая мощная часть Unity — это Unity Asset Store; пожалуй, лучшая электронная площадка для приобретения игровых ресурсов. Здесь вы найдете все необходимые компоненты для своих игр, такие как художественные решения, трехмерные модели, файлы анимаций для трехмерных моделей (см. контент Mixamo в магазине для более чем 10 000 движений), звуковые эффекты и полные треки, плагины (в том числе, инструментальный набор MultiPlatform, помогающий поддерживать несколько платформ), визуальные скриптовые системы вроде PlayMaker и Behave, продвинутые шейдеры, текстуры, эффекты на основе частиц и др. Интерфейс Unity полностью управляем скриптами и поддерживает интеграцию сторонних плагинов прямо в Unity GUI. Большинство профессиональных разработчиков игр (если не все) использует ряд пакетов из этого магазина ресурсов, и, если вы можете предложить нечто приличное, публикуйте его там.

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

И чем Unity не является

Я сомневаюсь, что нужно описывать все, чем Unity не является. Однако Unity по умолчанию не является системой, в которой проектируют двухмерные ресурсы и трехмерные модели (кроме террейнов). Вы можете вставить группу зомби в сцену и управлять ими, но создать самих зомби с помощью инструментария Unity, предлагаемого по умолчанию, нельзя. В этом смысле Unity не является инструментом создания ресурсов, подобным Autodesk Maya, 3DSMax, Blender или даже Adobe Photoshop. Однако существует минимум один сторонний плагин (ProBuilder) для моделирования трехмерных компонентов прямо в среде Unity; также имеются плагины для построения двухмерных миров, например 2D Terrain Editor, позволяющий создавать двухмерные тайловые среды (2D tiled environments). И еще вы можете проектировать террейны в Unity, используя его Terrain Tools, чтобы создавать потрясающие ландшафты с деревьями, травой, горами и т. д. Поэтому я вновь в сомнении: стоит ли очерчивать границы возможностей Unity.

Какова роль Microsoft? Microsoft и Unity тесно сотрудничают, чтобы обеспечить полную поддержку для всего стека платформ Microsoft. Unity поддерживает автономные исполняемые Windows-файлы, приложения Windows Phone, Windows Store, Xbox 360 и Xbox One.

Приступаем к работе

Скачайте самую новую версию Unity и приобретите себе двухкнопочную мышь с нажимаемым колесиком прокрутки. Бесплатная и профессиональная версия скачиваются как единый пакет, который потом лицензируется соответствующим образом. Изучить различия между этими версиями можно на странице unity3d.com/unity/licenses. Editor, который является основным интерфейсом Unity, выполняется в Windows (включая Surface Pro), Linux и OS X.

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

Архитектура и компиляция

Unity — это игровой движок, написанный на неуправляемом C++. Вы пишете код на C#, JavaScript (UnityScript) или Boo. Ваш код (не код движка Unity) выполняется в Mono или Microsoft .NET Framework и транслируется JIT-компилятором (кроме iOS, которая не поддерживает JIT-код, и для нее код компилируется Mono в неуправляемый код с использованием компиляции Ahead-of-Time [AOT]).

Unity позволяет тестировать вашу игру в IDE, не требуя никакого экспорта или сборки. Запуская код в Unity, вы используете Mono версии 3.5, API которого примерно на одном уровне совместим с .NET Framework 3.5/CLR 2.0.

Вы редактируете свой код в Unity, дважды щелкнув файл кода в представлении проекта. Это действие по умолчанию открывает кросс-платформенный редактор Mono­Develop. При желании можно сконфигурировать в качестве редактора Visual Studio.

Отладка осуществляется с помощью MonoDevelop или с использованием стороннего плагина для Visual Studio — UnityVS. Использовать Visual Studio в качестве отладчика без UnityVS нельзя, потому что при отладке игры вы отлаживаете не Unity.exe, а виртуальную среду в Unity, применяя программный отладчик, который выдает команды и выполняет операции.

Для отладки запустите MonoDevelop из Unity. В MonoDevelop есть плагин, который открывает обратное соединение с отладчиком Unity и выдает ему команды после того, как вы выбираете Debug | Attach to Process in MonoDevelop. С помощью UnityVS вы устанавливаете обратное соединение с отладчиком Visual Studio вместо Unity.

При первом открытии Unity вы увидите диалог проекта, показанный на рис. 2.

Рис. 2. Project Wizard в Unity

В диалоге проекта вы указываете имя и местонахождение своего проекта (1). Вы можете импортировать любые пакеты в проект (2), хотя отмечать все именно здесь не обязательно; список предоставляется только для удобства. Пакет можно импортировать и позже. Пакет — это файл .unitypackage, который содержит предварительно упакованные ресурсы (модели, код, сцены, плагины и все, что можно упаковать в Unity); эти ресурсы можно повторно использовать и распространять. Но не помечайте здесь что-то, если вы не знаете, что это такое; размер вашего проекта может увеличиться, причем весьма значительно. Наконец, вы можете выбрать 2D или 3D (3). Этот раскрывающийся список появился в Unity сравнительно недавно, поскольку до этого в Unity не было серьезного инструментария для разработки двухмерных игр. При выборе 3D настройки по умолчанию устанавливаются в пользу 3D-проекта — это типичное поведение Unity. Если вы выбираете 2D, Unity изменяет несколько вроде бы малых, но на деле очень важных деталей, о которых я расскажу в одной из следующих статей.

Этот список заполняется из файла .unitypackage в определенных местах вашей системы; Unity предоставляет большой выбор при установке. Все, что вы скачиваете из магазина ресурсов Unity, тоже поступает в виде файла .unitypackage и локально кешируется в вашей системе по пути C:\Users\ \AppData\Roaming\Unity\Asset Store. Как таковой, этот файл появится в списке, если он присутствует в вашей системе. Вы могли бы просто дважды щелкнуть любой файл .unitypackage, и он был бы импортирован в ваш проект.

Продолжая рассматривать интерфейс, я щелкну Create в диалоге с рис. 2, чтобы создать новый проект. Разметка окна Unity по умолчанию приведена на рис. 3.

Рис. 3. Окно Unity по умолчанию

Вот что мы видим.

  1. Project Все файлы в проекте. Для добавления файлов в проект их можно просто перетаскивать из Explorer в Unity.
  2. Scene Текущая открытая сцена.
  3. Hierarchy Все игровые объекты в сцене. Обратите внимание на термин GameObjects и раскрывающееся меню GameObjects.
  4. Inspector Компоненты (свойства) выбранного в сцене объекта.
  5. Toolbar Ближе к левому краю размещаются кнопки Pan, Move, Rotate, Scale, а в центре — Play, Pause, Advance Frame. Play почти мгновенно запускает игру без выполнения отдельных сборок. Pause приостанавливает игру, а Advance Frame обеспечивает покадровое выполнение, предоставляя вам очень жесткий отладочный контроль.
  6. Console Это окно может стать понятным не сразу, но в нем отображается вывод процесса компиляции, ошибок, предупреждений и т. д. Кроме того, в нем показываются отладочные сообщения из кода, например Debug.Log будет отображать свой вывод здесь.

Важно упомянуть о вкладке Game рядом с вкладкой Scene. Она становится активной, когда вы щелкаете Play и ваша игра начинает выполняться в этом окне. Это называется режимом игры (play mode) и создает вам игровую площадку для тестирования вашей игры; можно даже «на лету» вносить изменения в игру, переключаясь обратно на вкладку Scene. Но будьте осторожны. Пока подсвечивается кнопка Play, вы находитесь в режиме игры, и, если вы покидаете его, любые изменения, внесенные в режиме игры, будут потеряны. Я, как и почти все разработчики на Unity, с кем мне доводилось разговаривать, именно так теряли проделанную работу, поэтому советую сменить цвет Editor на такой, по которому было бы очевидно, когда вы находитесь в режиме игры. Это можно сделать через Edit | Preferences | Colors | Playmode tint.

Все, что выполняется в вашей игре, существует в сцене.

О сценах

Все, что выполняется в вашей игре, существует в сцене. Когда вы упаковываете игру для какой-то платформы, конечный продукт представляет собой одну или более сцен плюс любой добавленный вами код, специфичный для конкретной платформы. Количество сцен в проекте не ограниченно. Сцену можно рассматривать как уровень в игре, хотя в одном файле сцены может быть несколько уровней — достаточно перемещать игрока (камеру) в другие позиции сцены. Скачивая сторонние пакеты или даже примеры игр из магазина ресурсов, вы обычно должны найти файлы сцен, чтобы открыть их в своем проекте. Файл сцены содержит всевозможные метаданные о ресурсах, используемых в проекте для текущей сцены и ее свойств. Важно почаще сохранять сцену при разработке нажатием клавиш Ctrl+S, как и в любом другом инструментарии.

Как правило, Unity открывает последнюю сцену, с которой вы работали, хотя иногда, когда Unity открывает проект, создается новая пустая сцена, и вам придется искать сцену в Project Explorer. Новичков это сбивает с толку, но важно помнить об этом, если вы вдруг открыли свой последний проект и не можете понять, куда подевалась вся ваша работа! Расслабьтесь, вы найдете искомое в файле сцены, который вы сохранили в своем проекте. Вы можете искать все сцены в проекте, щелкнув значок, показанный на рис. 4, и выбрав в списке Scene.

Рис. 4. Фильтрация сцен в проекте

В сцене вы ничего не увидите без камеры и ничего не услышите без компонента Audio Listener, подключенного к какому-либо GameObject. Но заметьте, что в любой новой сцене Unity всегда создает камеру с подключенным к ней компонентом Audio Listener.

Структура проекта и импорт ресурсов

Проекты Unity не похожи на проекты Visual Studio. Вы не открываете файл проекта или даже решения, потому что таких файлов нет. Вы указываете Unity структуру папок и открываете папку как проект. Проекты содержат папки Assets, Library, ProjectSettings и Temp, но в интерфейсе появляется только папка Assets, что можно было заметить на рис. 4.

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

Папка Library — это локальный кеш для импортированных ресурсов; она содержит все метаданные для ресурсов. В папке ProjectSettings хранятся настройки, заданные вами в Edit | Project Settings. Папка Temp используется для временных файлов, создаваемых Mono и Unity в процессе сборки проекта.

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

Крайне важный GameObject

Практически все в вашей сцене является GameObject. Вспомните System.Object в .NET Framework. От него наследуют почти все типы. Та же концепция относится и к GameObject. Это базовый класс для всех объектов в сцене Unity. Все объекты, показанные на рис. 5 (и многие другие), наследуют от GameObject.

Рис. 5. Класс GameObject в Unity

Lights Источники освещения
3D Models 3D-модели
Sprites Спрайты
HUDs Игровые интерфейсы
Particle Systems Системы частиц
GameObject GameObject

GameObject довольно прост, так как он относится к окну Inspector. На рис. 6 видно, что к сцене был добавлен пустой GameObject; обратите внимание на его свойства в Inspector. У GameObject по умолчанию нет визуальных свойств, если не считать того, что при выделении этого объекта появляется виджет Unity. На этом этапе это фактически пустой объект.

Рис. 6. Простой GameObject

GameObject имеет свойства Name, Tag (аналог тега text, присваиваемого через FrameworkElement.Tag в XAML или тегу в Windows Forms), Layer и Transform (пожалуй, это свойство самое важное).

Свойство Transform определяет позицию, поворот и масштаб любого GameObject. Unity использует левостороннюю систему координат, в которой координаты на экране компьютера рассматриваются как X (по горизонтали), Y (по вертикали) и Z (глубина, т. е. входящие или исходящие из экрана).

В разработке игр весьма распространено использование векторов, о которых я подробнее расскажу в следующих статьях. А пока достаточно сказать, что Transform.Position и Transform.Scale являются объектами Vector3. Vector3 — это трехмерный вектор; иначе говоря, в нем не более трех точек: только X, Y и Z. Манипулируя этими тремя простыми значениями, вы можете задавать местонахождение объекта и даже перемещать его в направлении вектора.

Свойство Transform определяет позицию, поворот и масштаб любого GameObject.

Компоненты

Вы добавляете функциональность к объектам GameObject добавлением компонентов (объектов Component). Все, что вы добавляете, — это Component, и все они показываются в окне Inspector. Существуют компоненты MeshRender и SpriteRender, компоненты для звука и функционала камеры, компоненты, относящиеся к физике (коллайдеры [colliders] и твердые тела [rigidbodies]), системы частиц, системы поиска пути, сторонние пользовательские компоненты и др. Чтобы назначить код какому-то объекту вы используете скриптовый Component. Компоненты — это как раз то, что оживляет ваши GameObject добавлением функциональности подобно шаблону Decorator в разработке ПО, только их возможности гораздо интереснее.

Я присвою кое-какой код новому GameObject, в данном случае простому кубу, который можно создать через GameObject | Create Other | Cube. Я переименовал куб в Enemy, а затем создал еще один куб. Как видно на рис. 7, я сместил один куб на –15 единиц от другого, что можно сделать с помощью инструмента Move на панели инструментов или нажатием клавиши W после выделения объекта.

Рис. 7. Текущий проект с двумя кубами

Код — простой класс, который находит игрока и перемещает к нему своего владельца. Обычно операции перемещения осуществляются одним из двух способов: либо вы перемещаете объект в новую позицию на каждом кадре, изменяя его свойство Transform.Position, либо вы применяете к нему физический толчок, а в остальном полагаетесь на Unity.

Покадровые операции требуют несколько иного образа мышления, чем просто «переместить в эту точку». Для этого примера я намерен немного смещать объект на каждом кадре, чтобы иметь точный контроль над тем, куда он движется. Если вас не прельщает перспектива работы с каждым кадром, существуют библиотеки, выполняющие покадровые перемещения всего одним вызовом функции, например бесплатная библиотека iTween.

Первым делом я щелкаю правой кнопкой мыши в окне Project, чтобы создать новый скрипт на C# с именем EnemyAI. Для назначения этого скрипта объекту я просто перетаскиваю файл скрипта из представления проекта на объект в представлении Scene или Hierarchy, и этот код связывается с объектом. Остальное берет на себя Unity. Вот так просто.

На рис. 8 показан куб Enemy с назначенным ему скриптом.

Рис. 8. Enemy со связанным скриптом

Взгляните на код на рис. 9 и обратите внимание на открытую переменную. Если вы смотрите на код в Editor, то заметите, что моя открытая переменная появляется с параметром для переопределения значений по умолчанию в период выполнения. Это очень удобно. Вы можете менять значения по умолчанию в GUI для элементарных типов, а также можете предоставлять открытые переменные (но не свойства) многих других объектных типов. Если я перетаскиваю этот код на другой GameObject, создается совершенно отдельный экземпляр этого компонента кода. Это базовый пример, и его можно расширить, добавив, скажем, компонент RigidBody к этому объекту, но я не стану усложнять пример.

Рис. 9. Скрипт EnemyAI

В коде я могу получить ссылку на любой компонент, предоставляемый в редакторе. Кроме того, можно назначать скрипты для GameObject, каждый со своими методами Start и Update (и многими другими методами). Предполагая, что компоненту скрипта, содержащему этот код, требуется ссылка на класс EnemyAI (компонент), я могу просто запросить этот компонент:

После изменения кода в MonoDevelop или в своем любимом редакторе кода и последующего возврата в Unity вы обычно наблюдаете небольшую задержку. Это связано с тем, что Unity выполняет фоновую компиляцию вашего кода. Редактор кода (но не отладчик) можно сменить через Edit | Preferences | External Tools | External Script Editor. Любые проблемы при компиляции в самой нижней строке состояния на экране Unity Editor, так что посматривайте туда. Если вы попытаетесь запустить игру с ошибками в коде, Unity этого не позволит.

Написание кода

В предыдущем примере кода два метода: Start и Update; класс EnemyHealth наследует от базового класса MonoBehavior, что позволяет просто назначить этот класс объекту GameObject. В этом базовом классе богатая функциональность, и, как правило, вы чаще всего будете использовать несколько методов и свойств. Основными методами являются те, которые Unity будет вызывать, если они присутствуют в вашем классе. Таких методов немало — подробности см. по ссылке bit.ly/1jeA3UM. Несмотря на множество методов вы, как правило, используете лишь некоторые из них. Ниже перечислены наиболее распространенные методы, подлежащие реализации в ваших классах, производных от MonoBehavior.

Awake Этот метод вызывается один раз для каждого объекта при его первой инициализации. Другие компоненты могут быть еще не инициализированы, поэтому этот метод обычно используется для инициализации текущего GameObject. Для инициализации производного от MonoBehavior класса следует всегда использовать этот метод, а не его конструктор. И не пытайтесь запрашивать здесь другие объекты сцены, так как они могут быть еще не инициализированы.

Start Этот метод вызывается на первом кадре жизненного цикла объекта, но перед любыми методами Update. Он может показаться очень похожим на Awake, но в случае Start уже известно, что другие объекты инициализированы через Awake и существуют в вашей сцене, поэтому вы можете запрашивать другие объекты, например:

Update Этот метод вызывается в каждом кадре. И насколько же это часто, спросите вы? Ну, это полностью зависит от скорости вычислений. Поскольку нагрузка на вашу систему постоянно меняется при рендеринге разных вещей, каждую секунду частота кадров варьируется. Вы можете щелкнуть кнопку Stats на вкладке Game при переключении в игровой режим, чтобы видеть текущую частоту кадров (рис. 10).

Рис. 10. Получение статистики

FixedUpdate Этот метод вызывается фиксированное число раз в секунду независимо от частоты кадров. Поскольку Update вызывается варьируемое число раз в секунду и не синхронизируется с движком физики, обычно лучше всего использовать FixedUpdate, когда к объекту нужно приложить силу или какие-то другие действия, относящиеся к физике. По умолчанию FixedUpdate вызывается каждые 0,02 секунды, а значит, Unity выполняет вычисления физики каждые 0,02 секунды (этот интервал называется Fixed Timestep и может регулироваться разработчиком) — опять же независимо от частоты кадров.

Проекты кода, генерируемые Unity

Как только в вашем проекте появляется код, Unity создает один или более файлов проектов в вашей корневой папке (которая невидима в интерфейсе Unity). Это не двоичные файлы движка Unity, а проекты для Visual Studio или MonoDevelop, в которых вы будете редактировать и компилировать свой код. Unity может создавать очень много отдельных проектов, как показано на рис. 11, но каждый из них выполняет важную роль.

Рис. 11. Проекты, создаваемые Unity

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

  • Assembly-CSharp.csproj;
  • Assembly-CSharp-Editor.csproj;
  • Assembly-CSharp-firstpass.csproj.

Для каждого из этих проектов имеется проект-дубликат, созданный с добавлением «-vs» в его имя, например Assembly-CSharp-vs.csproj. Эти проекты используются, если вашим редактором кода является Visual Studio, и их можно добавлять в ваш проект, экспортированный из Unity, для отладки на специфической платформе в решении Visual Studio.

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

Теперь, когда вы увидели, какие проекты создаются, я исследую папки, инициирующие создание этих проектов, и покажу, каково их предназначение. Путь к каждой папке относителен корневой папке /Assets в представлении вашего проекта. Assets всегда является корневой папкой и содержит все файлы ресурсов. Например, Standard Assets — это на самом деле /Assets/Standard Assets. Процесс компиляции ваших скриптов выполняется в четыре этапа и генерирует сборки (assemblies). Объекты, скомпилированные на этапе 1, не видят объекты, компилируемые на этапе 2, так как на этот момент они еще не скомпилированы. Это важно понимать, когда вы смешиваете UnityScript и C# в одном проекте. Если вам нужно ссылаться на C#-класс из UnityScript, вы должны убедиться, что он компилируется на более раннем этапе.

Этап 1 охватывает скрипты периода выполнения в папках Standard Assets, Pro Standard Assets и Plug-ins, которые находятся в папке /Assets. На этом этапе создается проект Assembly-CSharp-firstpass.csproj.

Скрипты этапа 2 находятся в папках Standard Assets/Editor, Pro Standard Assets/Editor и Plug-ins/Editor. Последняя папка предназначена для скриптов, которые взаимодействуют с Unity Editor API для использования функциональности этапа разработки (считайте это аналогом плагина Visual Studio, расширяющего ее GUI, только выполняемого в Unity Editor). На этом этапе создается проект Assembly-CSharp-Editor-firstpass.csproj.

Этап 3 охватывает прочие скрипты вне папки Editor. На этом этапе создается проект Assembly-CSharp-Editor.csproj.

Этап 4 охватывает все остальные скрипты (находящиеся внутри любой другой папки Editor, например /Assets/Editor или /Assets/Foo/Editor). На этом этапе создается проект Assembly-CSharp.csproj.

Есть пара других, реже используемых папок, которые я здесь не рассматриваю, скажем, Resources. И остается вопрос, а какой компилятор применяется? Из .NET? Mono? Из .NET для Windows Runtime (WinRT)? Из .NET для Windows Phone Runtime? В табл. 1 перечислены компиляторы по умолчанию для разных случаев. Это важно знать, особенно в приложениях на основе WinRT, так как состав API для разных платформ варьируется.

Табл. 1. Компиляторы

Платформа Сборки игры, генерируемые Окончательная компиляция выполняется
Windows Phone 8 Mono Visual Studio/.NET
Windows Store .NET Visual Studio/.NET (WinRT)
Windows Standalone (.exe) Mono Unity генерирует .exe + библиотеки
Windows Phone 8.1 .NET Visual Studio/.NET (WinRT)

Когда вы выполняете компиляцию для Windows, Unity отвечает за вызовы, которые генерируют игровые библиотеки (DLL) из вашего кода на C#/UnityScript/Boo и включают стандартные библиотеки самой Unity. В случае Windows Store и Windows Phone 8 будет экспортироваться решение Visual Studio, кроме ситуации с автономным исполняемым файлом (Windows Standalone), где Unity генерирует .exe и необходимые файлы .dll. Я рассмотрю различные типы компиляции в заключительной статье из этой серии, где мы обсудим специфику конкретных платформ. Рендеринг графики на низком уровне выполняется на платформах Windows с помощью DirectX.

Разработка игры в Unity — процесс довольно прямолинейный.

  • Включите свои ресурсы (художественную графику, звуки и т. д.). Используйте магазин ресурсов. Нарисуйте свою графику. Наймите художника. Заметьте, что Unity полностью поддерживает Maya, Cheetah3d, Blender и 3dsMax, в некоторых случаях требуя, чтобы для работы с соответствующими форматами трехмерной графики было установлено какое-либо ПО, и изначально работает с распространенными файловыми форматами .obj и .fbx.
  • Напишите код на C#, JavaScript/UnityScript или Boo, чтобы управлять своими объектами, сценами и чтобы реализовать игровую логику.
  • Тестируйте в Unity. Экспортируйте на выбранную платформу.
  • Тестируйте на этой платформе. Развертывайте.

Заключение

Эта статья была обзором архитектуры и процессов в Unity. Я рассказал об интерфейсе, основах назначения кода, объектах GameObject, компонентах, Mono, .NET и о некоторых других вещах. Это позволит мне в следующей статье углубиться в сборку компонентов для двухмерной игры. Заглядывайте в Microsoft Virtual Academy, где в конце лета я собираюсь устроить двухдневное мероприятие по обучению Unity. И следите за региональными мероприятиями на unity3d.com/pages/windows/events.

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

Выражаю благодарность за рецензирование статьи экспертам Мэтту Ньюмену (Matt Newman) из Subscience Studios, Хайме Родригесу (Jaime Rodriguez) из Microsoft и Тоутвидасу Цилису (Tautvydas Žilys) из Unity.

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