Реализация ключевых элементов казуальной 2D-видеоигры в среде разработки Unity | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Авторы: , ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №23 (365) июнь 2021 г.

Дата публикации: 06.06.2021

Статья просмотрена: 158 раз

Библиографическое описание:

Дерепаско, Н. И. Реализация ключевых элементов казуальной 2D-видеоигры в среде разработки Unity / Н. И. Дерепаско, Н. М. Попов, В. С. Близнюков. — Текст : непосредственный // Молодой ученый. — 2021. — № 23 (365). — С. 88-92. — URL: https://moluch.ru/archive/365/82092/ (дата обращения: 22.11.2024).



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

Ключевые слова: 2D-видеоигра, Unity, геймдизайн, программирование, игровой движок.

Введение

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

Концепт разрабатываемой видеоигры.

Перед разработкой видеоигры всегда описывается концепт этой игры. Это первый ключевой момент разработки видеоигр. На этом этапе описывается идея игры, а также основные игровые механики, элементы интерфейса, цели игрока [1].

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

Краткий концепт приложения

Рис. 1. Краткий концепт приложения

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

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

Графические элементы видеоигры.

В соответствии с определенным концептом художником были созданы элементы графического интерфейса, такие как шкала количества жизней, шкала запаса воздуха, они представлены на рисунке 2. Следующим этапом были созданы спрайты объектов игровой сцены: игровой персонаж, астероиды, баллон с воздухом, они отображены на рисунке 3.

Элементы интерфейса: а) шкала количества жизней б) шкала запаса воздуха

Рис. 2. Элементы интерфейса: а) шкала количества жизней б) шкала запаса воздуха

Спрайты объектов игровой сцены: а) игровой персонаж б) астероиды в) баллон с воздухом

Рис. 3. Спрайты объектов игровой сцены: а) игровой персонаж б) астероиды в) баллон с воздухом

Скрипты управления главным персонажем и генерации астероидов

Для создания логики поведения игровых объектов, а также обработки пользовательского ввода, в среде разработки Unity используются скрипты, т. е. компоненты, написанные с помощью языка программирования. Unity поддерживает такие языки как Java и C#, при этом именно C# принято считать основным языком написания скриптов [2]. Обзор языка C# и его функциональных возможностей является предметом отдельной темы, поэтому в рамках данной статьи мы не будем затрагивать его описание.

При рассмотрении разработанного концепта создаваемой видеоигры становится видно, что в основе игрового процесса лежит управление перемещением главного персонажа в космическом пространстве с целью предотвращения его столкновения с летящими навстречу астероидами. Исходя из этого можно сделать вывод, что ключевыми элементами являются скрипт, отвечающий за обработку передвижения главного персонажа с помощью устройства ввода (клавиатуры), а также скрипт, отвечающий за логику поведения астероидов [2].

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

[SerializeField] bool upEngine;

[SerializeField] bool downEngine;

[SerializeField] bool leftEngine;

[SerializeField] bool rightEngine;

В методе KeyboardInput() прописаны изменения значения этих переменных в зависимости от ввода пользователем:

if (Input.GetKey(KeyCode.W)) upEngine = true;

else upEngine = false;

if (Input.GetKey(KeyCode.S)) downEngine = true;

else downEngine = false;

if (Input.GetKey(KeyCode.A)) leftEngine = true;

else leftEngine = false;

if (Input.GetKey(KeyCode.D)) rightEngine = true;

else rightEngine = false;

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

В соответствии с этим были определены методы EnginesLogic() и MovementLogic(), отвечающие за логику подобного перемещения в горизонтальном и вертикальном направлениях:

void EnginesLogic()

{

if (upEngine)

{

if (currentVerticalPower > -.5f) currentVerticalPower -= powerStep;

}

if (downEngine)

{

if (currentVerticalPower < .5f) currentVerticalPower += powerStep;

}

if (leftEngine)

{

if (currentHorizontalPower > -.5f) currentHorizontalPower -= powerStep;

}

if (rightEngine)

{

if (currentHorizontalPower < .5f) currentHorizontalPower += powerStep;

}

}

void MovementLogic()

{

transform.position = Vector2.MoveTowards(transform.position, moveDirectionTarget.position, speed * currentVerticalPower);

transform.Rotate(0f, 0f, rotationSpeed * currentHorizontalPower);

}

После была определена логика поведения опасных для главного персонажа объектов игровой сцены. Для их генерации используется корутина, которая возвращает фактический объект, используемый для итераций и называемый IEnumerator, с использованием ключевого слова yield [4]. Корутину мы прописываем в классе-родителе (т. к. она может использоваться и для генерации других объектов, например, предмета восстановления запаса кислорода) и определяем основные моменты, связанные с генерацией, такие как время, через которое должен быть сгенерирован объект, начальное положение объекта при генерации, его скорость:

protected IEnumerator SpawnCD(int timeSpawn, float Xposition, float Yposition, GameObject gameObject, bool speedChange)

{

yield return new WaitForSeconds(timeSpawn);

Vector2 pos = new Vector2(Xposition, Yposition);

if (speedChange)

{

gameObject.GetComponent ().speedMultiplier = Random.Range(1.5f, 3.0f);

}

else

{

gameObject.GetComponent ().speedMultiplier = 1.0f;

}

Instantiate(gameObject, pos, Quaternion.identity);

Repeat();

}

Данная конструкция вызывается с помощью метода StartCoroutine() в классе-наследнике с передачей необходимых параметров:

void Start()

{

StartCoroutine(SpawnCD(4, transform.position.x, spawnPosition.position.y, asteroid, false));

}

public override void Repeat()

{

StartCoroutine(SpawnCD(4, transform.position.x, spawnPosition.position.y, asteroid, false));

}

Итоговый результат процесса разработки видеоигры

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

Начало игры

Рис. 4. Начало игры

Игровой процесс

Рис. 5. Игровой процесс

Литература:

  1. Бонд Д. Г. Unity и C#. Геймдев от идеи до реализации. / Д. Г. Бонд. — 2-е издание. — Санкт-Петербург: Питер, 2019. — 928 c.
  2. Хокинг Дж. Unity в действии. / Дж. Хокинг. — 2-е издание. — Санкт-Петербург: Питер, 2018. — 352 c.
  3. Ландау Л. Д. Теоретическая физика. В 10 томах. Том 1. Механика. / Л. Д. Ландау, Е. М. Лифшиц. — 7-е издание. — Москва: ФИЗМАТЛИТ, 2017. — 224 c.
  4. Unity User Manual // Unity Documentation: [сайт]. — URL: https://docs.unity3d.com/Manual/index.html (дата обращения 18.05.2021).
Основные термины (генерируются автоматически): главный персонаж, игровая сцена, игровой процесс, среда разработки, вертикальное направление, игровая среда, игровой персонаж, космическое пространство, пользовательский ввод, шкала запаса воздуха.


Ключевые слова

программирование, Unity, игровой движок, 2D-видеоигра, геймдизайн

Похожие статьи

Обзор популярных игровых движков для создания инди-игр

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

Основные этапы создания видеоигр

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

Создание обучающего приложения по информатике на базе Unity

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

Создание простого ar-приложения с использованием Unity и Vuforia engine

В статье рассмотрен процесс создания простого ar-приложения при помощи платформы разработки приложений Unity и платформы Vuforia.

Сетевая синхронизация пользователей на движке Unity

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

Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android

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

Использование графических решений в разработке мобильных приложений под управлением операционной системы Android-12

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

Сравнительный анализ сред разработки и редакторов кода для web-разработчиков

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

Анализ технологий разработки веб-интерфейсов

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

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

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

Похожие статьи

Обзор популярных игровых движков для создания инди-игр

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

Основные этапы создания видеоигр

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

Создание обучающего приложения по информатике на базе Unity

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

Создание простого ar-приложения с использованием Unity и Vuforia engine

В статье рассмотрен процесс создания простого ar-приложения при помощи платформы разработки приложений Unity и платформы Vuforia.

Сетевая синхронизация пользователей на движке Unity

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

Рассмотрение декларативного подхода к разработке интерфейсов мобильных приложений для Android

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

Использование графических решений в разработке мобильных приложений под управлением операционной системы Android-12

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

Сравнительный анализ сред разработки и редакторов кода для web-разработчиков

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

Анализ технологий разработки веб-интерфейсов

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

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

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

Задать вопрос