Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

1.1. Достоинства Unity      21

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

ПРЕДУПРЕЖДЕНИЕ ПО ПОВОДУ ТЕРМИНОЛОГИИ

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

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

Первым делом вам нужно зайти на сайт www.unity3d.com и скачать саму программу. Я пользовался версией Unity 5.0, которая на момент написания этой книги была наиболее новой. В URL-адресе отражен тот факт, что изначально инструмент Unity предназначался для создания трехмерных игр; их поддержка по-прежнему остается главной, но теперь Unity замечательно подходит и для разработки двухмерных игр. В платной версии программы доступны расширенные функциональные возможности, но базовая версия распространяется бесплатно. Все примеры из этой книги прекрасно работают в бесплатной версии, так что Unity Pro вам не потребуется. Разница между этими версиями состоит в уже упомянутых мной расширенных функциональных возможностях (рассмотрение которых выходит за рамки темы данного издания) и коммерческих условиях лицензирования.

1.1. Достоинства Unity

Посмотрим более внимательно на данное в начале этой главы определение: Unity — профессиональный игровой движок, который используется при создании видеоигр для различных платформ. Это достаточно прямой ответ на прямой вопрос «Что такое Unity?». Но что конкретно он означает? И чем примечателен инструмент Unity?

1.1.1. Сильные стороны и преимущества Unity

Любой игровой движок предоставляет множество функциональных возможностей, которые задействуются в различных играх. Реализованная на этом движке игра получает все эти функциональные возможности, кроме того, добавляются ее собственные игровые ресурсы и код игрового сценария. Unity предлагает моделирование физических сред, карты нормалей, преграждение окружающего света в экранном пространстве (Screen Space Ambient Occlusion, SSAO), динамические тени… список можно продолжать долго. Подобным набором функциональных возможностей могут похвастаться многие игровые движки, но у Unity есть два основных преимущества перед другими передовыми инструментами разработки игр: чрезвычайно производительный визуальный рабочий процесс и мощная межплатформенная поддержка.

22      Глава 1. Знакомство с Unity

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

ПРИМЕЧАНИЕ  Большинство других инструментов, оснащенных центральным визуальным редактором, страдают от ограниченной и недостаточно гибкой поддержки возможности написания сценариев, но инструмент Unity лишен этого недостатка. Несмотря на то что все создаваемое для Unity в конечном счете проходит через визуальный редактор, основной интерфейс включает в себя множество связанных проектов с нестандартным кодом, запускаемым в игровом движке Unity. Это своего рода аналог связывания классов в параметрах проекта для таких интегрированных сред разработки, как Visual Studio или Eclipse. Поэтому опытные программисты не должны пренебрегать средой Unity, считая, что это чисто визуальный инструмент создания игр с ограниченной возможностью программирования!

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

В дополнение к значительным преимуществам в плане производительности, которые нам дает редактор, у набора инструментов Unity существует еще и сильная межплатформенная поддержка. В данном случае под этим словосочетанием подразумеваются не только места развертывания (вы можете развернуть игру на персональном компьютере, в Интернете, на мобильном устройстве или на консоли), но и инструменты разработки (создание игры может осуществляться на машинах, работающих под управлением как Windows, так и Mac OS). Эта независимость от платформы явилась результатом того, что изначально инструмент Unity предназначался исключительно для компьютеров Mac, а позднее был перенесен на машины с операционными системамисемействаWindows.Перваяверсияпоявиласьв2005году,нокнастоящемумоменту вышли уже пять основных версий (с множеством небольших, но частых обновлений). Изначально инструмент Unity поддерживал разработку и развертывание только для машин Mac, но через несколько месяцев вышло обновление, позволяющее работать и на машинах с Windows. В следующих версиях постепенно добавлялись все новые платформыразвертывания,например:межплатформенныйвеб-плеерв2006-м,iPhone в 2008-м, Android в 2010-м и даже такие игровые консоли, как Xbox и PlayStation. Совсем недавно появилась возможность развертывания в WebGL — новом фреймворке для трехмерной графики в веб-браузерах. Найдется немного игровых движков,

1.1. Достоинства Unity      23

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

Между тем в дополнение к этим основным достоинствам идет и третье, менее бросающееся в глаза преимущество, обеспечиваемое модульной системой компонентов, которая используется для конструирования игровых объектов. «Компоненты» в такой системе представляют собой комбинируемые пакеты функциональных элементов, поэтому объекты создаются как наборы компонентов, а не как жесткая иерархия классов. Другими словами, компонентная система являет собой альтернативный (и обычно более гибкий) подход к объектно-ориентированному программированию, в котором игровые объекты создаются путем объединения, а не наследования. Сравнение подходов демонстрирует диаграмма на рис. 1.1.

На а

 

С а

 

В а

М

М

С а а

 

а

 

 

М а

К

К

К

 

а а

М

а а

К

а а

 

 

 

С а а

К

 

К

К

 

 

а

 

 

а

 

О а а

 

а а

К

а

• а

• а а

а а : а ,

. Ка •

а а • а а

а а

 

• а

 

Рис. 1.1. Сравнение наследования и компонентной системы

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

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

24      Глава 1. Знакомство с Unity

1.1.2. Недостатки, о которых нужно знать

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

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

ПРИМЕЧАНИЕ  Раньше существенным недостатком была сложность работы с системами контроля версий (такими, как Subversion, Git и Mercurial), но в более поздних версиях Unity все значительно упрощено. Вы можете наткнуться на устаревшие ресурсы, где утверждается, что Unity не работает с системами контроля версий, но на более новых ресурсах есть описание файлов .meta (механизма, который появился в Unity для работы с этими системами) и указания, какие папки проекта следует поместить в репозиторий. Начать лучше всего с чтения страницы документации http://docs.unity3d. com/ru/current/Manual/ExternalVersionControlSystemSupport.html.

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

1.1.3. Примеры игр на основе Unity

Итак, вы познакомились с сильными и слабыми сторонами Unity, но, возможно, пока до конца не уверены в том, что с помощью данного инструмента разработки можно получить первоклассные результаты. Зайдите в галерею Unity на странице http://unity3d. com/ru/showcase/gallery и полюбуйтесь постоянно обновляемым списком сотен игр и симуляций, созданных этим инструментом. В данном разделе перечислено небольшое количество игр, демонстрирующих разные жанры и платформы развертывания.

1.1. Достоинства Unity      25

Игры для рабочего стола (WINDOWS, MAC, LINUX)

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

Guns of Icarus Online (рис. 1.2) — шутер от первого лица, созданной независимым разработчиком Muse Games.

Gone Home (рис. 1.3) — квест от первого лица, разработанный независимой студией Fullbright Company.

Рис. 1.2. Guns of Icarus Online

Рис. 1.3. Gone Home

Игры для мобильных устройств (IOS, ANDROID)

Unity позволяет развертывать игры на мобильных платформах, таких как iOS (смартфонах iPhone и планшетах iPad) и Android (смартфонах и планшетах). Вот примеры мобильных игр в различных жанрах:

Dead Trigger (рис. 1.4) — шутер от первого лица, созданный разработчиком Madfinger Games.

Bad Piggies (рис. 1.5) — игра-головоломка от финской компании Rovio.

Рис. 1.4. Dead Trigger

Рис. 1.5. Bad Piggies

26      Глава 1. Знакомство с Unity

Tyrant Unleashed (рис. 1.6) — коллекционная карточная игра, созданная студией Synapse Games.

Рис. 1.6. Tyrant Unleashed

Игры для консолей (PLAYSTATION, XBOX, WII)

Unity поддерживает развертывание на игровых консолях, хотя разработчику потребуется лицензия от Sony, Microsoft или Nintendo. Из-за этого требования и возможности межплатформенного развертывания консольные игры часто доступны и на обычных компьютерах. Вот примеры таких игр в различных жанрах:

Assault Android Cactus (рис. 1.7) — аркадный шутер от независимого разработчика Witch Beam.

The Golf Club (рис. 1.8) — спортивный симулятор, созданный фирмой HB Studios.

Рис. 1.7. Assault Android Cactus

Рис. 1.8. The Golf Club

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