Разработка видеоигры с использованием процедурной генерации ландшафта в среде Unity
Косинцев Артём Михайлович
Ученик 11 «А» класса
МБОУ СОШ №108
Введение
- С развитием электронно-вычислительных машин область их применения неуклонно росла. Так, из научной и военной деятельности с появлением персональных компьютеров и компьютерных игр, они заняли большую долю и в сфере развлечений.
Введение
- На данный момент индустрия видеоигр по обороту приближается к показателям спортивной индустрии (которая имеет за 2016 год оборот, размером более 140 миллиардов долларов).
Введение
- Совместив два интереса – видеоигры и программирование, было решено попробовать себя в сфере разработки видеоигр.
- Отсутствие опыта и команды лишь усилили интерес и натолкнули меня на следующую гипотезу:
Гипотеза
- Возможно самостоятельно, не прибегая к сторонней помощи, разработать видеоигру от начала до конца.
- Из данной гипотезы была сформулирована цель работы.
Цель работы
- Разработать видеоигру в жанре «Стратегия» с использованием общедоступных ресурсов и технологий, включая процедурную генерацию ландшафта, в интегрированной среде разработки игрового движка «Unity».
Задачи
- Изучить профессиональную документации по игровой индустрии, программированию и среде разработки.
- Разработать план всех направлений создания проекта, используя полученные знания.
- Создать рабочий прототип.
Актуальность
- Актуальность любых разработок в игровой индустрии подтверждается её бурным ростом.
- Разработки, связанные с процедурной генерацией, пользуются особым вниманием из-за их уникальности и обширности возможностей.
Теоретическая часть. Введение в процесс разработки видеоигр
Процесс разработки игры обычно включает следующие этапы:
- 1. Подготовка («препродакшн» от англ. pre production);
- 2. Производство;
- 3. Поддержка.
Этапы могут меняться в зависимости от предпочтений фирмы и особенностей проекта.
Дизайн-документ
Подготовка к разработке. Игровой движок
- Игровой движок - центральный программный компонент компьютерных и видеоигр или других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы.
- Игровой движок - центральный программный компонент компьютерных и видеоигр или других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы.
Подготовка к разработке. Игровой движок
Игровой движок
Unity Engine
- Рабочая область
- Иерархическая структура проекта
- Панель инспектора ресурсов проекта
- Панель инспектора объекта
Microsoft Visual Studio
Процедурная генерация ландшафта
- Процедурная генерация ландшафта – процесс создания ландшафта или местности (карты), в основу которого положены математические функции и алгоритмы.
- Процедурная генерация ландшафта – процесс создания ландшафта или местности (карты), в основу которого положены математические функции и алгоритмы.
Требования к генерации
- Скорость
- Надёжность
- Контролепригодность
- Разнообразие
- Креативность и правдоподобие
Шум Перлина
- Шум Перлина — это градиентный шум, состоящий из набора псевдослучайных единичных векторов, расположенных в определенных точках пространства и интерполированных функцией сглаживания между этими точками. Используется в компьютерной графике для увеличения реализма или графической сложности поверхности геометрических объектов. Для генерации шума Перлина в одномерном пространстве необходимо для каждой точки этого пространства вычислить значение шумовой функции, используя направление градиента (или наклон) в указанной точке.
- График, показывающий пример функции шума. Случайное значение от 0 до 1 присваивается каждой точки на оси X .
- При плавной интерполяции (сглаживании) между значениями, мы можем определить непрерывную функцию, которая принимает не целое в качестве параметра.
- Теперь, если взять много гладких функций с различной частотой и амплитудой и совместить их все вместе, получится хорошо зашумленная функций.
- Это и есть функция шума Перлина.
- Проделав всё тоже самое в 2 измерениях, возможно получить вот такую шумовую картину:
- Результат работы алгоритма можно интерпретировать в ландшафты, похожие на скалы, горы и т.п.
Практическая часть. Игровой процесс
- Ключевой особенностью игры является то, что при каждом новом запуске карта генерируется иначе, чем она была сгенерирована в прошлый раз.
- Игровая экономика является важной частью игры, баланс в ней необходим. Перекос экономики в любую из сторон приведёт к потере мотивации к игре.
Иерархия
- Видеоигра – это система, структура, в которой все элементы переплетены. Сложность связей между объектами требует от игры чётко выстроенной иерархии.
Иерархия
Создание сети пещер
- Изначальный вариант, является абсолютно непохожим на сеть пещер и неподходящим для игры .
Создание сети пещер
Создание сети пещер
- Дальше было решено рассмотреть вариант, с использованием в основе синуса и косинуса. Опытным путём было открыто, что хоть синус и косинус пригодны для данного алгоритма, но они не могут дать нужный для проекта результат.
Создание сети пещер
Создание сети пещер
- Ключевым изменением стало добавление в изначальную формулу для вычисления шума случайного значения в определённом диапазоне. Случайное значение в определённом диапазоне позволило генерировать непохожие друг на друга карты, но включая определённые параметры местности, которые и позволяют добиться сходства с системой пещер. Использование этого значения в функции f(x) = x / scale + scale / 2 , которая была выведена опытным путём, где scale – случайное значение, может выдать, например, вот такую систему пещер:
Создание сети пещер
Создание сети пещер
- Дальнейшие преобразования были связаны с увеличением числа проходов, очистке и добавлением в сеть пещер ресурсов – минералов. Наложение определённых ограничений на смежные между пещерами области позволило добиться таких результатов.
Создание сети пещер
Создание сети пещер
- Последние доработки привели к желаемому результату. Сгенерированные генератором карты полностью пригодны для идеи и игрового процесса, заложенного в игру.
Создание сети пещер
Графика
- Графика является одной из основных составляющих видеоигры. Чем лучше выглядит игра, тем она привлекательнее игроку. От объединения графики, игрового процесса и сюжета и зависит успех проекта.
Примеры игр на движке Unity
Графика
- Unity обладает возможностями реализовать фотореалистичную графику, однако, это требует дополнительных материальных и профессиональных вложений. По этим причинам мне пришлось ограничиться стандартными возможностями, которые, однако, также выглядели приемлемо и подходили для моего проекта.
Графика
Графика. Моделлирование и текстурирование
Подведение итогов. Заключение
- Время разработки: 3 месяца
- Количество строк кода: 3 370
- Максимальное кол-во строк в скрипте: 491
- Размер игры: 435 МБ
- Преодолев большинство трудностей во время разработки, с уверенностью можно сказать, что разработка видеоигры в одиночку возможна и моя гипотеза подтверждена.