№ 5'2015 ВЕСТНИК МГУП ИМЕНИ ИВАНА ФЕДОРОВА © Московский государственный университет печати имени Ивана Федорова
ISSN ON-LINE 2409-6652 _vestnik.mgup.ru
УДК 004.915:004.42
ПЛАГИНЫ ДЛЯ ИГРОВОГО ДВИЖКА UNITY3D
Денисов Дмитрий Александрович
доцент кафедры информатики и информационных технологий, кандидат технических наук Московский государственный университет печати имени Ивана Федорова 127550 Россия, г. Москва, ул. Прянишникова, д. 2А 8оЫ1ег81огу@уапйех. ги
Ладанюк Екатерина Витальевна
студентка института принтмедиа и информационных технологий Московский государственный университет печати имени Ивана Федорова 127550 Россия, г. Москва, ул. Прянишникова, д. 2А капгтгт 1@^таП. сот
Аннотация. Рассматривается расширение базового функционала среды разработки Unity3d посредством плагина. Приводятся причины полезности расширения функционала с помощью плагина на примере плагина атмосферных эффектов и процесс создания плагина с нуля.
Ключевые слова: игровой движок, Unity3d, плагины, создание плагина, атмосферные эффекты.
Игровой движок Unity3d — это инструмент для разработки двух- и трехмерных приложений и игр для ОС Windows и OS X. Созданные с помощью Unity приложения работают на большинстве распространенных операционных систем (Windows, OS X, Windows Phone, Android, iOS, Linux), а также на ведущих игровых приставках. Поддерживается создание даже браузерных приложений.
Проекты, созданные с помощью Unity, поддерживают DirectX и OpenGL. Движок очень популярен и используется как крупными разработчиками, так и разработчиками Indie-игр из-за удобства и простоты интерфейса. Начиная с Unity 5.0, pro-функционал стал доступен и в бесплатной версии.
Проект в Unity делится на сцены — отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек (рис. 1). Объекты, в свою очередь, содержат наборы компонентов, с которыми и взаимодействуют скрипты. Компоненты можно удалять, добавлять, изменять.
Рис. 1. Интерфейс Unity3d
Редактор Unity имеет простой интерфейс, состоящий из различных окон, которые легко настраивать, отладку игры можно производить прямо в редакторе. Движок поддерживает три языка, но, по сути, использует два основных: C# и модификация JavaScript. Третий язык Boo, являющийся диалектом Python, был убран в 5-й версии. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов. Это делает интерфейс более дружелюбным и понятным. Также, у Unity есть своя система контроля версий.
Plug-In (встраиваемый модуль) — программа, расширяющая возможности какого-нибудь программного пакета. Обычно встраивается в тело пакета и вызывается непосредственно из программы, для которой предназначен. Плагин для Unity представляет собой, как и для многих других программ, файл динамической библиотеки с расширением *.dll.
Все плагины можно подразделить на две категории.
Первая — плагины непосредственно для настройки и кастомизации редактора, добавляющие в него дополнительные свойства или настройки для объектов. В этом случае результат работы плагина нагляден, так как видно, что расширяются возможности именно самого редактора. Никаких скриптов дополнительно вызывать не нужно. На рис. 2 показана работа плагина, добавляющего меню «Open scene», включающего подменю, которые открывают разные сцены (уровни).
IM MI IM ВммМ^П Г ■ Iр■ I II <Opa« 1мм мм* и
П»г. Cam«« Oiutanriufи
Рис. 2. Демонстрация работы плагина
Вторая категория — плагины, выполняющие какие-либо действия над объектами и их свойствами. Они вызываются из какого-либо другого скрипта.
Темой моего исследования было выбрано создание плагина атмосферы и эффектов, попадающего в обе категории. В Unity система эффектов освещения, частиц и визуальных эффектов позволяют достичь хороших результатов, но зачастую не у всех есть время разбираться во множестве настроек и подбирать параметры. Нужно потратить достаточно много времени для создания качественного контента. Если игру делает маленькая команда или вообще один человек, у него вряд ли будет время разбираться со всеми аспектами проекта, включая соз-
№ 5'2015 ВЕСТНИК МГУП ИМЕНИ ИВАНА ФЕДОРОВА © Московский государственный университет печати имени Ивана Федорова
ISSN ON-LINE 2409-6652 _vestnik.mgup.ru
дание атмосферы и эффектов, что является одним из главных факторов восприятия игры. На рис. 3 показан пример того, насколько улучшится атмосфера и восприятие уровня после применения эффектов.
Рис. 3. Сцена до и после применения атмосферных эффектов
Плагин атмосферных эффектов содержит большой набор уже готовых эффектов и позволяет создать новые и комбинировать существующие, не затрачивая много времени.
Чтобы создать плагин в Microsoft visual studio или аналогичном пакете, создаем новый проект на языке c# и выбираем библиотеку классов. Следует обязательно использовать версию .NetFramework 3.5, иначе могут возникнуть проблемы и ошибки при компиляции проекта. Чтобы использовать все возможности Unity, его типы, классы и все то, что мы пишем в обычных скриптах в Unity, нужно добавить ссылку на сам движок — UnityEngine.dll (рис. 4).
Рис. 4. Добавленная ссылка на UnityEngine.dll
Далее создаем один или несколько классов на с#, в начале дописывая, что мы будем использовать файл UnityEngine.dll Внутри класса пишем нужный код точно так же, как пишутся обычные скрипты в Unity. Классы нужно делать public, иначе они будут считаться приватными, и Unity не будет иметь к ним доступа.
пиецисе testet (
public dill tfitPlmfl (
public t«tPlufl(>t>-i<l| >) { D*ku«.k4(()>
Рис. 5. Тестовый класс
После компиляции получаем единственный файл с расширением *.dll. Помещаем наш файл в папку Plugins. В большинстве случаев ее нужно создавать отдельно в корневом каталоге Assets.
После этого в любом скрипте, где мы хотим использовать наш плагин, нужно добавить строчку "using myscript", и плагин будет готов к работе. Результат можно наблюдать на рис. 6.
void Start() { т
пеи т___lupci i("Helow World l")i| 1
>
)
D Console
Cl««i Coll«psc Cle«lonpl«y Eriet p«u3t
Рис. 6. Использование тестового плагина и сообщение, подтверждающее работу скрипт
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Blackman Sue. Beginning 3D Game Development with Unity: The World's Most Widely Used Multiplatform Game Engine.
2. Crossw Michael L. Essential 3D Game Programming».
3. Opal Deniz Professional Unity and C#: Multi-Platform 3D Game Development.
4. Goldstone Wil.l Unity 3.x Game Development Essentials.
5. Unity Scripting Reference [Электронный ресурс]. — URL: http://docs.unity3d.com/ScriptReference (дата обращения 18.11.2015).
PLUGINS FOR UNITY3D GAME ENGINE
Dmitriy Aleksandrovich Denisov
Moscow State University of Printing Arts 127550Russia, Moscow, Pryanishnikova st., 2А
Ekaterina Vitalievna Ladanyuk
Moscow State University of Printing Arts 127550Russia, Moscow, Pryanishnikova st., 2А
Annotation. The paper discusses extending of the base functionality of Unity3d with plugins and usefulness of extending the base functionality with plugins on the example of atmospherics and effects plugin. The paper also discusses process of creating a plugin from scratch.
Keywords: game engine, Unity3d, plugins, creating a plugin, atmospheric effects.