Создание игры на Unity

XXIII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Создание игры на Unity

Николайко А.А. 1
1МОУ Раменская СОШ 21 с УИОП
Ющенко О.В. 1
1МОУ Раменская СОШ 21 с УИОП
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

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

Компьютерные игры классифицируют по нескольким основным признакам:

  1. Жанр;

  2. Количество игроков;

  3. Визуальное представление;

  4. Платформа.

Жанр игры определяется целью и основной механикой игры.

Аркада (Arcade), приключенческая игра (аdventure), ролевая игра (RPG), экшен (Action), стратегическая игра (Strategy), Компьютерный симулятор, (simulator) головоломка (Puzzle).

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

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

Целями проекта являются:

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

  • Узнать, какие технологии используются для создания видеоигр;

  • Выбрать способ разработки и специальные программы;

  • Показать, сколько изменений пережила игра и как она прошла путь от идеи до реализации;

  • Рассказать, как именно работает игра и как написанный код превращается в геймплей;

  • Рассказать, что я узнал о жизни разработчиков;

  • Узнать, захочу ли я после всего полученного опыта заниматься этим в будущем.

Задачи:

  • Разобраться в теме разработки игр и движков;

  • Обучиться с нуля Unity и языку C#;

  • Создать компьютерную игру на платформе Unity.

Практическая значимость:

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

Краткий обзор литературы:

  1. Из учебников А.Л. Босовой, А.Ю. Босовой «Информатика» узнал о языках программирования. Давно пытаюсь писать программы на этом языке программирования Python и C#.

  2. Прочитав статью «Всемирная история игровой индустрии» на сайте “STOPGAME”, я узнал, что игровая индустрия возникла в 50-ых годах прошлого века в США и Японии одновременно. Расцвет индустрии пришелся на начало 2000-х годов. Это связано с распространением ПК и глобальной сети интернет по всему миру. Усиленно начал развиваться киберспорт, получили огромное распространение онлайн игры и игры для мобильных приложений. В нашей стране наблюдается небывалый рост игровой индустрии.

  3. Из Википедии узнал про игровые движки. “Unity (игровой движок)”.

  4. Из статьи Ильин В. «Основы создания 2D персонажа в Unity 3D», узнал, что самыми распространенными являются: Unity 3D, Torque 2d/3d, CryEngine 3, UDK (Unreal Devepmen Kit), HeroEngine, Cocos 2d-x.

Личный вклад состоит в разработке собственной игры и описании собственного опыта полученного в этом направлении.

Раздел 1. Теоретическая часть

Как уже говорилось выше, видеоигры – это искусство. Но не будет неправильным, если не сказать, что разработчики игр ходят по тонкому лезвию между искусством и технологиями. По сути, такое почти нельзя больше нигде встретить. Представляете? А ведь ещё только пару десятков лет назад эту ситуацию нельзя себе было и вообразить. Но технологии постоянно меняются, а художественно игры могут быть вообще какими угодно: от двумерной головоломки для телефонов до огромной РПГ с открытым миром и ультрареалистичной графикой. Если принять это во внимание, то становится куда понятнее, почему никакого единого лекала в индустрии разработки игр просто нет. Иногда бывает так, что внешне игры похожи, но даже и их делали совершенно по-разному.

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

Прежде всего, конечно, идея. Она, как-никак, является движущей силой в создании игры. Без должной идеи с малой вероятностью сможет получиться поистине качественный продукт.

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

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

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

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

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

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

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

Выбор Юнити не случаен, Юнити работает только с кодом, а именно с языком программирования C#.

Юнити – один из самых популярных движков в мире. На нём создавалось большое количество как проектов для больших платформ (PC, XBOX, PlayStation и др.), так и для мобильных устройств (Android, iOS). Это многофункциональный игровой движок, который позволяет создавать игры, анимации и не только на более чем 25 платформах. Его преимуществами являются: визуальная среда разработки, межплатформенная поддержка и модульная системы компонентов.

Юнити– средство для разработки двух- и трехмерных игр. Позволяет создавать приложения, работающие под большинством современными операционными системами (Windows, OSX, WindowsPhone, Android, AppleiOS, Linux), а также на игровых приставках Wii, PlayStation 3, PlayStation 4, Xbox 360, XboxOne и MotionParallax3D дисплеях (устройства для воспроизведения виртуальных голограмм), например, Nettlebox.

Юнити распространяется бесплатно, но помимо бесплатной, существуют четыре сборки - стандартная Unity, UnityiOSPro, AndroidPro и командная лицензия. Они отличаются стоимостью и функциональностью.

Все это делает Юнити одним из наиболее приоритетных движков для начинающих игровых разработчиков.

С данной технологией мне было поначалу очень трудно разобраться: процесс вхождения занял больше полутора лет, так как C# для Юнити – это, по сути, отдельный огромный фреймворк, логика и работа которого немного отличается от обычного языка программирования. По сути, от обычного С# здесь осталась только парадигма алгоритмического и объекно-ориентированного программирования, то есть логика, а всё остальное отличалось.

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

Раздел 2: Практическая часть. История разработки ClerkRun.

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

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

Во-первых, это конечно же сам движок Юнити. Была установлена его самая последняя стабильная версия.

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

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

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

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

Во-вторых, мне нужен был редактор кода. И тут без лишних размышлений я конечно же выбрал VisualStudio, так как эта программа была знакома мне уже очень давно, и был большой опыт в работе с ней. И, в-третьих, программы-помощники: Aseprite – графический редактор, позволяющий создавать рисунки в стиле PixelArt; FLStudio – программа для написания музыки, звуков. Разобраться в ней у меня особо не составило труда, так как я всю жизнь занимался музыкой, и конечно же Ютуб с обучающими роликами, а также сайты в интернете, вроде редактора палитр и Пинтереста. Да, набор всего получился большим, и это конечно же только малая часть, но этим всем я пользовался большую часть времени на протяжении разработки.

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

Сначала планировалось сделать простую игру, где вы в роли волшебника пытаетесь защитить башню от полчищ наступающих врагов.

К сожалению, со временем идея о защите башни показалась немного скучной и было решено на основе её создать РПГ игру. Да, предвижу ваши мысли о том, что планы завиральные, но тогда ещё свои силы было очень сложно оценить. И конечно же через неделю-две пришлось отказаться от данной затеи. Но что же делать дальше?

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

А название моей новой игры было - Fortitude, что переводится с английского как "стойкость". Игрок должен был управлять обычным человечком, зачищая подземелья от монстров, демонов и других существ.

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

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

Раздел 3: ClerkRun: как это работает?

ClerkRun- это моя первая большая игра, которую я разрабатываю уже больше 7 месяцев как школьный проект! ClerkRun - это новейший мобильный экшен шутер.

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

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

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

Но что же под капотом у игры? Как уже было сказано, графику нарисовал полностью сам, вот некоторые примеры непосредственно из игры. Мои умения рисовать за 7 месяцев очень сильно улучшились, что не могло не радовать.

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

В скрипте триггера объектов проверяется столкновение персонажа с определенными интерактивными объектами.

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

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

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

Заключение

Вот, у меня есть готовая игра, многие её уже протестировали и им нравится! Но что же со мной, что пережил за эти 7 месяцев разработки?

Было потрачено почти все своё свободное время на игру, мало отдыхал и старался всё закончить как можно скорее, жертвовал многим ради нее. Пережил не один кранч, кризис и потерю мотивации, но несмотря ни на что смог почти закончить и представить вам продукт, над которым ещё никогда так не старался. Узнал темную сторону разработки игр, через что проходят создатели, чтобы дать нам тот готовый идеальный результат. Ощутил это полностью на себе, получил кучу опыта и новых умений и хочу сказать только одно. Это. Того. Стоит. Эти эмоции от того, что сделано что-то реально огромное и что-то реально своё, от того, что другим это нравится и самое главное от того, что мне это нравится. Одной из целью данного проекта являлся вопрос: "Хочу ли я этим заниматься в будущем?" И пройдя через всё это, не потеряв к концу мотивацию, точно могу сказать, что да, мне реально нравится этим заниматься, это доставляет мне истинное, настоящее удовольствие. И верю, что не остановлюсь и буду идти дальше к своей цели несмотря ни на что.

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

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

  • Простота разработки;

  • Поддержка языков программирования С#;

  • Мультиплатформенность;

  • Бесплатная с ограниченнымивозможностями версия.

И в ходе реализации исследовательской работы были выполнены все поставленные задачи:

  • Разобраться в теме разработки игр и движков;

  • Обучиться с нуля Unity и языку C#;

  • Создать компьютерную игру на платформе Unity.

Реализована компьютерная игра. Цель работыдостигнута.

Список литературы:

  • Учебник А.Л. Босовой, А.Ю. Босовой «Информатика».

  • Википедия. “Unity (игровой движок)”, https://en.wikipedia.org/wiki/Unity_(game_engine)

  • Джейсон Шрейер, “Кровь, пот и пискели”;

  • Ильин В. Основы создания 2D персонажа в Unity 3D 4.3 [Электрон- ный ресурс]/ Ильин Вячеслав // Хабрахабр. — Режим доступа: https://habrahabr.ru/post/211472/ (датаобращения:04.05.2017).

  • Компьютерные игры как искусство [Электронный ресурс]. — Режим доступа:http://gamesisart.ru

  • Программы для создания игр [Электронный ресурс]. – Режим до- ступа: http://gamesisart.ru/game_dev_programms.html

  • Торн А. Основы анимации в Unity [Текст]: учебное пособие/ Алан Торн– ред.: Д. Мовчан, переводчик: Р. Рагимов – Москва: ДМК, 2016–176с.

  • Хокинг Дж. Unity в действии. Мультиплатформенная разработка на C# [Текст]: учебное пособие/ Джозеф Хокинг – Санкт-Петербург: Питер, 2016 – 336с.

  • Create Level in Tiled, Import to Unity using Tiled2Unity,YouTube [Электронныйресурс]: видеоролик.

  • Unity3d [Электронныйресурс].

Просмотров работы: 21