Материал: РАЗРАБОТКА ИГРЫ В ВИРТУАЛЬНОЙ РЕАЛЬНОСТИ НА ТЕМУ СЕЛЕКЦИИ ПЧЕЛ НА ОСНОВЕ СТОХАСТИЧЕСКИХ ПРОЦЕССОВ

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

В итоге, была получена модель улья изображенная на рис. .

Рисунок – Полученная модель улья

 

4.3. Разработка механик с ульем для селекции

Чтобы производить скрещивание пчел над ульем использовались два компонента StaticMeshComponent в виде сфер. В Unreal Engine столкновения и пересечения между объектами обрабатываются с помощью системы столкновений. Существует несколько способов проверки столкновений в Unreal Engine, в зависимости от конкретных потребностей и типов объектов.

Акторы с компонентами столкновения могут иметь функции событий, такие как OnComponentBeginOverlap и OnComponentEndOverlap, которые срабатывают, когда происходит столкновение с другим объектом. В этих функциях событий можно реализовать пользовательскую логику для выполнения действий или запуска событий на основе столкновения.

Unreal Engine предлагает различные функции трассировки, которые позволяют выполнять трассировку линии или трассировку объектом для проверки столкновений. Трассировка линии прокладывает прямую линию в заданном направлении и проверяет наличие объектов, пересекающих эту линию. Трассировка объектом, например, трассировка коробкой или сферой, проверяет столкновения в пределах определенной формы. Эти функции трассировки обеспечивают гибкость при обнаружении столкновений и могут быть использованы для конкретных сценариев. Например, при событии нажатия на кнопку или трассировкой луча каждый кадр из контроллера игрока.

Также Unreal Engine предоставляет функции запросов, которые позволяют выполнять различные проверки, связанные со столкновениями. Например, вы можете использовать такие функции, как LineTraceSingleByChannel или SphereTraceSingleByChannel, чтобы проверить, есть ли блокирующие объекты вдоль линии или внутри сферы, соответственно. [15]

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

Рисунок – Реализации при событии начала пересечения

Рисунок – Реализация при событии конца пересечения

Для левой сферы реализована логика аналогична правой.

Также для процесса скрещивания были добавлен эффект всплывающих сердец при помощи системы частиц под названием Niagara в Unreal Engine.

Niagara – это универсальная и система визуальных эффектов (VFX), интегрированная в Unreal Engine. Она предоставляет художникам и разработчикам рабочий процесс, основанный на визуальном программировании, для создания динамичных и визуально ошеломляющих эффектов частиц в режиме реального времени. Используя графический интерфейс, пользователи могут создавать и контролировать сложные системы частиц, симуляции и интерактивные визуальные эффекты.

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

Одним из ключевых преимуществ Niagara является ее масштабируемость и производительность. Она позволяет создавать визуально впечатляющие эффекты без ущерба для производительности, обеспечивая бесперебойную работу систем частиц на различных устройствах, от высококлассных игровых ПК до мобильных платформ.

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

Niagara также обладает высокой степенью настраиваемости и расширяемости. Разработчики могут создавать собственные модули, функции и эффекты, расширяя границы визуальных эффектов и адаптируя системы частиц к требованиям конкретного проекта. Она легко интегрируется с другими системами и функциями Unreal Engine, обеспечивая единый рабочий процесс для создания захватывающих и визуально поразительных впечатлений.

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

Рисунок – Настройки эффектов частиц

Когда обе пчелы пересекли сферы, то по прошествию 3 секунд скрещивание считается успешным и появляется пользовательский интерфейс улья. Данный интерфейс показывает важную информацию о семье пчел см. рис

Рисунок N – важная информация о семье пчел

В интерфейсе улья игрок может наблюдать прогресс появления следующей пчелы, которая рождается каждые 10 секунд в пределах плодовитости королевы. Улей может содержать до 6 пчел. Причем в первой ячейке всегда находится королева семейства, ее извлечь без уничтожения семьи невозможно, ее ячейка имеет более яркий желтый цвет на фоне. Других пчел при выборе можно забрать. В правой части интерфейса можно увидеть какой набор генов у выбранной пчелы. Ячейка выбранной пчелы обрамляется рамкой. Сверху можно увидеть какую сумму в минуту производит данная семья пчел.

 

4.4. Инвентарь игрока

Инвентарь игрока можно разделить на 2 глобальные части. Сферы на контроллерах игрока, пользовательский интерфейс на левой руке, где пользователь может выбирать пчел в инвентаре и просматривать их наборы генов.

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

Рисунок – Обработка события при нажатии на кнопку захвата

Сферы на руках являются связью игрового мира и инвентарем игрока. С их помощью игрок может помещать пчел из пространства к себе в инвентарь. А при помощи пользовательского интерфейса может просматривать пчел в инвентаре. Пользовательский интерфейс изображен на рис.

Рисунок – Интерфейс инвентаря игрока в редакторе

Данный инвентарь содержит 12 ячеек на одной странице, где игрок может выбирать пчел, которые находятся в инвентаре. Справа отображаются характеристики выбранной пчелы. При выборе ячейка выделяется желтой рамкой. Снизу указана актуальная страница и общее их число. По бокам кнопки для переключения страниц.

 

4.5. Строительство ульев на участке

Для расположения ульев используется гексагональная сетка. Для строительства был сделан отдельный режим, в который игрок переходит при нажатии кнопки на контроллере. При переходе в этот режим происходит трассировка луча в пространстве из правого контроллера на определенное расстояние. Для строительства по сетке необходимо было делать перевод координат из мирового пространства, которое получается на выходе из трассировки луча, в пространство сетки. Для представления гексагональной сетки использовались осевые координаты [16]. Далее полученные координаты в пространстве сетки переводились обратно в координаты мирового пространства. Данные функции для работы с гексагональным пространством были вынесены в отдельную библиотеку Blueprint. Необходимые функции изображены на рис.

Рисунок – Функция для получения координат центра ячейки

Рисунок – Функция получения координат ячейки из мировых

Рисунок – Функция получения мировых координат из ячейки

Для определения, что ячейка не занята используется CollisionBox. В случае, если место свободно все материалы улья окрашиваются в зеленый, иначе в красный. Также для визуализации рамок строительства используется декаль, которая проецируется на поверхность. Пример отображения можно увидеть на рис.

Рисунок – Пример отображения строительства в игре

При переходе в режим строительства создается объект улья, с материалами показывающими проекцию объекта. Объект имеет чуть меньший масштаб чем сам объект улья, который устанавливается, чтобы уменьшить эффект Z-конфликтов. 

 

4.6. Интерфейс биистеария

Для того, чтобы игрок мог отлеживать прогресс по открытию пчел был разработан интерфейс, который игрок может всегда вызвать по нажатию кнопки. Данный интерфейс содержит информацию о том какое количество денег игрок уже накопил для цели спасти пчел. Далее отображаются открытые игроком виды. Всего в игре насчитывается 18 видов пчел. Открытие нового вида регистрируется при добавлении пчелы нового вида в инвентарь. Виды пчел делятся на тиры. Изначально игроку известно о 3 базовых видах пчел. Остальные виды игрок может открыть в процессе секционирования пчел. Всего игра насчитывает 5 тиров пчел, в каждом из которых может содержаться от 3 до 4 видов пчел.

Рисунок – Интерфейс биистеария в игре

 

4.7. Планы для дальнейшего развития

В процессе написания ВКР был проведен большой объем работ, но о полноценном релизе игры говорить достаточно рано. Общий результат работ можно назвать как демоверсия, которая способна привлечь внимание для дальнейшего развития и распространения игры.

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

Можно выделить следующие аспекты игры, которые требуют доработки:

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

Добавление аудио-составляющей игры для объектов пчел, ульев и общей фоновой музыки.

Добавление анимаций для пчел, чтобы создать более иммерсивный опыт, когда игрок с ними взаимодействует.

Расширение генетической составляющей игры с добавлением новых признаков: признак окраски глаз у пчел, с его помощью можно показать неполное доминирование в генетике. Также в зависимости от цвета пчелы могут иметь индивидуальные эффекты, например, быть более проективной, родить на одну пчелу больше, если она будет маткой или иметь более высокие шансы на мутацию при скрещивании. Также возможны гибриды, которые могут иметь два признака из данной выборки. Еще можно выделить два признака – это эффект пчелы на соседние ульи и радиус действия на соседние ульи. Радиус в генетическом плане похож на признак плодовитости. А эффект на соседние ульи можно представить как пару аллельных генов. В качестве аллелей можно выделить такие варианты признака: в соседних ульях пчелы становятся более продуктивными, увеличивается количество рождаемых пчел, увеличивают или уменьшают шансы мутации. Также развитие генетических признаков может получить толчок при добавлении новых игровых механик, например, цикла дня и ночи, добавление погодных условий, добавление участков с различными условиями температуры или влажности. Тогда возможно добавление признаков работы пчел ночью или в непогоду, а также адаптация при отличии от привычной температуры или влажности. Стоит отметить, что последние признаки достаточно время затратны, и они имеют смысл уже как дополнительные идеи для поддержания интереса за счет новых обновлений после релиза игры.