Академический Документы
Профессиональный Документы
Культура Документы
АННОТАЦИЯ
ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ 5
ВВЕДЕНИЕ 6
1. ОСОБЕНОСТИ РАЗРАБОТКИ ИГР ВИРТУАЛЬНОЙ РЕАЛЬНСОТИ 7
1.1. Основные понятия 7
1.2. Объемы рынка виртуальной реальности 11
1.3. Обзор существующих платформ для разработки игр виртуальной
реальности 12
1.4. Обоснование выбора целевой платформы и инструментов для
разработки 13
1.5. Выбор методологии разработки ПО и ведения документации 16
1.6. Выводы 20
2. ПРОЕКТИРОВАНИЕ ГЕНЕТИЧЕСКОЙ МОДЕЛИ 21
2.1. Основные понятия 21
2.2. Законы Менделя 22
2.3. Описание модели пчелы 25
2.4. Проектирование модели пчел 27
2.5. Логика скрещивания 27
2.6. Выводы 29
3. ГЕЙМДИЗАЙН ИГРЫ И РАЗРАБОТКА ДИЗАЙН-ДОКУМЕНТА 30
3.1. Основные понятия 30
3.2. Основа игры – игровые столпы 32
3.3. Оценка целевой аудитории игры 34
3.4. Обзор похожих игр 35
3.5. Цели игры 37
3.6. Описание игрового цикла 39
3.7. Описание взаимодействия игрока с миром 41
2
3.8. Выводы 43
4. ОПИСАНИЕ РАЗРАБОТАННОЙ ИГРЫ 44
4.1. Описание интерфейса генов пчелы 44
4.2. Улей для селекции 45
4.3. Инвентарь игрока 54
4.4. Строительство ульев на участке 55
4.5. Интерфейс биистеария 57
4.6. Планы для дальнейшего развития 58
4.7. Выводы 63
ЗАКЛЮЧЕНИЕ 64
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 65
Приложение А 66
ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
3
Игровой движок – инструментарий для разработки игр, которые могут
быть запущенны на той или иной платформе.
Коммит (англ. Commit) – в системах управления версиями это
операция, которая отправляет последние изменения исходного кода в
репозиторий, делая эти изменения частью основной ревизии репозитория.
VR (англ. Virtual reality) или виртуальная реальность – созданный
техническими средствами мир, передаваемый человеку через его ощущения:
зрение, слух, осязание и другие.
ВВЕДЕНИЕ
5
быть исследована в различных направлениях. Это погружение может
заставить пользователей почувствовать, что они физически присутствуют в
виртуальном мире.
VR позволяет пользователям взаимодействовать с виртуальной средой
с помощью различных методов ввода, таких как ручные контроллеры,
распознавание жестов или даже отслеживание всего тела. Это позволяет
пользователям манипулировать объектами, перемещаться по среде и
участвовать в виртуальной деятельности.
Также, чтобы усилить ощущение присутствия, системы виртуальной
реальности могут предоставлять сенсорную обратную связь, например,
пространственный звук, тактильную обратную связь (вибрация или сила) или
даже обонятельную стимуляцию (генерация запаха). Эти элементы еще
больше погружают пользователей и делают ощущения более реалистичными.
VR находит применение в различных областях, включая игры,
развлечения, образование, учебные симуляторы, здравоохранение,
архитектуру, дизайн и многое другое. Он предлагает потенциал для
погружения и интерактивного опыта, который может быть как
развлекательным, так и практическим.
Стоит отметить, что технология VR со временем претерпела
значительные изменения: улучшилось разрешение дисплея, точность
отслеживания и общий пользовательский опыт. Различные платформы и
устройства VR отличаются по производительности, возможностям и
совместимости с различными системами.
VR продолжает оставаться активной областью исследований и
разработок, постоянно предпринимаются усилия по улучшению качества
изображения, снижению укачивания, расширению возможностей
взаимодействия и повышению доступности VR для широкой аудитории.
В сфере виртуальной реальности выделяются несколько платформ:
PC VR относится к виртуальной реальности, которая работает на базе
персонального компьютера. В эту категорию входят различные VR-
6
платформы и гарнитуры, включая Valve Index, HTC Vive, HP Reverb G2 и
гарнитуры Windows Mixed Reality. Платформы PC VR обеспечивают
высокую точность изображения, расширенные возможности отслеживания и
доступ к широкому спектру игр, приложений и опыта VR. Для оптимальной
работы этих платформ часто требуется мощный компьютер с совместимыми
техническими характеристиками.
Платформы PC VR были популярны среди энтузиастов VR и геймеров
благодаря их способности обеспечивать захватывающие и графически
интенсивные впечатления. Они обеспечивают доступ к более широкому
спектру контента и предлагают такие функции, как отслеживание в масштабе
комнаты, ручные контроллеры и передовые системы отслеживания
движений. С помощью PC VR пользователи могут подключать свои
гарнитуры VR к компьютеру и использовать его вычислительную мощность
для создания богатого и захватывающего виртуального опыта.
Oculus (Meta1) Quest 2 – это отдельная платформа VR, разработанная
компанией Oculus VR. Она предлагает беспроводной, универсальный VR
опыт с отслеживанием при помощи камер в шлеме и вычислительными
возможностями, устраняя необходимость в отдельном ПК или консоли.
Также данный шлем можно подключить к ПК и получить полноценный опыт
PC VR платформы.
PlayStation VR2 – шлем виртуальной реальности, разработанный
компанией Sony Interactive Entertainment, PlayStation VR2 – это платформа
VR, созданная специально для использования с игровыми консолью
PlayStation 5. Это доступный вариант для любителей консольных игр.
Pico Interactive – это китайская компания, которая разрабатывает
аппаратные и программные решения для виртуальной реальности. У них есть
собственная линейка VR-гарнитур, обычно называемых Pico VR, которые
обеспечивают погружение в виртуальную реальность.
8
обеспечивают высокое качество изображения, улучшенное отслеживание и
широкий выбор контента.
Гарнитуры на базе ПК обычно предлагают более сложные решения для
отслеживания, такие как внешние датчики или базовые станции,
размещенные в комнате, что позволяет точно отслеживать движения и
взаимодействия пользователя. Такие гарнитуры часто имеют доступ к
большим библиотекам VR, включая как игровые, так и неигровые
приложения.
Основным преимуществом проводных гарнитур VR является их
способность обеспечивать более интенсивную графику и погружение
благодаря вычислительной мощности, предоставляемой подключенным ПК.
Однако они менее портативны и требуют специального компьютера с
поддержкой VR.
В целом, автономные гарнитуры VR – это самостоятельные устройства,
которые обеспечивают портативность и удобство, в то время как проводные
(на базе ПК) гарнитуры VR полагаются на внешние устройства для
получения более мощных и захватывающих впечатлений. Каждый тип
гарнитуры имеет свои преимущества и соображения, в зависимости от
потребностей пользователя, предпочтений в мобильности и желаемого
уровня графической достоверности. Также некоторые автономные шлемы
виртуальной реальности можно подключить к ПК и получить полноценный
опыт.
9
продано 20 миллионов устройств линейки Quest, которые являются
автономными шлемами, в феврале 2023. В нее входит оригинальный Quest,
Quest 2 и Quest Pro. [2]
Другой крупной платформой является SteamVr. Исходя из оценок,
количество активных пользователей Steam ежемесячно на 2022 год можно
оценивать в 120 миллионов человек. [3] Также по известной статистике
количество пользователей на апрель 2023 года с шлемами виртуальной
реальности составляет 1.93% от количества пользователей. Из этих
показателей можно оценить, что активных пользователей с шлемами
виртуальной реальности порядка 2.316 миллиона. Также известно
распределение шлемов у пользователей, проходивших опрос. Так лидером
является шлем виртуальной реальности Oculus Quest 2 c 45.14%
пользователей. Далее идет Valve Index с 17.02%, Oculus Rift S с 11.71%, HTC
Vive c 6.21%, Oculus Rift c 5.26% и шлемы Windows Mixed Reality с 4.91%.
[4]
Еще одной платформой являются шлемы от японской PlayStation. На
момент конца 2019 года известно, что было продано более 5 миллионов
шлемов оригинальной PS VR. [5] А также продано более 600 тысяч копий в
первые 6 недель, вышедшего недавно 22 февраля 2023 года шлема
виртуальной реальности PS VR2. [6]
10
визуального программирования при помощи Blueprint и поддержка
программирования на C++ делают Unreal Engine гибким и универсальным
для VR-разработки.
Unity – один из наиболее широко используемых игровых движков для
VR-разработки. Он предлагает надежную поддержку VR и имеет
специальный набор инструментов для разработки VR под названием Unity
XR. Unity предоставляет удобный интерфейс, большое сообщество и
обширную документацию, что делает его популярным выбором как для
начинающих, так и для опытных разработчиков.
Godot Engine – это игровой движок с открытым исходным кодом,
который приобрел популярность в последние годы. Он поддерживает VR,
позволяя разработчикам создавать VR-игры и опыт с помощью визуального
или традиционных языков программирования, таких как C#, GDScript. Godot
Engine известен своей простотой, легковесностью и активным сообществом.
Также существует вариант разработки собственного игрового движка.
эффекты.
программирования на C++.
11
Минусы можно выделить следующие:
Минусы:
требовательных VR-проектов.
некоторых пользователей.
Godot Engine имеет плюсы:
12
● Открытый исходный код и бесплатное использование.
(C# и GDScript).
Минусы:
движками.
14
готовыми движками. Поэтому придется полагаться на собственный опыт и
ресурсы для устранения неполадок и поддержки.
15
случае внесения каких-либо правок в процессе разработки может вызвать
большие разрушительные проблемы во всем процессе.
V-образная модель – это усовершенствованная модификация каскадной
модели. В данной модели описываются одновременно этапы разработки и
как каждый из этапов будет тестироваться. К плюсам данного подхода
можно отнести малое количество ошибок в архитектуре программного
обеспечения, но к минусам стоит отнести, если при разработке архитектуры
была допущена ошибка, то вернутся и исправить ее будет дорого.
Инкрементная модель состоит в том, что создается версия продукта с
основным функционалом, если программный продукт всех устраивает, то
начинают добавляться и разрабатываться более мелке функциональности.
При таком подходе можно быстро получить фидбек и вносить правки в
малые части продукта. В данном подходе важно контролировать процесс
разработки, чтобы команда не распылялась на второстепенные задачи и в
первую очередь дорабатывалась основная функциональность
разрабатываемого программного продукта.
Итерационная модель заключается в разбиении разработки проекта на
части или этапы. На каждом таком этапе проходит жизненный цикл
разработки программного обеспечения. В общей своей совокупности все
этапы составят конечный результат. С каждым этапом разработка
приближается к конечному желаемому результату. По ходу разработки могут
уточнятся требования. При таком подходе снижаются риски провала при
разработки программного продукта, так как на конце каждой итерации
получается уже какой-то, но уже полноценный продукт. Также данный
подход может быть очень удобен если проект большой или очень большой.
Спиральная модель данный вариант используется в случаях дорогих
разработок или когда важно не допустить ошибки при разработке. Суть
данного метода заключается в оценке рисков. Процесс идет от малого к
большему. Каждый шаг состоит из планирования, анализа рисков,
16
конструирования и анализа полученных результатов. Если результат
устраивает, то берется более комплексная задача.
Экстремальное программирование – данный вид модели заключается в
том, что это является неформальным подходом в разработке. В данном
случае выбирается самое простой и быстрый способ разработки, со всеми
вытекающими. Цель данного метода в существенном сокращении времени
разработки. Часто используется вместе с парным программированием.
Гибкая методология разработки – данная модель в себя включает
несколько различных течений. Например, Scrum – в основе данной модели
лежат еженедельные спринты в течении которой происходит работа над
продуктом. Перед каждым спринтом происходит планирование задач и
оценивается список еще не решенных задач. Еще как разновидность течения
можно рассмотреть Kanban. В данной модели проект делится на этапы,
которые визуализируются на Kanban-доске. На данной доске имеются
колонки: планируется, в разработке, тестирование, релиз и т.п. Также на
доске имеются карточки с задачами. По мере выполнения задачи ее карточка
постепенно перемещается по доске и проходит каждый процесс разработки.
Из всех рассмотренных моделей за основу была взята комбинация
итеративной модели и модели гибкой разработки. Ключевые преимущества,
которые дает эта комбинация: вся разработка делится на малые шаги, есть
формирование всех задач происходит в процессе разработки, при помощи
декомпозиции удается больше задачи разделять на малые. Таким образом,
возможно тестирование каждой такой итерации и так можно гибко влиять на
сам продукт и вносить в него правки в короткие сроки.
В качестве Agile-доски и ведения документации использовался сервис
Notion. В нем было выделено несколько колонок таких как:
17
● To Do – задачи, которые были определены в процессе
разработки.
18
Риснуок 2 – Разделение документации на разделы.
Также в процессе разработки был использован Git-репозиторий в
GitHub. Пример коммитов можно увидеть на рис. 3.
1.6. Выводы
19
Таким образом, были рассмотрены основные платформы игр
виртуальной реальности. Было рассмотрено состояние рынка. В ходе
данного раздела был выбран игровой движок Unreal Engine для разработки
программного продукта. Также была выбрана методология разработки и
выбрано место для ведения документации проекта.
20
2.1. Основные понятия
В данном разделе будут использоваться следующие понятия в ходе
изложения.
Ген – в классической генетике определяется как наследственный
фактор, который несет информацию об определённом признаке или функции
организма и который является структурной и функциональной единицей
наследственности [9].
Хромосомой являются нуклеопротеидные структуры в ядре
эукариотической клетки, в которых сосредоточена большая часть
наследственной информации и которые предназначены для её хранения,
реализации и передачи [10].
Диплоидный организм – это организм, имеющий пару хромосом.
Гомологичными хромосомами является пара хромосом с одинаковым
набором генов, но сами хромосомы могут быть не идентичны друг другу.
Аллели - различные формы одного и того же гена, расположенные в
одинаковых участках (локусах) гомологичных хромосом, определяют
направление развития конкретного признака. В диплоидном организме,
может быть два одинаковых аллеля одного гена, в этом случае организм
называется гомозиготным, или два разных, что приводит к гетерозиготному
организму [11].
Мутацией является стойкое изменение генома, которое может быть
унаследовано потомками [9].
Полимерия — это взаимодействие неаллельных множественных генов,
которые однозначно влияют на развитие одного и того же признака. Степень
проявления признака зависит от количества генов, и полимерные гены
обозначаются одинаковыми буквами, а аллели одного локуса имеют
одинаковый нижний индекс.
Такое взаимодействие генов может быть кумулятивным или
некумулятивным. В случае кумулятивной (накопительной) полимерии
21
степень проявления признака зависит от суммирования эффектов генов. Чем
больше доминантных аллелей генов, тем сильнее проявляется данный
признак. При расщеплении потомства F2 по фенотипу в таком случае можно
ожидать соотношение 1:4:6:4:1, при условии, что взаимодействуют две пары
неаллельных генов, а гибриды F1 являются дигетерозиготами.[12]
22
Для примера работы данных законов можно рассмотреть пример. Пусть
объектом рассмотрения выступают породы котов. Причем имеется 2 породы,
которые различаются по двум признакам. Первый признак – цвет шерсти он
может быть каштановым или альбиносом. Второй признак длина хвоста она
может быть короткая или длинная. Причем каштановый цвет и короткий
хвост являются доминантными признаками. А альбинос и длинный хвост
является рецессивными признаками.
Пусть имеется две породы коты альбиносы с коротким хвостом и коты
с каштановой шерстью и длинным хвостом. Тогда распределение возможных
пород для первых двух поколений можно описать рис. 4.
24
Рисунок 5 – Расцветка пчел лугового, лесного и речного видов
Виды пчел разделяются на тиры. Тир – группа видов, имеющая одну
ценность продукции. Всего в игре насчитывается 5 тиров. Разделение видов
по тирам и стоимости продукции в минуту представлено в табл. 1.
Таблица 1 – Распределение видов пчел по тирам (перенос таблицы)
Вид пчелы Тир Ценность продукции
Луговая
Лесная 1 100
Речная
Растительная
Грибная
2 200
Ягодная
Древесная
Картофельная
Пшеничная
3 500
Виноградная
Помидорная
Мучная
Дощетчатая 4 800
Бумажная
Хлебная
5 1200
Винная
25
Коробочная
Кетчупная
Данный признак наименее корректный с точки зрения реальной жизни.
И имеет больше ценность сделать в игре некоторую прогрессию для игрока.
Признак скорости описывается 4 парами генов. Итоговое значение
этого признака формируется по правилу полимерии, т.е. по количеству
доминантных генов. Таким образом, доминантных генов может быть от 0 до
8. В зависимости от значения признака скорости устанавливается множитель,
который влияет на количество продукции, которую производит пчела.
Распределение коэффициента от значения признака можно увидеть в табл. 2.
Таблица 2 – Распределение коэффициента продуктивности
Призна 0 1 2 3 4 5 6 7 8
к
Коэфф. 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
Признак плодовитости описывается 5 парами генов. Причем можно
считать, что каждая пара генов определяет может ли пчела воспроизвести
потомство. Т.е. если в паре генов есть хотя бы один доминантный ген, то
данная пара увеличивает значение плодовитости пчелы на единицу. Из этого
следует, что пчела может родить до 5 новых пчел.
26
производятся за счет побитовых операций. С их помощью возможно
производить большое количество операций в процессе скрещивания.
Для того чтобы фиксировать какие виды были исследованы был
добавлен контейнер TMap с ключом в качестве вида пчелы и значением лжи
или истины. Для базовых пчел Лугового, Лесного и Речного видов были
добавлены соответствующие методы для быстрого создания объектов.
Стоит также отметить, что в исходном коде модели пчелы можно
увидеть упоминание других полей с признаками. Такие как цвет глаз пчел, их
эффект и радиус действия эффекта. Данные признаки находятся в разработке
и не были реализованы до конца на момент написания данной ВКР. О планах
на эти признаки можно будет узнать из последнего раздела данной работы.
27
В данной модели 3 признака описываются 10 парами генов, каждая
пара независимо друг от друга проходит процесс скрещивания.
Также в процессе скрещивания возможна мутация. В случае генов,
которые кодируют признаки скорости и плодовитости, то стохастически
возможна ситуация, когда ген меняет свою аллель. В данном случае ген
может быть доминантным или рецессивным, т.е. возможна замена
доминантного гена на рецессивный и наоборот. Мутация для генов вида
имеет свои особенности. Так, если от родителей были выбраны по одному
гену одного вида, то шанс мутации ниже, чем если бы они были разными. В
случае успешного события мутации для определения нового вида происходит
следующий процесс: у исходного гена берется значение к какому тиру
относится данный вид, далее возможно изменение этого тира от -2 до +2 с
некоторым распределением. При определении тира происходит случайный
выбор вида в рамках этого тира. Таким образом, игрок может открыть новый
вид еще невиданного пчелозавра.
Исходный код скрещивания представлен в приложении Б. В качестве
констант было задано, что мутация в генах происходит с шансом в 5%. А для
генов, которые отвечают за признак вида в случае, если они одинаковые, то
10% и 40%, если они различны. Изменение тира при мутации распределяется
следующим образом: 10% шанс, что тир изменится на +2 или -2, 20% шанс,
что тир изменится на +1 или -1, и 40% шанс, что он не изменится.
2.6. Выводы
В итоге, в данном разделе были рассмотрены основные определения
генетики, необходимые для погружения в генетическую часть игры. Была
описана модель разработанной пчелы и реализация, которая используется в
игре. Также рассмотрен процесс скрещивания пчел и то, как гены передаются
от родителей к дочерним пчелам при помощи стохастических процессов.
28
3. ГЕЙМДИЗАЙН ИГРЫ И РАЗРАБОТКА ДИЗАЙН-ДОКУМЕНТА
29
3.1. Основные понятия
Игровой дизайн (Геймдизайн) – это процесс создания общей
структуры, механики, правил и эстетики видеоигры. Он включает в себя
определение целей, задач и взаимодействий, которые игроки будут
испытывать на протяжении всей игры. Геймдизайн очень важен при
разработке игр, поскольку он служит основой для создания увлекательного и
приятного игрового процесса.
Геймдизайн необходим при разработке игр по нескольким причинам:
Удержание игроков – эффективный геймдизайн помогает захватить и
поддерживать интерес игроков, предоставляя захватывающие задачи,
вознаграждение за прохождение и чувство выполненного долга. Он
фокусируется на создании увлекательных игровых механик и обеспечении
удовлетворительного опыта игрока.
Дизайн игры устанавливает четкое видение и направление для команды
разработчиков. Он определяет цели игры, основные элементы геймплея и
общую структуру, обеспечивая согласованность действий всех членов
команды и работу над общей целью.
Дизайн игры способствует итеративному процессу разработки,
позволяя постоянно дорабатывать и улучшать игру. Он обеспечивает основу
для тестирования и сбора отзывов игроков, что помогает выявить области,
нуждающиеся в корректировке или усовершенствовании.
Разработка игры включает в себя решение проблем и балансировку
различных элементов, таких как сложность, темп и развитие игрока.
Дизайнеры анализируют потенциальные проблемы и разрабатывают
творческие решения, чтобы игра была приятной и справедливой для игроков.
Дизайн-документ – это полный документ, в котором подробно
описываются детали и спецификации дизайна игры. Он служит чертежом для
команды разработчиков, обеспечивая централизованную ссылку на все
аспекты дизайна игры. Как правило, документ включает в себя:
30
Концепция и обзор – описывает концепцию игры, основные игровые
механики и целевую аудиторию. В нем содержится обзор уникальных
особенностей игры и точек продаж.
Сюжет и персонажи – если применимо, то в дизайн-документ
включаются элементы повествования игры, в том числе сюжет, обстановка и
персонажи. В нем описывается сюжет игры, предыстория персонажей и их
роли в игре.
Механика игрового процесса – подробно описывает основную
механику игрового процесса, включая элементы управления, действия и
взаимодействия, доступные игроку. Здесь определяются правила, цели,
условия победы/поражения и системы развития.
Уровни и окружение – описывает различные уровни, окружения или
этапы игры. В нем содержится информация о планировке, дизайне и
ключевых особенностях каждого уровня.
Рекомендации по художественному и звуковому оформлению –
содержит рекомендации по визуальным и звуковым элементам игры,
включая художественный стиль, дизайн персонажей, окружение, музыку и
звуковые эффекты.
Пользовательский интерфейс – определяет расположение,
функциональность и визуальное оформление пользовательского интерфейса
игры, включая меню, элементы HUD и интерактивные компоненты.
Технические требования – описывает технические характеристики,
такие как поддерживаемые платформы, целевые показатели
производительности, а также любые конкретные технологии или
инструменты, необходимые для разработки.
Проектные документы различаются по длине и уровню детализации в
зависимости от масштаба и сложности игры. Они служат справочником для
команды разработчиков, обеспечивая четкое понимание целей и требований
к дизайну игры.
31
3.2. Основа игры – игровые столпы
В разработке игр игровые столпы означают основные принципы или
ключевые элементы, которые определяют основу и идентичность игры. Это
основные концепции, особенности или аспекты, которые определяют дизайн
и разработку игры. Игровые столпы служат направляющей основой и
помогают команде разработчиков сосредоточиться на создании целостного и
убедительного игрового процесса.
Вот несколько ключевых моментов, которые необходимо понимать в
отношении игровых столпов:
Основной фокус дизайна – игровые столпы представляют собой
центральное направление дизайна или основные области, на которых
делается акцент в игре. Они выделяют ключевые аспекты, которые делают
игру уникальной, приятной и отличают ее от других игр того же жанра или
категории.
Опыт игрока: Игровые столпы разрабатываются с учетом опыта игрока.
Они определяют основные элементы, которые будут вовлекать и развлекать
игроков на протяжении всей игры. Столпы служат основой для создания
определенного типа впечатлений или вызывают определенные эмоции у
игроков.
Цели и видение дизайна: Игровые столпы помогают определить цели
дизайна и общее видение игры. Они формулируют предполагаемый опыт
игрока, механику геймплея, эстетику, элементы повествования или любые
другие важные аспекты, которые имеют решающее значение для
идентичности игры.
Рамки для принятия решений: Игровые столпы обеспечивают основу
для принятия дизайнерских решений на протяжении всего процесса
разработки. Они служат точкой отсчета для обеспечения того, чтобы все
дизайнерские решения соответствовали основным принципам и
поддерживали согласованность с предполагаемым опытом игрока.
32
Коммуникация и фокус: Игровые столпы помогают донести видение
игры и цели дизайна до команды разработчиков и заинтересованных сторон.
Они обеспечивают общее понимание идентичности игры и служат компасом,
позволяющим команде сосредоточиться на создании задуманного игрового
процесса.
Примерами игровых столпов могут быть такие понятия, как
захватывающий сюжет, принятие стратегических решений, быстрое
действие, настройка игрока, исследование и открытие, кооперативный
геймплей или любой другой ключевой аспект, определяющий уникальные
преимущества игры.
Выявление и определение игровых столпов на ранних этапах
разработки помогает направлять процессы проектирования, разработки и
принятия решений. Они служат точкой отсчета для обеспечения того, чтобы
игра оставалась верной своему замыслу и предоставляла игрокам целостный
и удовлетворяющий их игровой опыт.
В процессе разработки игры были выделены следующие столпы:
1. Собери их всех – продвижение и открытие новых видов пчел
побуждает в том, чтобы найти всевозможные комбинации для скрещивания.
В игре игрок может отслеживать свой прогресс при помощи специального
справочника
2. Еще одну выведу и... (еще 5 минуточек...) – короткие итерации,
которые можно хорошо масштабировать. За счет генетической системы
возможно выводить новый вид пчел за мало число итераций. Каждый раз
открывая новый вид пчел игрок продвигается по тирам видов и может
продвигаться все выше и выше.
3. Медитативность и иммерсивность – игровой процесс не заточен на
реакции игрока, ему не надо никуда спешить. За счет VR игрок может
взаимодействовать с механизмами.
4. Прогрессия и автоматизация – в процессе игры для пользователя
открывается все больше возможностей для автоматизации прогресса и
33
повышения эффективности получаемой продукции. С прогрессией число
рутинных действий сокращается и появляется больше возможностей влиять
на гены пчел.
34
и игр-симуляторов, поможет привлечь более целенаправленную целевую
аудиторию. К таким сообществам могут относиться энтузиасты
пчеловодства, сообщества моддинга Minecraft и форумы игр-симуляторов.
Природные и научные образовательные программы: данная игра может
заинтересовать образовательные учреждения, природные центры или
научные программы, которые включают опыт виртуальной реальности в свои
учебные программы. Эти организации могут использовать игру в качестве
образовательного инструмента для изучения пчел, генетики и экологических
концепций. Т.к. в современных реалиях возможно производить обучение с
геймификацией. С таким подходом возможно повышение интереса к
изучаемой теме. В итоге, такая игра может использоваться с целью
популяризации генетики.
35
результаты разведения, генетические модификации и автоматизировать
задачи, связанные с пчеловодством. Таким образом расширяя конечную
часть игры.
Extra Bees – это еще одна модификация, дополняющая механику
пчеловодства в Forestry. Она добавляет дополнительные виды пчел, мутации
и варианты сот, чтобы расширить разнообразие пчел, доступных для
разведения. Модификация создает новые задачи и возможности для игроков,
побуждая их глубже вникать в сложности пчеловодства.
Пчеловодство в Forestry предлагает широкий спектр ценных ресурсов и
продуктов, помимо меда. Пчелы могут производить пчелиный воск, пыльцу,
маточное молочко, прополис и многое другое, что можно использовать для
изготовления различных предметов, включая инструменты, машины и
специализированное пчеловодческое оборудование.
Также существует игра Apico, которая разрабатывалась двумя инди-
разработчиками и вышла на цифровых площадках 20 мая 2022 года. Apico –
это неспешный симулятор пчеловодства, посвященный разведению, сбору и
сохранению пчел. В игре уникальным образом сочетаются сбор ресурсов,
биология и мини-игры по пчеловодству, а идеи взяты из реальной жизни и
фантазийного пчеловодства и цветоводства. Цель игры это в ходе
путешествия заново открыть утраченные виды, вывести новых пчел и помочь
заселить острова.
Также если рассматривать игры с темой генетики и выведения, то стоит
отметить Rival Stars Horse Racing. Rival Stars Horse Racing – это мобильная
игра, разработанная новозеландской студией PikPok. Игра позволяет игрокам
окунуться в мир скачек, где они могут разводить, тренировать и участвовать
в скачках на собственных лошадях.
Если рассматривать игру с точки зрения селекции, то можно выделить,
что игроки могут выбирать определенные комбинации родительских
лошадей для выведения потомства. Черты, статистика и возможности
36
родительских лошадей влияют на характеристики потомства. Сюда входят
такие факторы, как скорость, выносливость, ускорение и темперамент.
Выборочно разводя лошадей с желательными чертами и
характеристиками, игроки могут стремиться к созданию сильных и
конкурентоспособных родословных. Разведение успешных лошадей
позволяет передать их превосходные черты будущим поколениям, улучшая
общее качество и производительность лошадей в их конюшне.
В игру включена генетическая система, которая вносит изменения в
черты потомства. Это означает, что каждый жеребенок, рожденный в
результате разведения, будет иметь свою уникальную комбинацию
характеристик, унаследованных от родителей. Это добавляет элемент
неожиданности и открытий, поскольку игроки стремятся вывести лошадей с
исключительными качествами.
Игроки могут стратегически планировать свои действия по разведению,
чтобы максимизировать шансы на получение высокопродуктивных жеребят.
Они могут анализировать черты и статистику своих лошадей, изучать
родословные и учитывать такие факторы, как родословная, происхождение и
история скачек, чтобы принимать обоснованные решения о разведении.
Разведение – это только начало. После рождения жеребенка игроки
могут воспитывать и тренировать его, чтобы он полностью раскрыл свой
потенциал. С помощью тщательных тренировок, правильного питания и
внимательного ухода игроки могут сформировать способности своих
лошадей и подготовить их к успешным скачкам.
37
вовлечение в игру, создавая значимый и удовлетворяющий опыт. Вот текст о
целях игры с точки зрения игрового дизайна:
Цели в игровом дизайне служат нескольким целям.
Обеспечивают направление – цели дают игрокам четкое ощущение
направления и цели в игре. Они закладывают основу для путешествия
игрока, устанавливая цели, которые необходимо выполнить. Четкие цели
помогают игрокам ориентироваться в игровом мире, давая ощущение
продвижения вперед и достижения цели.
Мотивируют и вовлекают – цели создают мотивацию и вовлеченность,
создавая проблемы и вознаграждения. Игрокам приходится преодолевать
препятствия, решать головоломки, побеждать врагов или выполнять задания,
чтобы достичь поставленных целей. Удовлетворение от достижения цели
стимулирует продолжение игры и желание исследовать больше того, что
предлагает игра.
Формируют игровой процесс – цели формируют игровой процесс,
влияя на механику, темп и дизайн уровней. Они создают основу для игровых
задач, определяя типы взаимодействий, решений и стратегий, которые
игроки должны использовать. Цели также влияют на кривую сложности и
течение игрового процесса, обеспечивая сбалансированный и увлекательный
опыт.
Способствуют развитию самостоятельности игроков – цели наделяют
игроков самостоятельностью и автономией в игровом мире. Они позволяют
игрокам делать выбор и принимать решения, которые влияют на их
продвижение к достижению целей. Это чувство самостоятельности повышает
погружение игрока в игру и его инвестиции в нее, поскольку он чувствует
ответственность за свои действия и их результаты.
Повышение удовлетворенности игрока – цели вызывают чувство
удовлетворения и удовлетворения, когда они достигнуты. Достижение
сложной цели или прохождение важного этапа вызывает чувство
удовлетворения и прогресса. Такое удовлетворение побуждает игроков
38
продолжать игру, стремиться к более сложным целям или исследовать
дополнительный контент.
Создание значимого опыта – хорошо продуманные цели способствуют
созданию значимого опыта для игроков. Согласовывая цели с
повествованием, тематикой или механикой игры, игроки могут
почувствовать более глубокую связь с игровым миром и его обитателями.
Осмысленные цели способствуют эмоциональному вовлечению и могут
оказать длительное воздействие на игроков.
В целом, цели в игровом дизайне служат движущей силой игрового
процесса, обеспечивая игрокам направление, мотивацию и чувство
выполненного долга. Они формируют игровой опыт, способствуют развитию
самостоятельности игрока и вносят вклад в общее удовлетворение и смысл,
получаемый игроками от игры. Хорошо продуманные цели играют важную
роль в создании увлекательного и захватывающего игрового процесса.
В рамках разрабатываемой игры цель можно разделить на две части.
Первая часть – это необходимость открыть все виды пчел, которые есть в
игре. Эта цель сподвигает игрока заниматься селекцией и скрещивать одну за
другой пчел, чтобы открыть новый вид. Вторая часть – это собрать
определенную сумму денег для спасения пчел. Данная цель мотивирует
игрока в процессе селекции выводить более продуктивных пчел, чтобы
сократить время достижения данной цели.
39
Игровой цикл в геймдизайне обычно состоит из следующих элементов:
Цель и задачи – игровой цикл начинается с четкой цели или задачи,
которую игроки должны достичь. Это может быть прохождение уровня,
победа над врагами, решение головоломок или достижение определенного
этапа в игре.
Действия и игровая механика – игроки выполняют ряд действий или
игровых механик, которые необходимы для продвижения к цели. Эти
механики могут включать движение, бой, решение головоломок, управление
ресурсами, принятие решений или любые другие интерактивные элементы,
которые определяют основной игровой процесс.
Задачи и препятствия – в игровой цикл вводятся задачи и препятствия,
которые игроки должны преодолеть, чтобы продвинуться вперед. Эти задачи
могут различаться по сложности и уровню сложности, требуя от игроков
использования своих навыков, стратегии или умения решать проблемы для
их преодоления.
Обратная связь и вознаграждения – в процессе прохождения игрового
цикла игроки получают обратную связь и вознаграждение за свои действия.
Обратная связь может быть в виде визуальных и слуховых подсказок,
увеличения очков, повышения уровня, бонусов, достижений или любых
других способов признания и поощрения прогресса игрока.
Продолжение цикла – после того как игроки завершили цикл действий,
задач и наград, игровой цикл продолжается, представляя новые задачи или
развивая существующие. Этот итеративный процесс гарантирует, что игра
остается увлекательной и предлагает постоянное ощущение прогресса и
достижений.
Дизайн игрового цикла имеет решающее значение для создания
приятного и захватывающего игрового процесса. Он должен обеспечивать
баланс между созданием значимых задач и предоставлением приятных
вознаграждений, поощряя игроков продолжать играть в игру и продвигаться
40
к своим целям. Игровой цикл формирует основу игрового процесса и
оказывает большое влияние на общий дизайн игры и вовлеченность игроков.
В игре про селекцию пчел можно разбить на следующие части:
1. Игрок рассматривает и выбирает пчел для будущей селекции исходя из
имеющихся характеристик с целью вывести новые виды или закрепить
какие-то гены по определенному признаку для будущих поколений.
2. Выбирает улей, в котором он будет скрещивать выбранных пчел. Если
все ульи на участке заняты, то он может поставить новый или
освободить один из имеющихся, если в нем пчелы уже не так
актуальны.
3. Производит процесс скрещивания пчел.
4. В результате со временем в улье рождаются новые пчелы, унаследовав
гены от родителей и мутировав с некоторым шансом.
5. Далее игрок может забрать определенных пчел в инвентарь для
будущей селекции или оставить пчел в улье, чтобы те производили
продукцию для достижения одной из финальных целей игры. И далее
цикл повторяется.
41
поскольку пользователи могут смотреть вокруг, наклоняться и физически
взаимодействовать с объектами в виртуальном мире.
Контроллеры позволяют пользователям захватывать, манипулировать и
взаимодействовать с виртуальными объектами, используя естественные
жесты и движения рук.
Благодаря отслеживанию рук или контроллерам пользователи могут
выполнять различные жесты, такие как: указание, захват, бросок или нажатие
кнопок для взаимодействия с объектами или запуска действий в виртуальном
мире. Присутствие рук, возможность видеть и двигать своими виртуальными
руками, добавляет ощущение погружения и реалистичности.
Тактильная обратная связь – это технология, которая обеспечивает
физические ощущения в руках или теле пользователя, имитируя чувство
осязания и усиливая погружение. Некоторые системы VR включают
тактильную обратную связь через контроллеры, перчатки или специальные
тактильные устройства, позволяя пользователям ощущать вибрацию,
текстуру или даже сопротивление при взаимодействии с виртуальными
объектами.
VR предлагает различные методы передвижения и навигации в
виртуальной среде. Это может быть телепортация, когда пользователи
выбирают место и мгновенно оказываются там, или плавная передвижение,
когда пользователи физически перемещаются в ограниченном пространстве
или используют стики на контроллерах для имитации движения.
VR-опыт часто предоставляет возможности для взаимодействия с
окружающей средой. Пользователи могут открывать двери, брать в руки и
рассматривать предметы, взаимодействовать с рычагами или
переключателями, вызывать события или реакции в виртуальном мире. Такой
уровень взаимодействия придает глубину и реалистичность общему
впечатлению.
Многопользовательские VR-проекты позволяют пользователям
взаимодействовать с другими игроками в общих виртуальных пространствах.
42
Они могут общаться с помощью голосового чата, жестов или виртуальных
аватаров, усиливая социальный аспект VR и способствуя сотрудничеству или
соревновательной игре.
В игровом процессе с селекцией пчел можно выделить следующие
варианты взаимодействия с миром. Один из главных – это взаимодействие с
пчелами. Оно позволяет игрокам взаимодействовать с отдельными пчелами в
виртуальном мире. Они могут брать их в руки, посмотреть генетическую
информацию с оценкой пчелы для селекции. Возможность взаимодействия с
пчелами вблизи способствует общему погружению.
При помощи контроллеров игроки могут также взаимодействовать с
ульями, могут устанавливать и удалять их на виртуальном участке фермы. В
этих ульях пользователи могут производить скрещивание выбранных пчел.
Перемещение с телепортацией является одним из наиболее
комфортных для игроков, когда нет необходимости часто перемещаться в
пространстве. А также является реализованным исходно в базовом примере в
Unreal Engine.
Важно учесть, что пользователи могут играть в игру как стоя, так и
сидя. Для того, чтобы, сидя не было дискомфорта с поднятием предметов с
пола, если они упадут важно добавить приседание на горячую клавишу.
Также пользователи могут взаимодействовать с инвентарем, который
предоставляет функциональность с хранением пчел, на контроллерах игрока.
В нем можно удобно смотреть какие есть пчелы и их характеристики.
Для отслеживания прогресса игроки могут вызвать меню на
контроллере, где смогут увидеть какие виды пчел уже открыты и к какому
тиру они относятся. А также могут увидеть сумму, которую они набрали для
спасения пчел, чтобы завершить игру.
3.8. Выводы
Таким образом, была рассмотрена разработка игры с точки зрения
геймдизайна. Были описаны основные игровые столпы, на основе которых
43
строится игра. Была оценена целевая аудитория игры, рассмотрены игры в
похожем жанре. В ходе раздела были описаны цели игры и основной игровой
цикл, а также учтены моменты взаимодействия игрока с миром виртуальной
реальности.
4. ОПИСАНИЕ РАЗРАБОТАННОЙ ИГРЫ
44
4.1. Описание интерфейса генов пчелы
Одна из сложностей разработки игры в виртуальной реальности с
большим объемом информации является размещение данной информации.
Из-за того, что экраны в шлемах особенно первых ревизий времен HTC Vive
имеют низкое разрешение на экранах, где пользователь еще может
рассмотреть расстояние между пикселями называется эффект москитной
сетки. Пример данного эффекта можно увидеть на рис. 6.
45
отдельный ген представлен в виде кружочка определенного цвета.
Доминантные гены имеют синий цвет, а рецессивные красный. Также каждая
пара генов визуально выделяется за счет того, что они находятся в капсуле.
Причем, если признак подчиняется правилу полимерии, то все пары генов
находятся на общем фоне в виде еще одной капсулы. Таким подходом можно
выделить, что каждый доминантный ген имеет вес для определения
финального значения признака.
В случае признака плодовитости важно больше наличие одного
доминантного гена для того, чтобы увеличить значение признака на единицу.
Пример как выглядит данный интерфейс в игре изображен на рис.
46
Для отображения вызывается функция, которая принимает объект
BeeModel описанный в разделе генетической модели пчелы. В зависимости
от значений генов устанавливаются необходимые материалы.
47
Из результатов генерации можно понять, что были сгенерированы
ульи, которые можно считать вариантом естественной среды обитания,
которые никак не подходят для цели размещения ульев на фермерском
участке. Поэтому было произведено уточнение запроса к нейросети. Были
получены новые результаты генерации для запросов «modular beehive with 3
hive frame that holds the honeycomb for apiary lowpoly» и «modular beehive with
hive frames that holds the honeycomb for apiary lowpoly» изображенные на
рис. .
48
Рисунок – Пример генераций запросов
В итоге, был выбран предпоследний вариант генерации, так как он
имеет достаточно модульный вид, а также выглядит в форме соты и в целом
имеет простую для реализации геометрию. Создание модели производилось
при помощи программного средства под названием Blender.
Blender – это универсальное и мощное программное обеспечение с
открытым исходным кодом, используемое для 3D-моделирования, анимации
и рендеринга. Он предоставляет полный набор инструментов и функций,
которые позволяют художникам, дизайнерам и аниматорам создавать
потрясающий визуальный контент. С помощью Blender пользователи могут
создавать сложные 3D-модели, анимировать объекты и персонажей,
моделировать динамические эффекты, рендерить реалистичные изображения,
а также выполнять задачи видеомонтажа.
Возможности 3D-моделирования в Blender позволяют создавать
сложные модели, используя такие техники, как полигональное
моделирование, скульптурирование и процедурное моделирование.
Художники имеют точный контроль над созданием и манипулированием
геометрией, что позволяет им воплощать свои творческие идеи в жизнь.
Инструменты анимации в Blender предлагают ряд техник, включая
покадровую анимацию, скелетную и процедурную анимацию. Это позволяет
аниматорам создавать плавные и реалистичные движения персонажей и
49
объектов, в результате чего получаются убедительные и динамичные
анимации.
Программное обеспечение также предлагает возможности для создания
визуальных эффектов и моделирования. Пользователи могут генерировать
эффекты частиц, такие как огонь и дым, моделировать поведение ткани и
создавать симуляции жидкостей. Эти возможности способствуют созданию
реалистичных и захватывающих визуальных эффектов.
Blender включает модуль видеомонтажа, позволяющий импортировать
и редактировать видеоматериалы, добавлять визуальные эффекты и
соединять различные слои. Эта интегрированная функциональность
устраняет необходимость во внешнем программном обеспечении для
редактирования видео и упрощает рабочий процесс постпроизводства.
Одним из заметных преимуществ Blender является поддержка скриптов
и настройки с помощью Python. Пользователи могут автоматизировать
задачи, создавать собственные инструменты и расширять функциональность
Blender в соответствии с требованиями конкретного проекта.
Открытый исходный код Blender способствует формированию
активного сообщества разработчиков и художников, которые вносят свой
вклад в его постоянное развитие. Это приводит к появлению множества
дополнений, учебников и ресурсов, которые расширяют возможности Blender
и оказывают поддержку его пользователям.
В итоге, была получена модель улья изображенная на рис. .
50
Рисунок – Полученная модель улья
51
заданном направлении и проверяет наличие объектов, пересекающих эту
линию. Трассировка объектом, например, трассировка коробкой или сферой,
проверяет столкновения в пределах определенной формы. Эти функции
трассировки обеспечивают гибкость при обнаружении столкновений и могут
быть использованы для конкретных сценариев. Например, при событии
нажатия на кнопку или трассировкой луча каждый кадр из контроллера
игрока.
Также Unreal Engine предоставляет функции запросов, которые
позволяют выполнять различные проверки, связанные со столкновениями.
Например, вы можете использовать такие функции, как
LineTraceSingleByChannel или SphereTraceSingleByChannel, чтобы проверить,
есть ли блокирующие объекты вдоль линии или внутри сферы,
соответственно. [15]
В данном случае для регистрации событий пересечения используются
события OnComponentBeginOverlap и OnComponentEndOverlap. Для каждой
сферы фиксируется состояние в виде имен акторов, которые первыми
пересек праву и левую сферы. Также учитывается логика при которой первая
пчела, которая была пересекла одну из сфер будет считаться королевой, а
другая трутнем. Эта разница отображается в виде цвета материала сфер. Цвет
сферы королевы желтый, а для трутня оранжевый. Реализация данных
событий для правой сферы изображена на рис
52
Рисунок – Реализация при событии конца пересечения
Для левой сферы реализована логика аналогична правой.
Также для процесса скрещивания были добавлен эффект всплывающих
сердец при помощи системы частиц под названием Niagara в Unreal Engine.
Niagara – это универсальная и система визуальных эффектов (VFX),
интегрированная в Unreal Engine. Она предоставляет художникам и
разработчикам рабочий процесс, основанный на визуальном
программировании, для создания динамичных и визуально ошеломляющих
эффектов частиц в режиме реального времени. Используя графический
интерфейс, пользователи могут создавать и контролировать сложные
системы частиц, симуляции и интерактивные визуальные эффекты.
Niagara специально оптимизирована для рендеринга в реальном
времени, что обеспечивает эффективную визуализацию и моделирование
эффектов частиц на широком спектре платформ и аппаратных конфигураций.
Она предлагает расширенные возможности моделирования, такие как физика
частиц, моделирование жидкостей и процедурная анимация, что позволяет
создавать реалистичные и захватывающие визуальные эффекты.
Одним из ключевых преимуществ Niagara является ее
масштабируемость и производительность. Она позволяет создавать
визуально впечатляющие эффекты без ущерба для производительности,
обеспечивая бесперебойную работу систем частиц на различных
устройствах, от высококлассных игровых ПК до мобильных платформ.
С помощью Niagara художники и разработчики получают тонкий
контроль над поведением и внешним видом систем частиц. Они могут
выставлять параметры, которые можно регулировать в режиме реального
53
времени, что позволяет динамически изменять и настраивать эффекты. Такая
гибкость позволяет создавать интерактивные и отзывчивые эффекты частиц,
которые могут адаптироваться к различным игровым ситуациям или
взаимодействию с пользователем.
Niagara также обладает высокой степенью настраиваемости и
расширяемости. Разработчики могут создавать собственные модули,
функции и эффекты, расширяя границы визуальных эффектов и адаптируя
системы частиц к требованиям конкретного проекта. Она легко
интегрируется с другими системами и функциями Unreal Engine, обеспечивая
единый рабочий процесс для создания захватывающих и визуально
поразительных впечатлений.
Для создания летающих сердец использовался исходный пример под
названием Fountain. В процессе разработки были подобраны параметры,
чтобы данный эффект визуально выглядел красиво. Пример некоторых
параметров можно увидеть на рис.
56
Данный инвентарь содержит 12 ячеек на одной странице, где игрок
может выбирать пчел, которые находятся в инвентаре. Справа отображаются
характеристики выбранной пчелы. При выборе ячейка выделяется желтой
рамкой. Снизу указана актуальная страница и общее их число. По бокам
кнопки для переключения страниц.
57
Рисунок – Функция получения координат ячейки из мировых
58
При переходе в режим строительства создается объект улья, с
материалами показывающими проекцию объекта. Объект имеет чуть
меньший масштаб чем сам объект улья, который устанавливается, чтобы
уменьшить эффект Z-конфликтов.
59
Рисунок – Интерфейс биистеария в игре
60
оценивать, что в рамках нынешних темпов о релизной версии продукта
можно говорить через год с корректировками планов каждые 3 месяца.
Можно выделить следующие аспекты игры, которые требуют
доработки:
Система сохранения прогресса игрока в игре, чтобы приключение
игрока было не на один раз, и он мог вернуться для продолжения прогресса в
игре.
Добавление аудио-составляющей игры для объектов пчел, ульев и
общей фоновой музыки.
Добавление анимаций для пчел, чтобы создать более иммерсивный
опыт, когда игрок с ними взаимодействует.
Расширение генетической составляющей игры с добавлением новых
признаков: признак окраски глаз у пчел, с его помощью можно показать
неполное доминирование в генетике. Также в зависимости от цвета пчелы
могут иметь индивидуальные эффекты, например, быть более проективной,
родить на одну пчелу больше, если она будет маткой или иметь более
высокие шансы на мутацию при скрещивании. Также возможны гибриды,
которые могут иметь два признака из данной выборки. Еще можно выделить
два признака – это эффект пчелы на соседние ульи и радиус действия на
соседние ульи. Радиус в генетическом плане похож на признак плодовитости.
А эффект на соседние ульи можно представить как пару аллельных генов. В
качестве аллелей можно выделить такие варианты признака: в соседних
ульях пчелы становятся более продуктивными, увеличивается количество
рождаемых пчел, увеличивают или уменьшают шансы мутации. Также
развитие генетических признаков может получить толчок при добавлении
новых игровых механик, например, цикла дня и ночи, добавление погодных
условий, добавление участков с различными условиями температуры или
влажности. Тогда возможно добавление признаков работы пчел ночью или в
непогоду, а также адаптация при отличии от привычной температуры или
влажности. Стоит отметить, что последние признаки достаточно время
61
затратны, и они имеют смысл уже как дополнительные идеи для
поддержания интереса за счет новых обновлений после релиза игры.
При увеличении количества признаков пчелы будет важно открывать
их по этапам для игрока, чтобы в первые часы не отпугнуть излишней
сложностью. Для этого может помочь система исследований. С ее помощью
игрок сможет открывать постепенно новые признаки пчел или возможные
механизмы, которые могут появится в игре. Главным ресурсом исследования
в данной системе можно выделить очки ДНК. Данные очки исследования
предлагается получать за счет добавления в игру нового механизма –
экстрактора ДНК, в который игрок будет помещать выведенных пчел.
Количество очков, получаемых в процессе, будет зависеть от ценности
признаков выведенной пчелы, чем более ярко выявлены признаки, тем более
ценна считается данная пчела.
Также одним из аспектов игры можно выделить получение ресурсов от
пчел. В зависимости от их вида в пасеках возможно будет выключить режим
автоматической продажи ресурсов и заполнение рамок медом пчелами. Если
игрок будет продавать просто заполненные рамки, то будет получать в два
раза больше доход, чем при автоматической продаже. Рамки будут
заполнятся сотами пропорционально продуктивности и видам пчел. Т.е. одна
рамка может содержать продукцию от разных видов пчел в различном
составе.
Далее для обработки рамок возможно добавление нового механизма в
виде центрифуги. Центрифуга имеет реальный прототип из жизни. Пример из
жизни см. рис.
62
Рисунок – Пример центрифуги для меда.
Данный механизм можно реализовать в ручном или автоматическом
виде. В первом случае игрок сможет вращать ручку, чтобы задать
определенную скорость. На выходе игрок будет получать из данных рамок
определенное количество ресурсом с некоторым шансом. При получении
ресурсов они будут иметь большую ценность, чем необработанные рамки
при условии, что они заполнены ресурсом одного вида.
Чтобы увеличить ценность ресурсов для игрока возможно обновление
условий концовки игры. К исходной цели добавляется условие, что игроку
необходимо восстановить пчелиный алтарь за счет ресурсов, которые он
получает от пчел. Причем восстановление алтаря разделяется на несколько
этапов, и помимо необходимых ресурсов для восстановления необходимо
открыть их в дереве исследований.
Одним из элементов на участке также возможно добавление торговца.
Он может быть источником для понимания большего контекста игры, а
также он может продавать базовых пчел, чтобы игрок всегда имел какой-то
резерв в виде пчел, если в процессе скрещивания его будут преследовать
неудачи.
63
Для упрощения жизни для игрока в процессе возможно добавление
системы улучшений для механизмов в игре. Игрок сможет устанавливать
улучшения, которые будут влиять на характеристики механизмов, например,
увеличивать их скорость или в случае ульев влиять на продуктивность,
шансы мутаций или увеличения вместительности. Данные улучшения игроку
также предстоит открыть при помощи дерева исследований и использовать
ресурсы, полученные от пчел. Также игрок сможет за счет улучшения
автоматизации создать автоматизацию процессов. Например, поставив такие
улья и центрифуги рядом, то при заполнении рамки будут автоматически
помещаться в центрифугу для обработки или, например, поставить улья
рядом с экстрактором ДНК и производить скрещивания в автоматическом
виде помещая всех полученных пчел в экстрактор. Причем если создать
условия, в которых шансы мутации будут низки, тогда возможно получение
постоянного количества очков исследования за определенный промежуток
времени.
Также стоит отметить, что не менее важным возможно создание
плоской версии игры не только для виртуальной реальности. Как минимум
такой ход может сократить длительность создания новых механик, т.к.
процесс отладки в условиях использования шлема имеет многократно более
долгие итерации как показал опыт при разработке. Также это возможно
может сыграть в плюс при распространении игры, т.к. возможен более
широкий охват рынка игроков, но все также придерживаться формулы, с
уникальным опытом в виртуальной реальности. Данное направление имеет
значимый потенциал для разработки игры.
В ходе описания данного пункта можно заметить, что потенциал
развития для игры очень большой и объемен. В игру также возможно
добавление кооперативного режима, чтобы игроки могли заниматься
селекцией пчел вместе со своими друзьями, введением дополнительных
участков, увеличением количества видов пчел, добавлением различных
активностей, которые мало могут быть связаны с селекцией, например,
64
рыбалка или еще какие-либо мини-игры, которые могут разнообразить
игровой процесс. Вполне вероятно, что какое-то количество описанных идей
могут не добраться до релизной версии игры. Как раз для этого и нужны
регулярные корректировки планов в процессе разработки. Но самое главное –
это то, что важно прислушиваться к сообществу при развитии игры как после
релиза, так и в процессе разработки, т.к. без сообщества вокруг игры
невозможно дальнейшее развитие.
4.8. Выводы
В итоге, в данном разделе были описаны реализованные части игры.
Были показаны подходы при создании механик, которые задействуются в
игровом процессе. Были учтены особенности разработки под платформой
виртуальной реальности. И в конечном счете рассмотрены планы для
дальнейшего развития игры.
ЗАКЛЮЧЕНИЕ
65
Таким образом, в ходе выполнения выпускной квалификационной
работы была разработана игра в виртуальной реальности с селекцией пчел на
основе стохастических процессов.
В игре был реализованы игровые механики по хранению пчел в
инвентаре игрока. Была разработана механика скрещивания пчел на основе
стохастических процессов. Для этого была разработана генетическая модель
пчелы и рассмотрены различные варианты влияния генов пчелы на конечные
признаки.
Создана модель улья для пчел с первоначальным этапом в виде
генерации концептов для него, используя нейросеть Midjourney. Для улья
также была разработана механика скрещивания, используя сферы над ульем,
игрок помещал в них пчел. Таким образом, происходило скрещивание пчел.
На этапе после скрещивания был добавлен интерфейс для улья. В интерфейсе
игрок мог увидеть информацию о семье пчел, проживающих в нем. Из этой
информации можно было получить какие получились гены у дочерних пчел,
а также общую продуктивность улья. Для отслеживания прогресса в игре был
добавлен интерактивный справочник о пчелах – биистеарий. В нем игрок мог
узнать открытые виды пчел и какую сумму набрал для спасения пчел.
Был сконструирован участок фермы, на котором игрок может
заниматься селекцией пчел. Также была добавлена механика строительства
ульев на участке, так игрок может расставлять ульи по гексагональной сетке.
Разработанная игра является уникальным для данного рынка
приложений. С его помощью возможно изучение базовых основ генетики и
селекции в интерактивом формате, так как механики скрещивания основаны
на законах Менделя. Таким образом, возможна популяризация генетики, а
также привлечь внимание к важности сохранения жизни пчел.
В перспективе, при доработке игровых механик, возможен
полноценный релиз на игровых площадках.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
66
1. https://www.grandviewresearch.com/industry-analysis/virtual-reality-vr-
market#:~:text=How%20big%20is%20the%20virtual,USD%2035.00%20billion
%20in%202023.
2. https://www.theverge.com/2023/2/28/23619730/meta-vr-oculus-ar-glasses-
smartwatch-plans
3. https://earthweb.com/how-many-people-use-steam/#:~:text=Each%20month
%2C%20there%20are%20around,at%2026.09%20million%20concurrent
%20users.
4. https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-
Survey-Welcome-to-Steam
5. https://sonyinteractive.com/en/press-releases/playstationnetwork-monthly-
active-users--reaches-103-million/
6. https://www.uploadvr.com/psvr-2-600k-units-sold/
7. Booch, Grady (1991). Object Oriented Design: With Applications. Benjamin
Cummings. p. 209. ISBN 9780805300918.
8. Водяхо А.И., Выговский Л.С., Дубенецкий В.А., Цехановский В. В.
Архитектурные решения информационных систем: учебник для СПО — 2-е
изд. стер. — Санкт-Петербург: Лань, 2021. — 356 с. — ISBN 978-5-8114-
7554-4
9. Инге-Вечтомов С. Г. . Генетика с основами селекции: учебник для
студентов высших учебных заведений. — СПб.: Изд-во Н-Л, 2010. — 720 с.
— ISBN 978-5-94869-105-3.
10. Тарантул В. З. . Толковый биотехнологический словарь. — М.: Языки
славянских культур, 2009. — 936 с. — 400 экз. — ISBN 978-5-9551-0342-6.
11. А. М. Прохоров. Большая Советская Энциклопедия. — 3. — М.:
Советская Энциклопедия, 1970. — Т. 1. — С. 445. — 608 с.
12. Большая российская энциклопедия. Том 26. Москва, 2014, стр. 663
67
13. В.И. Иванов, Н.В. Барышникова, Дж. С. Билева. Генетика / Под ред.
В.И. Иванова. — М.: Академкнига, 2007. — 638 с. — 2000 экз. — ISBN 978-
5-94628-288-8.
14. https://www.economist.com/interactive/briefing/2022/06/11/huge-
foundation-models-are-turbo-charging-ai-progress
15. UNREAL ENGINE VR COOKBOOK: DEVELOPING VIRTUAL
REALITY WITH UE4
16. https://www.redblobgames.com/grids/hexagons/#basics
Приложение А
68
Исходный код файлов BeeGenetic.h и BeeGenetic.cpp
#pragma once
#include "CoreMinimal.h"
#include "Components/SceneComponent.h"
#include "BeeGenetic.generated.h"
UENUM(BlueprintType)
enum Species
{
Meadow UMETA(DisplayName = "Meadow"),
Forest UMETA(DisplayName = "Forest"),
River UMETA(DisplayName = "River"),
Plant UMETA(DisplayName = "Plant"),
Mushroom UMETA(DisplayName = "Mushroom"),
Berry UMETA(DisplayName = "Berry"),
Woody UMETA(DisplayName = "Woody"),
Potato UMETA(DisplayName = "Potato"),
Wheat UMETA(DisplayName = "Wheat"),
Grape UMETA(DisplayName = "Grape"),
Tomato UMETA(DisplayName = "Tomato"),
Flour UMETA(DisplayName = "Flour"),
Plank UMETA(DisplayName = "Plank"),
Paper UMETA(DisplayName = "Paper"),
Bread UMETA(DisplayName = "Bread"),
Wine UMETA(DisplayName = "Wine"),
Boxed UMETA(DisplayName = "Boxed"),
Ketchup UMETA(DisplayName = "Ketchup")
};
UENUM(BlueprintType)
enum class EyeColor : uint8
{
Black UMETA(DisplayName = "Black"),
Red UMETA(DisplayName = "Red"),
Green UMETA(DisplayName = "Green"),
Blue UMETA(DisplayName = "Blue"),
Size UMETA(DisplayName = "Size")
};
UENUM(BlueprintType)
enum class EffectType : uint8
{
69
None UMETA(DisplayName = "Black"),
Speed UMETA(DisplayName = "Black"),
Mutation UMETA(DisplayName = "Black"),
Stability UMETA(DisplayName = "Black"),
Fertility UMETA(DisplayName = "Black"),
Infertility UMETA(DisplayName = "Black"),
Size UMETA(DisplayName = "Size")
};
70
{6, 3.0f},
{7, 3.5f},
{8, 4.0f},
};
USTRUCT(BlueprintType)
struct FBeeColors
{
GENERATED_BODY()
FBeeColors() {}
FBeeColors(FString MainStr, FString MainDarkStr, FString SecStr)
{
Main = FColor::FromHex(MainStr);
71
MainDark = FColor::FromHex(MainDarkStr);
Sec = FColor::FromHex(SecStr);
}
};
72
GENERATED_BODY()
public:
// Sets default values for this component's properties
UBeeGenetic();
protected:
// Called when the game starts
virtual void BeginPlay() override;
73
void Init(TEnumAsByte<Species> main, TEnumAsByte<Species> sec,
int32 speed, int32 fertility);
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction) override;
74
static bool IsDiscoveredSpecies(TEnumAsByte<Species> species);
// ...
}
// ...
75
Fertility = fertility;
}
// ...
}
int32 UBeeGenetic::GetSpeedValue()
{
int32 count = 0;
int32 mask = 1;
for (int i = 0; i < 8; ++i)
{
if (mask & Speed)
++count;
mask <<= 1;
}
return count;
}
int32 UBeeGenetic::GetFertiliryValue()
{
int32 count = 0;
int32 maskMain = 1;
int32 maskSec = 2;
for (int i = 0; i < 5; ++i)
{
if (maskMain & Fertility || maskSec & Fertility)
++count;
maskMain <<= 2;
maskSec <<= 2;
}
return count;
}
int32 UBeeGenetic::GetRadiusValue()
{
int32 count = 0;
int32 maskMain = 1;
int32 maskSec = 2;
76
for (int i = 0; i < 3; ++i)
{
if (maskMain & Radius || maskSec & Radius)
++count;
maskMain <<= 2;
maskSec <<= 2;
}
return count;
}
FString UBeeGenetic::GetInfoBee()
{
FString out = GetInfoSpecies();
out += ": " + GetInfoSpeed() + "; " + GetInfoFertility();
return out;
}
77
FString UBeeGenetic::GetInfoSpecies()
{
FString out;
FString mainName = UEnum::GetValueAsString(Main);
FString secName = UEnum::GetValueAsString(Sec);
if (mainName.Equals(secName))
out = mainName;
else
out = mainName + "-" + secName;
out += " bee";
return out;
}
FString UBeeGenetic::GetInfoSpeed()
{
return FString::Printf(TEXT("Speed %d %s"), GetSpeedValue(),
*get_gens_str(Speed, SPEED_GENS_COUNT));
}
FString UBeeGenetic::GetInfoFertility()
{
return FString::Printf(TEXT("Fertility %d %s"),
GetFertiliryValue(), *get_gens_str(Fertility, FERTILITRY_GENS_COUNT));
}
int32 UBeeGenetic::GetProductivitySpeed()
{
int32 out = 0;
float speedCoeff = *SpeedCoeff.Find(GetSpeedValue());
out += *CombCostByTier.Find(*Tiers.FindKey(Main)) * speedCoeff;
if (Main != Sec)
{
out += *CombCostByTier.Find(*Tiers.FindKey(Sec)) *
speedCoeff;
78
out *= 0.5f;
}
return out * COMB_AMOUNT_PER_MINUTE;
}
UBeeGenetic *UBeeGenetic::CreateMeadowBee()
{
return Construct(Species::Meadow, Species::Meadow, 15, 15);
}
UBeeGenetic *UBeeGenetic::CreateForestBee()
{
return Construct(Species::Forest, Species::Forest, 51, 51);
}
UBeeGenetic *UBeeGenetic::CreateRiverBee()
{
return Construct(Species::River, Species::River, 60, 60);
}
int32 UBeeGenetic::DiscoveredCount()
{
int32 count = 0;
for (const auto [key, value] : DiscoveredSpecies)
{
if (value)
79
{
++count;
}
}
return count;
}
80
Исходный код файлов InheritMutationLibrary.h и
InheritMutationLibrary.cpp
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "BeeGenetic.h"
#include "InheritMutationLibrary.generated.h"
/**
*
*/
UCLASS()
class BEEKEEPERVR_API UInheritMutationLibrary : public
UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, Category = "Bees")
static UBeeGenetic *Inherit(const UBeeGenetic *p1, const
UBeeGenetic *p2);
#include "InheritMutationLibrary.h"
#include "Math/UnrealMathUtility.h"
#include "Templates/UnrealTemplate.h"
#include "Containers/Map.h"
81
static bool random(float less)
{
return FMath::FRandRange(0.f, 1.f) < less;
}
//https://stackoverflow.com/questions/47981/how-do-i-set-clear-and-
toggle-a-single-bit
static void set_bit(int32 &num, int32 pos)
{
num |= 1UL << pos;
}
82
++tier;
else
tier += 2;
if (tier < 1)
tier = 1;
if (tier > 5)
tier = 5;
TArray<TEnumAsByte<Species>> species;
Tiers.MultiFind(tier, species);
if (species.Num())
{
s = species[FMath::RandRange(0, species.Num() - 1)];
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Can't found species for tier
%d"), tier);
}
}
}
83
}
}
for (int i = 0; i < genPairs; ++i)
{
if (get_bit(g, i * 2) < get_bit(g, i * 2 + 1))
{
set_bit(g, i * 2);
clear_bit(g, i * 2 + 1);
}
}
}
84
return UBeeGenetic::Construct(speciesP1, speciesP2, speed,
fertility);
}
85