Исходя из навыков и наличия временных рамок наиболее релевантным был выбран движок 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. ПРОЕКТИРОВАНИЕ ГЕНЕТИЧЕСКОЙ МОДЕЛИ
В данном разделе будут использоваться следующие понятия в ходе изложения.
Ген – в классической генетике определяется как наследственный фактор, который несет информацию об определённом признаке или функции организма и который является структурной и функциональной единицей наследственности [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 |
|
Винная |
||
|
Коробочная |
||
|
Кетчупная |