Назад в библиотеку

Первоисточник: https://www.elibrary.ru/item.asp?id=67301240

УДК 004.55

РАЗРАБОТКА 2D-ИГРЫ В СРЕДЕ UNITY

ГБОУВО РК КИПУ имени Февзи Якубова пер. Учебный 8, г. Симферополь, Республика Крым
e-mail: ablaevalilya2018@gmail.com

Источник: Гаврисюк, А. Д. Разработка 2d-игры в среде unity / А. Д. Гаврисюк, Л. Н. Акимова // ИНФОРМАЦИОННО-КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В ЭКОНОМИКЕ, ОБРАЗОВАНИИ И СОЦИАЛЬНОЙ СФЕРЕ 2024 : Журнал ориентированный на научные статьи, Крым, 22 апреля – 28 2024 года. – Крым: Крымский инженерно-педагогический университет им. Ф. Якубова, 2024. – С. 12-20. – EDN WLCIOJ.

Аннотация. Статья посвящена разработке 2D-игры в жанре «сложный платформер, Souls-like» для WebGL на платформе Unity. Основная проблема, ко- которую решает проект, заключается в отсутствии на платформе Яндекс Игры сложных игр с элементами конкуренции. Результатом работы является прототип игры, способный развить подобный жанр игр на платформе и продвигать игры с нестандартным геймплеем в массы. Предусмотрен кроссплатформенный режим турнирной таблицы.

Ключевые слова: Яндекс Игры, Unity, игра, Souls-like.

Постановка проблемы.

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

может служить образцом новых и более эффективных способов обучения [1].

Анализ последних исследований и публикаций.

Особенности раз- работы 2D-игр также рассматриваются в работах [1]-[6]. Применение Souls-like жанра в играх хороший способ привить человеку понимание то- го, что ошибки в реальном мире - это не конец света, что не сданный эк- замен не разрушает всю жизнь, что нужно снова идти к цели, несмотря на то как много времени на это будет потрачено [3]. Анализируя современ- ные подходы к распространению и вовлечению пользователей в игру, поддержание таблицы лидеров может способствовать появлению желания улучшить свои результаты и достичь лучшей позиции в рейтинге, а также способствовать социальной интеракции между игроками, поскольку кон- куренция может замечательно объединять людей в команды или сообще- ства [5]. Создание игр - увлекательный процесс, а Unity делает его про- стым и доступным! Unity берет на себя всю тяжелую работу, и можно по- тратить время на создание увлекательного игрового процесса [6].

Над приведенными выше вопросами и другими направлениями, свя- занными с моделированием игр в UNITY, имеются работы таких авторов как Дженнифер Гарнер, Джесси Шелл, Хокинг Джозеф [3; 5; 6].

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

Целью статьи является разработка качественной и увлекательной 2D-игры для WebGL на платформе Unity.

Изложение основного материала.

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

В современным мире в игры играет всё больше людей. Но с чем свя- зан такой интерес?

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

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

Создавать увлекательные игры - значит предложить игрокам воз- можность погрузиться в увлекательные миры, испытать новые эмоции [4].

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

Диаграмма деятельности

Рис. 1 – Диаграмма деятельности

В соответствии с представленной диаграммой деятельности, пользо- ватель продукта может:

  • · Нажать кнопку «играть»
  • • Двигается удачно или не удачно
  • · Переход по уровню
  • • Прикосновение к объекту корона
  • • Победа.

Далее представлен программный код скрипа таймера, который будет использоваться для таблицы лидеров, созданный с помощью языка про- граммирования С# (листинг 1).

Листинг 1

Программный код скрипта таймера

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class TimerController : MonoBehaviour
{
 public Text timeCounter;
 public GameObject TIMEUI;
 private float elapsedTime;
 private bool timerGoing;
 private void Awake()
 {
 DontDestroyOnLoad(gameObject);
 }
 private void Start()
 {
 timeCounter.text = "Time: 00:00.00";
 timerGoing = false;
 BeginTimer();
 }
 private void Update()
 {
 if (elapsedTime >= 5 && timerGoing)
 {
 EndTimer();
 }
 }
 private void OnCollisionEnter2D(Collision2D collision)
 {
 if (collision.transform.CompareTag("win"))
 {
 EndTimer();
 }
 }
 public void BeginTimer()
 {
 timerGoing = true;
 elapsedTime = 0f;
 StartCoroutine(UpdateTimer());
 }
 public void EndTimer()
{
 timerGoing = false;
 }
 private IEnumerator UpdateTimer()
 {
 while (timerGoing)
 {
 elapsedTime += Time.deltaTime;
 TimeSpan timePlaying = TimeSpan.FromSeconds(elapsedTime);
 timeCounter.text = "Time: " + 
 timePlaying.ToString("mm':'ss'.'ff");
 yield return null;
 }
 }
}
      

В примере, реализуемом скриптом (листинг 1), при взаимодействии с тегом «Win» вызывается функция остановки таймера. Функция «start» задаёт формат таймера. Функция "BeginTimer" определяет в какой вели- чине счётчик таймера будет считать время.

В проекте также реализована функция остановки таймера и добавле- ние скрипта в игру (рис.2). Имеется возможность преобразования из се- кунд в минуты, секунды, миллисекунды и остановка при достижении тай- мером времени 59:59:59. Ограничение времени на один час способствует более усердным тренировкам при прохождении игры и преодолении ми- нимального порога для попадания в таблицу лидеров.

Настройка таймера

Рис. 2 – Настройка таймера

Далее представлен программный код скрипа физического углового векторного прыжка, который будет использоваться для создания переме- щения модели игрового персонажа, созданный с помощью языка про- граммирования С# (листинг 2):

Листинг 2

Программный код скрипта физического углового векторного прыжка

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hero : MonoBehaviour
{
 public float walkSpeed;
 private float moveInput;
 public bool isGrounded;
 private Rigidbody2D rb;
 public LayerMask groundMask;
 public PhysicsMaterial2D bounceMat, normalMat;
 public bool canJump = true;
 public float jumpValue = 0.0f;
 private Vector2 position;
 private Vector2 size = new Vector2(0.9f, 0.4f);
 void Start()
 {
 rb = GetComponent();
 }
 void Update()
 {
 moveInput = Input.GetAxisRaw("Horizontal");
 position = transform.position;
 if (jumpValue == 0.0f && isGrounded)
 {
 rb.velocity = new Vector2(moveInput * walkSpeed, rb.velocity.y);
 }
 isGrounded = Physics2D.OverlapBox
 (new Vector2(position.x, position.y - 0.5f),
size, 0f, groundMask);
 rb.sharedMaterial = jumpValue > 0 ? bounceMat : normalMat;
 if (Input.GetKey("space") && isGrounded && canJump)
 {
 jumpValue += 0.5f;
 }
 if (Input.GetKeyDown("space") && isGrounded && canJump)
 {
rb.velocity = new Vector2(0.0f, rb.velocity.y);
 }
 if (jumpValue >= 20f && isGrounded)
 {
 rb.velocity = new Vector2(moveInput * walkSpeed, jumpValue);
 Invoke("ResetJump", 0.2f);
 }
 if (Input.GetKeyUp("space") && isGrounded)
 {
 rb.velocity = new Vector2(moveInput * walkSpeed, jumpValue);
 jumpValue = 0.0f;
 canJump = true;
 }
 }
 void ResetJump()
 {
 canJump = false;
 jumpValue = 0;
 }
 void OnDrawGizmosSelected()
 {
 Gizmos.color = Color.green;
 Gizmos.DrawCube(new Vector2(position.x, position.y - 0.5f),
  new Vector2(0.9f, 0.2f));
 }
}
    

Функция «Start» выполняет создания физической модели. Функция «Update» осуществляет проверку наличие Collider земли под игроком и просчёт вектора скорости по Х. Далее создаётся объект, проверяющий наличие Collider земли под ногами игрока (он не виден игроку так как не имеет индексации). После чего выполняется проверка на разрешение прыжка, если под игроком есть Collider земли. Авто прыжок максималь- ной силы происходит при выполнении условий с лимитом 20 единиц. Ме- няем материал в зависимости от состояния прыжка, это нужно для реали- зации эффекта прыгающего мячика. Количество прыжков ограниченно при мощи физического материала (рис.3).

Настройка материалов и скриптов для Главного Героя

Рис. 3 – Настройка материалов и скриптов для Главного Героя

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

Выводы.

Актуальность проблемы недостатка игр со сложным игро- вым процессом вызывает потребность в разработке качественных 2D-игр в жанре «сложный платформер, Souls-like» для WebGL на платформе Ян- декс Игры. Уникальность игрового процесса, отличающегося от других игр на платформе, может вызвать интерес у игроков и включать в себя ин- новационные системы взаимодействия с игровым окружением. Сообще- ство активно вовлечено в обмен стратегиями прохождения тех или иных преград в игре, что способствует успешному продвижению по рейтинго- вой таблице. Решение этих проблем может способствовать развитию иг- ровой индустрии, удовлетворению запросов современных игроков и под- держанию интереса к играм, а также способствовать мотивации игроков к упорству и может служить образцом новых и более эффективных методов обучения.

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

  1. Джеймс, П.Д. Чему видеоигры могут научить нас в обучении и грамотности / П.Д. Джеймс. - New York : Palgrave Macmillan, 2004. - 245 с.
  2. Гейм-дизайн: от кнута к прянику [Электронный ресурс] - Режим доступа: http://bit.ly/4buUcr1.
  3. Гарнер Дж. Является ли разочарование неотъемлемой частью игрового дизайна? [Электронный ресурс] - Режим доступа: https://bit.ly/44WVdW5.
  4. Роджерс, C. Level Up! Руководство по созданию классных видеоигр / С Роджерс. - Москва : Бомбора, 2023. - 528 с.
  5. Шелл, Д. Геймдизайн: Как создать игру, в которую будут играть все / Д. Шелл. - Москва : Альпина Паблишер, 2019. - 640 с.
  6. Хокинг, Д Unity в действии. Мультиплатформенная разработка на С#. 3-е межд. издание / Д Хокинг. - Москва : Питер, 2023. - 448 с.

Гаврисюк Александр Дмитриевич, обучающийся кафедры прикладной информатики ГБОУВО РК КИПУ имени Февзи Якубова пер. Учебный 8, г. Симферополь, Республика Крым, 295015 E-mail: gavrisuk.a.pi.21@gmail.com

Акимова Лиля Назимовна, к.т.н., старший преподаватель кафедры прикладной информатики ГБОУВО РК КИПУ имени Февзи Якубова пер. Учебный 8, г. Симферополь, Республика Крым, 295015 E-mail: ablaevalilya2018@gmail.com

A.D. Gavrisyuk, L.N. Akimova

DEVELOPING A 2D-GAME IN THE UNITY ENVIRONMENT

Abstract. This article is devoted to the development of a 2D-game in the genre of "complex platformer, Souls-like" for WebGL on the Unity platform. The game created as part of this project will be available to a wide audience through the Yandex Games platform with a free distribution model. It is expected that the result of this work will be the creation of a prototype game capable of developing a similar genre of games on the platform and promoting games with non-standard gameplay to the masses. It is also planned to provide cross-platform tournament modes. The devel- oped game can serve as a source of entertainment by overcoming difficult challenges and achieving better results in the standings, stimulating competition among players.

Keywords: Yandex Games, Unity, game, Souls-like.