В настоящее время выпускается много игр, приносящих плюсы разработчикам. Преимуществом 2D игр является то, что ее легко запрограммировать и легко создать графические объекты. Игры положительно влияют на развитие логического мышления, работу мозга в целом, реакцию. Также 2D игры подходят даже для неподготовленных пользователей.
Вложение | Размер |
---|---|
![]() | 699.8 КБ |
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ЛИЦЕЙ № 373 МОСКОВСКОГО РАЙОНА САНКТ-ПЕТЕРБУРГА
«ЭКОНОМИЧЕСКИЙ ЛИЦЕЙ»
Разработка алгоритма для создания 2D игры
Работу выполнила:
Журавлев Никита Александрович,
учащийся 11 «А» класса ГБОУ лицей № 373 Московского района Санкт-Петербурга
Руководитель:
Медведева Людмила Анатольевна, учитель информатики ГБОУ лицей № 373 Московского района Санкт-Петербурга
Санкт - Петербург
2021
Оглавление
1. Основы языка программирования C# 6
2. Что такое платформа Unity 7
3. Использование «Photoshop CS6 x 64» 8
5. Размещение игры в App Store: 10
6. Установка и настройка Unity 11
Список использованных источников 23
В современном мире огромное количество людей увлекаются компьютерными и мобильными играми. Не только подростки и молодежь, но и взрослые люди, являющиеся представителями абсолютно разных сфер деятельности, например, бизнесмены, политики и так далее. Их всех объединяет одно желание – отключиться от реального мира и погрузиться в виртуальный мир.
Игровая индустрия берет свое начало с середины 20-го века. Компьютерные игры развивались очень медленно. На сегодняшний день нет достоверных сведений о том, кто же был первым создателем компьютерных игр. В 50-е годы над данным вопросом работали трое ученых. Это Ральф Бэр, которому принадлежит идея интерактивного телевидения. А.С. Дуглас, с чьим именем связано создание игры под названием «ОХО» известная игра «крестики нолики». Первая видеоигра «Теннис для двоих» создана известным физиком У. Хигинботамом.
Если проследить хронологию событий по развитию игровой компьютерной индустрии, можно отметить основные этапы. В 60-е годы разработана компьютерная игра, которую назвали Space War. Спустя 10 лет Дугласом Энгельбартом получен патент на компьютерную мышку. В 70 годы создана игра в приключенческом жанре под названием Colossal Cave Adventure. Игра моментально распространилась через сети. Разработчики начинают выпускать более совершенные компьютерные игры, которые ускоряют развитие персональных компьютеров.
В 80-е годы появилось множество компаний, которые занимались исключительно разработкой игр. В этот период идет заметное удешевление домашних компьютеров. Позже, в 1987 году на мониторах появились 256 цветов, теперь игры стали более красочными и современными. Все больше людей интересуются компьютерными играми. Компании стали разрабатывать игры для более широкого круга, игры в виде PacMan, которые актуальны сейчас и используются в мобильных платформах.
Начиная с 90-х годов, игровая индустрия набирает обороты. Именно тогда была выпущена игра, которая заложила основы жанра шутер.
Появляются игры различного жанра и характера для всех возрастов и категорий. Позже, с развитием игр, к программам стали появляться инструменты, игровые движки. Это позволило делать игры более красочными, более современными и реалистичными.
С наступлением 21 века игровая индустрия коренным образом изменилась. Современные игры разработаны в разных жанрах и многие из них имеют обучающий характер. Появились усовершенствованные программы, платформы, языки обучения, редакторы кодов, движки, на которых их выполняют.
Игровая индустрия - это отличное место для поиска работы. Компаниям нужны специалисты в этой области. Информационные технологии развиваются семимильными шагами. Сегодня все большее число выпускников школ, колледжей идут обучаться в вузы информационным технологиям. Большинство из них после получения диплома пойдут работать в сферу игровой индустрии.
Актуальность данной темы заключается в том, что в настоящее время выпускается много игр, приносящих плюсы разработчикам. Преимуществом 2D игр является то, что ее легко запрограммировать и легко создать графические объекты. Игры положительно влияют на развитие логического мышления, работу мозга в целом, реакцию. Также 2D игры подходят даже для неподготовленных пользователей.
Цель работы: Разработать алгоритм для создания 2D игры на базе языка программирования C# и выложить ее в сеть Интернет.
Задачи, поставленные для осуществления цели:
- Выбор технологии;
- Базовые знания отдельных разделов компьютерной графики и их реализация в выполняемой работе;
- Создание сценария игры;
- Создание объектов игры;
- Реализация архитектуры на языке C#;
- Написание кода игры;
- Разработка одного уровня игры;
- Разработка меню;
- Разработка дизайна;
- Публикации игры в сети Интернет.
Объект исследования – программы, необходимые для разработки 2D игры.
Предмет исследования - особенности процесса создания 2D игры.
В качестве методов исследования использованы методы изучения документации, литературных и электронных источников.
C# – это объектно- и компонентно-ориентированный язык программирования. C# предоставляет языковые конструкции для непосредственной поддержки такой концепции работы. Благодаря этому C# подходит для создания и применения программных компонентов. С момента создания язык C# обогатился функциями для поддержки новых рабочих нагрузок и современными рекомендациями по разработке ПО [9].
Ключевые слова:
Unity (игровой движок) - межплатформенная среда разработки компьютерных игр, разработанная американской компанией Unity Technologies. Unity позволяет создавать приложения, работающие на более чем 25 различных платформах, включающих персональные компьютеры, игровые консоли, мобильные устройства, интернет-приложения и другие.
Выпуск Unity состоялся в 2005 году и с того времени идёт постоянное развитие. Основными преимуществами Unity являются наличие визуальной среды разработки, межплатформенной поддержки и модульной системы компонентов. К недостаткам относят появление сложностей при работе с многокомпонентными схемами и затруднения при подключении внешних библиотек [8].
RAD (визуальная среды разработки) - концепция организации технологического процесса разработки программных продуктов, ориентированная на максимально быстрое получение качественного результата в условиях сильных ограничений по срокам и бюджету и нечётко определённых требований к продукту.
Плюсы Unity [10]:
Минусы Unity:
Игровые объекты неотъемлемая часть любой игры. Умение рисовать нужно, если не для создания спрайтов и фонов, то для концептов. Однако разнообразие программного обеспечения и профессиональных устройств для рисования может озадачить тех, кто только начинает работать на этом поприще.
Среди всего многообразия графических редакторов, в первую очередь, выделяется, конечно, Adobe Photoshop. Все создатели игровых объектов отдают предпочтение именно этой программе. За почти 30 лет своего существования Photoshop стал основным инструментом для профессиональных художников. Виной всему огромное количество всевозможных функций, выходящих далеко за рамки простого рисования.
Adobe Photoshop – многофункциональный графический редактор, разрабатываемый и распространяемый компанией Adobe Systems. В основном работает с растровыми изображениями, однако имеет некоторые векторные инструменты. Продукт является лидером рынка в области коммерческих средств редактирования растровых изображений и наиболее известной программой разработчика. В данном проекте он мне понадобился для создания персонажей.
Как и в любом другом деле, начинать следует с идеи, которую нам необходимо выразить в концептах. Это важный этап, который будет фундаментом для всей дальнейшей работы. На самом деле не так важно, какого качество будут эскизы главное, чтобы они были. Потому что эскиз — это план, следуя которому вы сэкономите время. Имея эскиз, вы будете четко представлять финальный результат и шаги, которые необходимы для его реализации. Как говорится «Кораблю, который не знает куда плыть, никакой ветер не будет попутным».
Требуется задействовать все имеющиеся знания и навыки, чтобы вылепить персонажа, не жалея полигонов. Главная задача - создать максимально детализированную модель. Потому что, на следующих этапах, внести какую-либо детализацию будет проблематично.
Сравните, например, пейзаж Мордора во «Властелине колец» и холмы Шира. Когда круглый и дружелюбный на вид персонаж бродит по остроугольным окрестностям, он выглядит более тревожным, нежели тот же персонаж, первоначально показанный рядом с округлыми формами. В том же духе вы можете совершать свои стилистические выборы и тем самым влиять на впечатление, которое местность производит на игрока [11].
Игровой объект – это наиболее важная концепция в Unity. Любой объект в вашей игре будь то персонаж, свет, камера или визуальный эффект - это все игровые объекты. Но сам по себе игровой объект из себя ничего не представляет, ему нужно придать свойства чтобы он стал чем-то большим.
Главные игровые объекты моей работы:
Игровой объект (он же GameObject) – один из базовых компонентов, из которых строится игра. Говоря о GameObject, мы подразумеваем наблюдаемые в игре сущности, причем как физические (персонаж, дерево, грунт и т. д.), так и метафизические (контроллер мультиплеерного режима, менеджер снаряжения и пр.).
Каждый физический игровой объект имеет значения поворота и положения. При этом допускается вложение игровых объектов друг в друга. Вышеупомянутые поворот и положение каждого объекта отсчитываются относительно его родительского объекта. Объект, который размещен непосредственно в сцене, позиционируют относительно «мировых координат». Существует масса причин, по которым может потребоваться вложение объектов. К примеру, можете принять решение, что в целях структуризации будет целесообразным поместить окружающую среду (к примеру, отдельные элементы, из которых состоит деревня либо город) в пустой родительский объект. Таким способом cможете представить вашу окружающую среду в сжатом виде, чтобы потом вместе со всем представлением сцены перенести ее куда надо при разработке игры
Цифровая подпись необходима для того, чтобы App Store мог идентифицировать разработчика. В дальнейшем только этот разработчик сможет обновлять и изменять приложение
Для работы на движке Unity для начала, необходимо его скачать, установить и настроить, поэтому надо перейти на официальный сайт (https://unity3d.com/ru) и скачать саму программу. Существует 3 типа: personal, plus и pro. Выбираем personal, т.к. не собираемся делать какую-нибудь 3D игру с огромным бюджетом, командой профессионалов и всякие навороченные настройки нам не понадобятся. После скачивание устанавливаем Unity на компьютере.
Выбираем настройки по умолчанию и по ходу работы по мере необходимости будем их корректировать.
Для создания проекта придётся зарегистрироваться на сайте Unity. Это можно сделать с помощью сайта или самой программы, которую мы скачали. Чтобы не тратить много времени на регистрацию, программа предлагает авторизоваться через Google+ или Mail. После авторизации, создадим новый проект. Для этого в правом верхнем углу программы выбираем опцию New (новый).
В самом первом поле Project name (“Название проекта”) вводим название проекта, во втором поле Location указываем путь расположения проекта на компьютере или в облаке. После каждой комбинации Ctrl+S проект сохраняется/переписывается. Следующее поле Organization, где выбираем организацию (если таковой нет, то любую, это не повлияет на процесс создания проекта игры). Далее выбираем тип сцен 2D или 3D, нам нужен 2D. Ниже видим Enable Unity Analytics, а справа информационный знак, если посмотреть в определение, то Unity Analytics — это сервис по сбору информации о приложении и пользователях приложения (https://gcup.ru/forum/59-42831-1), т.е. благодаря этой функции сможем протестировать наш проект в бенчмарках, посмотреть его дополнительные характеристики и т.п. Оставим эту функцию, она может пригодиться нам в будущем. И так, после всех проделанных выше превращений нажимаем Create project (Создать проект).
Открывается новое окно (окно движка), где будем создавать игру.
Справа расположены 2 вкладки: Inspector и Services. Переходим во вкладку Inspector (важная вкладка в Unity) для отображения настроек и характеристик объекта. В нижней части платформы, расположены 3 вкладки: Console, Animator и Animation.
Первая вкладка является неким переводом и способом общение движка Unity с человеком, именно в ней будут отображаться все ошибки в коде, действиях, предложения и советы.
Animation – эта вкладка, в которой создаётся анимация для объекта. В данном проекте используются спрайты – это множество картинок, которые склеиваются друг за другом, и в результате, при просмотре, получается движение как кадры в фильме. Во вкладке Animator зададим условия, при которых включается та или иная анимация объекта. Вкладка Animator помогает изменять объект с течением времени, т.е. эти изменения будут происходить с объектом при заданных условиях в течение времени.
Следующая область находится в левом нижнем углу, во вкладке Project (Проект), и содержит две зоны: Проводник и Содержимое (слева дерево/каталог файлов, а справа содержимое этих папок).
Assets (Активы - элементы, которые используются) - папка, в которой располагаются все файлы, картинки, объекты и заготовки, прежде чем они появятся на сцене.
Сцена находится в центре экрана (серая область, в клеточку). Слева от неё и выше “проводника” находится вкладка Hierarchy (Иерархия). Иерархия - порядок подчинённости низших звеньев высшим, организация их в структуру типа «дерево»; принцип управления в централизованных структурах), которая выполняет роль дерева/каталога сцены, т.е. она отображает все элементы, которые есть на сцене, но не графически, а схематически! Эта область и сцена напрямую связаны друг с другом: что в области, то и на сцене, что на сцене, то и в области. У сцены также имеется 3 вкладки: Scene (сцена), Game (процесс игры) и Asset Store (экосистема).
Над сценой находится плеер с кнопками: Play, Pause и Pause/Play
Чтобы менять размер областей достаточно взять их за края и тянуть.
Сначала для игры выбираем Задний фон. Во вкладке Hierarchy создаём Элемент Canvas, для этого правой кнопкой мыши (ПКП) кликаем по области вкладки Hierarchy, затем UI и выбираем Canvas. Затем выделяем элемент (1 клик ЛКМ) и во вкладке Inspector отобразятся его настройки. В параметре Render Mode по умолчанию стоит Screen Space - Overlay, нажимаем на него и выбираем Screen Space - Camera и после применения данной настройки у нас появится новое поле Render Camera. Левее этого поля нажимаем ЛКМ на кружок и выбираем Main Camera. Далее кликаем ПКП по Canvas, который мы создали ранее и выбираем UI => Image.
Берём нашу картинку и перетаскиваем её в папку Assets. В проекте много файлов, чтобы их систематизировать создадим папки: Animations, Mobs, Objects, Scripts. Перетаскиваем картинку в поле Source Image и в разделе Rect Transform, кликаем на него ЛКМ и из списка, который выпал, выбираем самый правый, нижний шаблон (ЛКМ+Alt), который примет размер экрана. Теперь приступим к созданию платформ, по которым будет перемещаться наш персонаж.
Берём текстуру земли и переносим в Hierarchy, далее кликаем по нему ЛКМ и в Inspector нажимаем на кнопку Add Component => Physics 2D => Box collider 2D. Наша текстура стала с контуром зелёного цвета, это означает, что Unity теперь видит эту землю, как объект, с которым могут взаимодействовать другие объекты на сцене. Для всех объектов сцены повторяем алгоритм, для отдельных объектов вместо Box collider 2D, понадобится Polygon collider 2D. С помощью collider Unity аккуратно обведёт текстуру зелёным контуром и применит к нему те же параметры что и к блоку с землёй. Чтобы постоянно не повторять одни и те же действия в папке Objects создадим папку Prefabs, для готовых объектов.
Далее из готовых объектов строим уровень. Чтобы добавить растительность, которая никак не будет влиять на персонажа, просто перемещаем текстуру и не применяем collider. На сцене имеется объекты, которые можно перемещать и на которые действует физика. Проделываем с ними те же операции и добавляем компонент Rigidbody 2D, который также находится в Physics 2D. У объектов появляются характеристики, свойственные реальному объекту, например, такая характеристика как вес. В Unity уже существует константа с притяжением Земли, а вернее равная ускорению свободного падения, поэтому можно менять массу объектов, к которым применим компонент Rigidbody 2D. Уровень создан, переходим к созданию персонажа.
Создадим Create Empty, для этого нажмём ПКП по области Hierarchy и выберем Create Empty. Переименовываем объект в Character. Кликаем правой кнопкой мыши по объекту и выбираем 2D Objects => Sprite. Выделяем Sprite, в поле Sprite перетаскиваем изображение персонажа, с возможностью изменения его размеров. Далее добавляем 2 коллайдера: box и circle, а также Rigidbody 2D. Далее переходим в папку Scripts и кликаем ПКМ по свободной зоне затем Create => C# Script, открываем его и пишем следующее:
using System.Collections;
using UnityEngine;
public class Character: Unit
{
[SerializeField]
private int lives = 10;
[SerializeField]
private float speed = 3.0F;
[SerializeField]
private float jumpForce = 15.0F;
private bool isGrounded = false;
private CharState State
{
get { return (CharState)animator.GetInteger("State"); }
set { animator.SetInteger("State", (int)value); }
}
new private Rigidbody2D rigidbody; //Ссылки на компоненты
private Animator animator;
private SpriteRenderer sprite;
private void Awake() //Получение ссылок на компоненты
{
rigidbody = GetComponent
animator = GetComponent
sprite = GetComponentInChildren
}
private void FixedUpdate()
{
CheckGround();
}
private void Update()
{
if (isGrounded) State = CharState.Idle; //Обнуляем анимацию
if (Input.GetButton("Horizontal")) Run(); //Нажатие кнопок "Перемещение"
if (isGrounded && Input.GetButtonDown("Jump")) Jump(); //Нажатие кнопки "Прыжок"
}
private void Run()
{
Vector3 direction = transform.right * Input.GetAxis("Horizontal"); //Локальная переменная
transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); //Перемещение персонажа
sprite.flipX = direction.x < 0.0F; //Разворот персонажа
if (isGrounded) State = CharState.Run; //Включаем анимацию
}
private void Jump ()
{
rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse); //Прыжок персонажа
}
private void CheckGround()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.21F);
isGrounded = colliders.Length > 2;
if (!isGrounded) State = CharState.Jump;
}
}
public enum CharState //Перечисляем виды анимаций
{
Idle,
Run,
Jump
}
Рассмотрим этот код подробнее
Сначала мы указываем библиотеки, которые будем использовать:
using System.Collections;
using UnityEngine;
Создаём класс Character и добавляем ему качества Unit:
public class Character : Unit{}
В этом классе задаём жизни, скорость, силу прыжка:
[SerializeField]
private int lives = 10;
[SerializeField]
private float speed = 3.0F;
[SerializeField]
private float jumpForce = 15.0F;
[SerializeField] – возможность выводить значение в инспектор и прямо там его менять.
В этих двух командных получаем информацию о состоянии персонажа из Animator и присваиваиваем её переменной State:
private CharState State
{
get {return (CharState)animator.GetInteger("State"); }
set {animator.SetInteger("State", (int)value); }
}
Указываем ссылки на компоненты:
new private Rigidbody2D rigidbody;
private Animator animator;
private SpriteRenderer sprite;
Присваиваем значения этих компонентов:
private void Awake()
{
rigidbody = GetComponent
animator = GetComponent
sprite = GetComponentInChildren
}
Вызываем проверку (персонаж на земле?):
private void FixedUpdate()
{
CheckGround();
}
Дальнейший код закомментирован:
private void Update()
{
if (isGrounded) State = CharState.Idle; //Обнуляем анимацию
if (Input.GetButton("Horizontal")) Run(); //Нажатие кнопок "Перемещение"
if (isGrounded && Input.GetButtonDown("Jump")) Jump(); //Нажатие кнопки "Прыжок"
}
Аналогичная ситуация:
private void Run()
{
Vector3 direction = transform.right * Input.GetAxis("Horizontal"); //Локальная переменная
transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime); //Перемещение персонажа
sprite.flipX = direction.x < 0.0F; //Разворот персонажа
if (isGrounded) State = CharState.Run; //Включаем анимацию
}
private void Jump()
{
rigidbody.AddForce(transform.up * jumpForce, ForceMode2D.Impulse); //Прыжок персонажа
}
Эту часть кода можно пояснить:
private void CheckGround()
{
Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.21F);
isGrounded = colliders.Length > 2;
if (!isGrounded) State = CharState.Jump;
}
}
Мы создали массив colliders, и присвоили ему радиус 0.21F. Этой командой проверяем касание с землёй, точка отсчёта идёт от ног персонажа. Когда персонаж в воздухе команда isGrounded = colliders.Length > 2; будет выдавать ложь т.к. персонаж состоит из двух коллайдеров, а точка отсчёта идёт от ног, то эти 2 коллайдера будут попадать в радиус массива, иначе значение превысит 2, что будет сигнализировать о касании с землей.
Выделяем персонаж, открываем вкладку Animation и слева от надписи samples кликаем ЛКМ и выбираем Create New Clip… Далее сохраняем в папку Animations. В окне Animation нажимаем Add Property => New Sprite => Sprite Renderer и ищем спрайт и нажимаем на плюс напротив него. Появляется временная шкала. Левее находятся кнопки для создания анимации. Чтобы анимировать персонаж понадобится пара кадров, где он летит. Нажимаем на кнопку записи (Красный круг), выделяем спрайт и перетаскиваем ползунок в линейной области на некоторое количество кадров вправо, выбираем картинку, где персонаж делает первый шаг и перетаскиваем её в спрайт персонажа в поле Sprite. Повторяем это действие столько раз, сколько имеется кадров с движением. Таких кадров 2. Поставить кадры следует в таком расположении: 121, где 1-первый кадр, 2-второй кадр. Анимация при бесконечной прокрутке не должна прерываться, поэтому склеиваем, накладываем последний и первые кадры анимации и нажимаем Ctrl+S, чтобы сохранить весь прогресс. Аналогично создаём анимацию прыжка и бездействия (Run, Jump, Idle). Затем выделяем персонаж и в компонентах добавляем ему Animator. Чтобы быстрее находить нужные компоненты, после нажатие на кнопку Add component, можно использовать поисковую строку. После того, как мы добавили Animator персонажу, переходим в окно Animator, если такого нет, то надо выбрать пункт меню Window и в выпавшем списке найти Animator, поместить его в удобное место на экране и приступить к настройке анимации.
В окне Animator видим плитки с названиями: (Idle, Run, Jump, Any State, Entry, Exit) и переходим во вкладку Parametrs, нажимаем плюс => int. Это параметр, регулирующий переходы, поэтому назовём его State, по умолчанию значение 0. Далее свяжем все анимации друг с другом, при условии, что стрелка Entry => Idle подключена и Idle = 0, Run = 1, Jump = 2.
Выделяем плитку Any State, затем Make transition и видим: к курсору прилипла стрелка. Перетаскиваем её на плитку Idle, нажимаем на стрелку и во вкладке Condition, нажимаем на плюс, чтобы добавить условие перехода. Выбираем параметр State. Повторяем аналогичные действия и с Run, и с Jump и меняем параметр на 1 и 2 соответственно. Теперь, если запустить игру, то будет бесконечная анимация Idle, так как не настроили переходы, а только связали. Настраивается анимация с помощью кода. Для учета изменения направления у Unity ость X возрастает слева направо, поэтому для Unity слева < 0, а справа > 0, поэтому когда мы идём влево, величина нашего направления < 0, вправо > 0. Всё, теперь у нас есть самая простая игра, в которую можно играть. Мы создали все необходимые компоненты, т.е. дальше мы можем их просто сохранить, переместить в папку “Prefabs”, а потом расставлять готовые объекты на новых сценах и создавать новые уровни [8].
В процессе выполнения проектной работы были изучены современные информационные технологии обучения, их влияние на игровую индустрию. Показаны возможности игрового движка Unity в разработке 2D игр.
Приложение Unity, представляющий собой профессиональный игровой движок, используемый для создании видеоигр. Это инструмент, которым ежедневно пользуются опытные разработчики, а также один из наиболее доступных инструментов для новичков.
В процессе выбора движка исходили из того, что в комплекте с Unity поставляется приложение, которое обеспечивает межплатформенные возможности всего процесса разработки.
При написании кода использован язык C#. Данный язык позволяет легко войти в разработку игры. Язык C# актуален на сегодняшний день, так как позволяет сконцентрироваться на проектировании программ, избавляя разработчика от множества рутинных операций.
Таким образом, можно сделать вывод, что, используя возможности игрового движка Unity, можно создавать приложения различного характера для разных платформ.
1. Джозеф Хокинг. Unity в действии. Мультиплатформенная разработка на C#. 2016
2. Тьюлипер А. Разработка вашей первой игры с помощью Unity и С#0 [Электронный ресурс]: Архитектура и компиляция//Компьютерный информационный портал URL:http://www.oszone.net/25788/unity.
3. Жанры компьютерных игр (общая схема) [Электронный ресурс]. - Режим доступа: http://gamesisart.ru/TableJanr.html (дата обращения 13.02.2021).
4. Джонатан Линовес, пер. с англ./Р.Н.Рагимова, Виртуальная реальность в Unity. - Мск.: ДМК ПРЕСС, 2016.
5. Программы для создания игр [Электронный ресурс] - Режим доступа: http: //ru.wikipedia.org/wiki/Разработка компьютерных игр (дата обращения 25.01.2021).
6. Алан Торн-Искусство создания сценариев в Unity. 2016.Основы языка Си шарп — C# ~ Си шарп для начинающих (c-sharp.pro).
7. (92) CODE BLOG - Программирование и C# - YouTube
8. Unity (игровой движок) – Википедия (wikipedia.org)/
9. Документация Microsoft. Краткий обзор языка C#, https://docs.microsoft.com/ru-ru/dotnet/csharp/tour-of-csharp/
10. 7 плюсов и минусов Unity, URL: http://vasilisc.com/unity_criticism
11. С чего начать игровому 2D-художнику: программы и устройства, URL: https://clck.ru/UZZig
"Разделите так, как делили работу..."
Без сердца что поймём?
Как Дед Мороз сделал себе помощников
Мастер-класс "Корзиночка"
Почему Уран и Нептун разного цвета