Компьютерные игры или видеоигры - вид программного обеспечения, предназначенный для организации игрового процесса, связи с партнёрами по игре, или сама выступающая в качестве партнёра .
Компьютерные игры используются в различных целях: некоторые видят в видеоиграх лишь средство развлечения или отдыха, другие применяют их для развития интеллекта и логического мышления, а для некоторых компьютерные игры становятся настолько важной частью жизни, что заменяют реальный мир, становясь наркотиком. Также видеоигры разделяются по жанрам: от обычных стрелялок от первого лица до сложных симуляторов.
С точки зрения разработки игровых событий существует 2 основных подхода:
1) Создание игровых событий вручную;
2) Создание систем процедурной генерации событий.
При создании игровых событий вручную, программист самостоятельно задает начальные условия для каждого такого события, а также не ограничивает себя в разнообразии типов игровых событий и условий их выполнения. Например, сложные головоломки с использованием физических законов.
Так как такой способ требует много времени и трудовых ресурсов, то в основном используется в крупнобюджетных игровых проектах ААА - класса, целью которых, в подавляющем большинстве случаев, является повествование, а не игровой процесс.
В случае с использованием систем процедурной генерации события должны создаваться по определённым условиям, а также привязываются к определенным тематикам. Например, генерация случайных имен неигровых персонажей в играх, расположение некоторых игровых объектов в мире, генерация лабиринтов, генерация миров.
Вся сложность данного способа зависит лишь от функционала генератора, поэтому генерации игровых ситуаций чаще всего применяется в независимых проектах, так как удешевляют и ускоряют разработку.
На сегодняшний день все больше разработчиков ориентируются на использование систем генерации. В своем цикле статей о процедурной генерации и ее будущем известный разработчик Марк Джонсон описывает огромное число возможных способов применения систем генерации. Эти статьи и послужили толчком к определению темы выпускной квалификационной работы.
На основе изложенных данных была поставлена цель: разработка системы автоматической генерации игровых ситуаций на примере RPG-игр.
Исходя из поставленной цели, были сформулированы следующие задачи:
1) Исследование существующих аналогов, и выявление их достоинств и недостатков;
2) Проектирование основных игровых подсистем;
3) Разработка игры, для демонстрации спроектированных игровых подсистем;
4) Демонстрация контрольного примера.
Целью выпускной квалификационной работы являлась разработка системы автоматической генерации игровых ситуаций в рамках RPG-игры. Разработанное программное обеспечение представлено в виде игры «40- летие ФВТ»
Выполнение работы было разделено на 3 раздела:
1) Анализ предметной области.
В ходе выполнения этого раздела были определены системы- конкуренты. Результат сравнения систем был продемонстрирован в виде таблицы (Таблица 1). На основе сравнения была четко определена проблема для ее дальнейшего решения. Далее был проведен анализ языков программирования. По его результатам было решено использовать язык программирования С#, а для, того чтобы упрощения разработки базовых компонентов был использован фреймворк MonoGame.
2) Проектирование игровой системы.
В ходе выполнения данного раздела были определены все основные компоненты подсистемы и выполняемые ими функции. Результатом их проектирования стал набор диаграмм (диаграмма прецедентов, структурная диаграмма взаимодействия, диаграмма игровых состояний, диаграмма взаимодействия объектов игрового мира) и блок схем (блок-схема алгоритма генерации точек входа и блок-схемы алгоритмов генерации стартовых позиций игр-головоломок).
3) Программная реализация игровой системы.
В ходе выполнения раздела были реализованы на языке C# и описаны все подсистемы. В результате были представлены диаграммы классов, описывающие подсистемы. Были раскрыты преимущества реализации для подсистемы игровых состояний, подсистемы игрового мира, подсистемы игр- головоломок. Для подсистемы генерации игровых ситуаций также были представлен листинг программы (приложение Б). Для подтверждения работоспособности игровой системы был продемонстрирован контрольный пример. Разработанная игровая система обладает большой гибкостью и способна к дальнейшему расширению.
В ходе выполнения выпускной квалификационной работы были продемонстрированы навыки, полученные в ходе обучения в Пензенском государственно университете: умение анализировать предметную область с целью выявления проблем для их решения, умение проектировать ПО и пользоваться средствами объектно-ориентированного моделирования в частности унифицированным языком моделирования (UML), умение программировать на объектно-ориентированном языке программирования (в частности C#), умение писать документацию, соответствующую всем необходимым стандартам.