История игровых движков №4 — Unity 3D

.

В данной статье речь пойдёт о кроссплатформенном движке Unity.

Движок Unity 5 стал бесплатным для всех

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

Сложно представить, что мог бы существовать условно бесплатный движок, на котором реально создать компьютерную игру. Однако, этот движок существует. Он трёхмерный, обладает нормальным IDE, встроенной физикой, аудио-движком и прописанными возможностями сетевого мультиплейера. Движок Unity поддерживает Windows, IOS, Android, операционные системы приставок Playstation, Xbox и Nintendo Wii.
Сложно представить, что Unity обладает возможностями, которые позволяют собрать блок команд в специальную версию для плагина, который встраивается в браузер. Таким образом, Вы сможете получить в окне браузера 3D картинку без занижения разрешения текстур и качества моделей.

Вообще, есть упоминания о технологиях, которые ставили своей целью работу с 3D в сети Интернет, в частности ActiveWords и VRML. Но все эти системы вытеснил Flash (в дополнении с Java и Silverlight). Прочие технологии существуют, но в данный момент, существенно угнетены технологией Flash.

Релиз третьей версии Unity на самом деле заставил обратить на этот движок внимание даже гигантов, разрабатывающих игры исключительно во Flash. Так что же всё-таки составляет суть и принципы движка Unity?
Unity – полноценный игровой движок, который направлен на то, что весь процесс разработки игры (за исключением скриптинга и подготовки игровых ресурсов) будет проводиться в отдельном редакторе.

Рассмотрим этот движок в сравнении с UnrealEngine3.

Достоинства Unity:

  • IDE: сочетание редактора сцен (в комплексе общего редактора) с редактором игровых объектов и редакторов скриптов. Дополнительно прилагаются генераторы деревьев и террейнов.
  • Улучшенные возможности скриптинга, а именно в отличие от вышеуказанного движка, в Unity доступны три языка: JavaScript, C# и разновидность Python’s Boo.
  • Кроссплатформенность – как уже упоминалось выше, поддерживаются Windows, MacOS, Wii, iPhone, iPod, iPad, Android, PS3 и XBox 360, не все из которых, конечно, доступны в бесплатной лицензии.

    Ну и веб-плагин, конечно, забывать не стоит.

  • Современный уровень графики, способный конкурировать с иными движками. Unity, безусловно, проигрывает UnrealEngine по количеству реализованных возможностей. Однако Unity обладает такими возможностями, как deferred освещение, стандартный набор постпроцессинговых эффектов, SSAO, ускоренная проработка лайтмапов.
  • Достойным образом проработанный физический движок.
  • Масштабируемость и производительность. Большую часть простых процессов движок обрабатывает на превосходном уровне.
  • Запуск любого приложения на Unity в веб-плагине.
  • Невысокая цена за полную лицензионную версию для крупного веб-разработчика.

Недостатки Unity:

  • Закрытость кода.

    Невозможность получения исходных кодов движка даже по лицензии.

  • Невозможность дополнения физики движка сторонними возможностями. Вы не сможете добавить в движок стороннюю физику, либо SpeedTree.

Реальные минусы сложно определить с первого взгляда. Движок производителен, стабилен и лёгок в применении.

У большинства малочисленных команд разработчиков компьютерных игр основной проблемой часто становился именно движок. Достаточно сложно писать с нуля единственному программисту в команде. Нужен полноценный бесплатный движок, и нужен он сразу, программист начинает искать бесплатные решении (Ogre, Irrlicht). Эти движки не так уж и плохи (Torchlight написан на Ogre), но они сложны в освоении и требуют не одного программиста, а целой команды. Конечно, можно обратиться к наборам типа GameMaker, но серьёзную игру с его помощью собрать сложно.

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

Собственно IDE:

Можно прямо в IDE путём нажатия кнопки Play протестировать текущую сцену.


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


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


Разработчики проекта ААА-класса скорее всего напишут свой движок или купят что-то наподобие UnrealEngine3. Но если количество программистов невелико, то написание собственного движка может оказаться черезчур затратным. Скорость и сложность разработки браузерной казуальной игры на Unity значительно выше, чем на Flash, а графическое превосходство – очевидно.

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

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

Также читайте:Хотите заняться разработкой игр: с чего начать?Буквально на днях на Гамине состоится анонс пятнадцатого конкурса по разработке игр.NextCastle Party — фестиваль инди и ретро игрОтечественная команда анонсирует игру с необычным названием «RIP»

Создание и Использование Скриптов

Поведение игровых объектов контролируется с помощью компонентов (Components), которые присоединяются к ним. Несмотря на то, что встроенные компоненты Unity могут быть очень разносторонними, вскоре вы обнаружите, что вам нужно выйти за пределы их возможностей, чтобы реализовать ваши собственные особенности геймплея. Unity позволяет вам создавать свои компоненты, используя скрипты. Они позволяют активировать игровые события, изменять параметры компонентов, и отвечать на ввод пользователя каким вам угодно способом.

Unity изначально поддерживает три языка программирования:

  • C# (произносится как Си-шарп), стандартный в отрасли язык подобный Java или C++;
  • UnityScript, язык, разработанный специально для использования в Unity по образцу JavaScript;

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

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

Создание скриптов

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

Вы можете создать скрипт используя меню Create в левом верхнем углу панели Project или выбрав (или JavaScript/Boo скрипт) в главном меню.

Новый скрипт будет создан в папке, которую вы выбрали в панели Project. Имя нового скрипта будет выделено, предлагая вам ввести новое имя.

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

Структура файла скрипта

После двойного щелчка на скрипте в Unity, он будет открыт в текстовом редакторе. По умолчанию Unity будет использовать MonoDevelop, но вы можете выбрать любой редактор из панели External Tools в настройках Unity.

Содержимое файла будет выглядеть примерно так:

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

GDC 2014: представлен движок Unity 5 с системой глобального …

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

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

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

A UnityScript script works a bit differently to C# script:

Здесь функции Start и Update имеют такое же значение, но класс не объявлен явно. Предполагается, что скрипт сам по себе определяет класс; он будет неявно производным от MonoBehaviour и получит своё имя от имени файла скриптового ассета.

Управление игровым объектом

Как было сказано ранее, скрипт определяет только план компонента и, таким образом, никакой его код не будет активирован до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Вы можете прикрепить скрипт перетаскиванием ассета скрипта на игровой объект в панели Hierarchy или через окно Inspector выбранного игрового объекта. Имеется также подменю Scripts в меню Component, которое содержит все скрипты, доступные в проекте, включая те, которые вы создали сами. Экземпляр скрипта выглядит так же, как и другие компоненты в окне Inspector:-

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

Debug.Log это команда, которая просто выводит сообщение на консольный вывод Unity. Если вы нажмете сейчас Play, вы увидите сообщение внизу основного окна редактора Unity в окне Console (меню: ).

Variables and the Inspector

Variables and the Inspector

GUI в Unity3d

Этот урок даст всем желающим основное понимание того, как будет работать GUI в Unity на примере создания простого меню. Это очень простой урок, не требующий специальных навыков, кроме начального знания Unity Java Script (или, в целом, вообще какого-либо скрипта).

29 января 2014

Введение в Unity3d JavaScript

В этом уроке мы исходим из того что вы уже знаете основы программирования на JavaScript.

Демонстрация движка Unity 5

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

20 декабря 2013

Порядок событий в Unity3d

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

20 декабря 2013

Оптимизация производительности в unity3d

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

20 декабря 2013

Уроки Unity3d — Скрипт FPSWalker

Для просмотра любого скрипта Unity, вам нужно открыть его в редакторе скриптов. Для этого нужно выбрать скрипт в окне проекта (Project), а затем дважды кликнуть на его значке (или нажать кнопку Edit, в Inspector-е), чтобы открыть скрипт для редактирования.

9 ноября 2012

Уроки Uniti3d — Основы скриптинга

Теперь, когда мы исследовали составные части First Person Controller, давайте, для начала, взглянем на то, как работает скрипт FPSWalker, чтобы освоится с Unity JavaScript.

9 ноября 2012

Уроки Uniti3d — Игровой персонаж

Добавленный на остров, в предыдущей главе, игровой персонаж представлен в виде префаба (prefab – объект шаблона) предоставленный Unity Technologies в пакете Standard Assets, этот объект является примером игрового персонажа от первого лица.

Но как добились такого эффекта?

9 ноября 2012

Уроки Unity3d — Окружение, редактор ландшафта

Создавая свой 3D мир, вы будите использовать два различных типа окружения — здания и пейзажи, созданные в сторонних 3D редакторах, и ландшафт, созданный в редакторе ландшафта (terrain editor) Unity.

1 октября 2012

Уроки Unity3d — Интерфейс

Интерфейс Unity, как и интерфейс многих современных приложений, имеет настраиваемое расположение окон (window layout), их расположение можно настраивать, перетаскивая за закладки.

26 сентября 2012

Уроки Uniti3d — Основные понятия и компоненты.

Основной концепцией Unity является использование Игровых Объектов (Game Object (GO)), это дает вам возможность разбить свою игру на легко управляемые объекты, которые, в свою очередь, состоят из множества компонентов (Component parts).

18 сентября 2012

Uniti3d уроки — Основные 3D понятия.

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

Давайте посмотрим на важнейшие элементы 3D мира, и как Unity позволяет разрабатывать их.

13 сентября 2012

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *