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

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

Исходя из навыков и наличия временных рамок наиболее релевантным был выбран движок Unreal Engine для разработки. С его системой визуального программирования Blueprint возможно создавать VR-взаимодействия без обширных знаний в области программирования, и всегда можно заглянуть в исходники движка на C++ в процессе разработки. Unreal Engine поддерживает кроссплатформенную разработку, позволяя целиться в начале на VR для ПК, а затем оптимизировать игру под Oculus Quest, так как процесс выхода игры на разных платформах также требует время для создания страницы игры в магазине и ее продвижение.

 

1.5. Выбор методологии разработки ПО и ведения документации

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

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

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

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

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

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

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

Экстремальное программирование – данный вид модели заключается в том, что это является неформальным подходом в разработке. В данном случае выбирается самое простой и быстрый способ разработки, со всеми вытекающими. Цель данного метода в существенном сокращении времени разработки. Часто используется вместе с парным программированием.

Гибкая методология разработки – данная модель в себя включает несколько различных течений. Например, Scrum – в основе данной модели лежат еженедельные спринты в течении которой происходит работа над продуктом. Перед каждым спринтом происходит планирование задач и оценивается список еще не решенных задач. Еще как разновидность течения можно рассмотреть Kanban. В данной модели проект делится на этапы, которые визуализируются на Kanban-доске. На данной доске имеются колонки: планируется, в разработке, тестирование, релиз и т.п. Также на доске имеются карточки с задачами. По мере выполнения задачи ее карточка постепенно перемещается по доске и проходит каждый процесс разработки.

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

В качестве Agile-доски и ведения документации использовался сервис Notion. В нем было выделено несколько колонок таких как:

?   Ideas – различная информация которая может не относится на прямую к задачам, но хранить в себе полезную информацию для разработки.

?   To Do – задачи, которые были определены в процессе разработки.

?   Doing – задачи, которые в процессе выполнения.

?   Done – выполненные задачи.

Пример ведения доски с задачами изображен на рис 1.

Рисунок 1 – Пример ведения задач в Notion

В Notion также удобно использовать в качестве ведения документации, для этого была создана отдельная страница, которая имела свои подразделы. Пример разделения на подразделы можно увидеть на рис. 2.

Риснуок 2 – Разделение документации на разделы.

Также в процессе разработки был использован Git-репозиторий в GitHub. Пример коммитов можно увидеть на рис. 3.

Рисунок 3 – Коммиты на GitHub в процессе разработки

Важно выделить основыне требования необходимые для реализации данного приложения. С их помощью возможна оптимизация времени разработки программного продукта [8]

 

1.6. Выводы

Таким образом, были рассмотрены основные платформы игр виртуальной реальности. Было рассмотрено состояние рынка.  В ходе данного раздела был выбран игровой движок Unreal Engine для разработки программного продукта. Также была выбрана методология разработки и выбрано место для ведения документации проекта.

 

2.   ПРОЕКТИРОВАНИЕ ГЕНЕТИЧЕСКОЙ МОДЕЛИ

 

2.1. Основные понятия

В данном разделе будут использоваться следующие понятия в ходе изложения.

Ген – в классической генетике определяется как наследственный фактор, который несет информацию об определённом признаке или функции организма и который является структурной и функциональной единицей наследственности [9].

Хромосомой являются нуклеопротеидные структуры в ядре эукариотической клетки, в которых сосредоточена большая часть наследственной информации и которые предназначены для её хранения, реализации и передачи [10].

Диплоидный организм – это организм, имеющий пару хромосом.

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

Аллели - различные формы одного и того же гена, расположенные в одинаковых участках (локусах) гомологичных хромосом, определяют направление развития конкретного признака. В диплоидном организме, может быть два одинаковых аллеля одного гена, в этом случае организм называется гомозиготным, или два разных, что приводит к гетерозиготному организму [11].

Мутацией является стойкое изменение генома, которое может быть унаследовано потомками [9].

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

Такое взаимодействие генов может быть кумулятивным или некумулятивным. В случае кумулятивной (накопительной) полимерии степень проявления признака зависит от суммирования эффектов генов. Чем больше доминантных аллелей генов, тем сильнее проявляется данный признак. При расщеплении потомства F2 по фенотипу в таком случае можно ожидать соотношение 1:4:6:4:1, при условии, что взаимодействуют две пары неаллельных генов, а гибриды F1 являются дигетерозиготами.[12]

 

2.2. Законы Менделя

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

Законы Менделя – это принципы передачи наследственных признаков от родительских организмов к их потомкам, вытекающие из экспериментов Грегора Менделя. [13]

В ходе исследований Менделя были сформулированы три основных закона передачи наследственных признаков.

Первым законом Менделя является закон единообразия гибридов первого поколения. Формулировка звучит следующим образом: при скрещивании двух гомозиготных организмов, относящихся к разным чистым линиям и отличающихся друг от друга по одной паре альтернативных проявлений признака, всё первое поколение гибридов (F1) окажется единообразным и будет нести проявление признака одного из родителей. [13]

Вторым законом Менделя является закон расщепления. При скрещивании двух гетерозиготных потомков первого поколения между собой во втором поколении наблюдается расщепление в определённом числовом отношении: по фенотипу 3:1, по генотипу 1:2:1.

Третьим законом Менделя является закон независимого наследования. При скрещивании двух особей, отличающихся друг от друга по двум (и более) парам альтернативных признаков, гены и соответствующие им признаки наследуются независимо друг от друга и комбинируются во всех возможных сочетаниях (как и при моногибридном скрещивании).

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

Пусть имеется две породы коты альбиносы с коротким хвостом и коты с каштановой шерстью и длинным хвостом. Тогда распределение возможных пород для первых двух поколений можно описать рис. 4.

Рисунок 4 – Пример возможных вариантов скрещивания для двух поколений

В данном случае после скрещивания родительских котов выполняется первый закон единообразия гибридов. Все коты первого поколения будут с шерстью каштанового цвета с коротким хвостом. Далее если скрещивать данных гибридов, то уже будет 16 возможных комбинаций родительских генов. Причем из-за присутствия доминантных и рецессивных генов распределение котов будет 9:3:3:1. Т.е. наиболее вероятно, что во втором поколении появится кот с шерстью каштанового цвета и коротким хвостом. В 3 случаях из 16 возможно, что кот будет альбиносом с коротким хвостом. В еще 3 случаях из 16 возможно, что у кот будет с каштановой шерстью и длинным хвостом. А также 1 случай из 16, что кот будет альбиносом с длинным хвостом.

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

 

2.3. Описание модели пчелы

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

От вида пчелы зависит какую продукцию она производит, а также ее расцветка. Примеры различных расцветок в зависимости от вида пчелы можно увидеть на рис. 5.

Рисунок 5 – Расцветка пчел лугового, лесного и речного видов

Виды пчел разделяются на тиры. Тир – группа видов, имеющая одну ценность продукции. Всего в игре насчитывается 5 тиров. Разделение видов по тирам и стоимости продукции в минуту представлено в табл. 1.

Таблица 1 – Распределение видов пчел по тирам (перенос таблицы)

Вид пчелы

Тир

Ценность продукции

Луговая

1

100

Лесная

Речная

Растительная

2

200

Грибная

Ягодная

Древесная

Картофельная

3

500

Пшеничная

Виноградная

Помидорная

Мучная

4

800

Дощетчатая

Бумажная

Хлебная

5

1200

Винная

Коробочная

Кетчупная