# Луговских Савелий - Портфолио ГД
## Design Douments
### Дизайн грузинского ресторана для Cooking Craze
Было необходимо разработать полный дизайн ресторана грузинской кухни с двумя блюдами по 2 добавки каждое и одним напитком
###### Схема

1. Контейнеры с тестом и сыром для хачапури
2. Дровяная печь
3. Противень для хранения готовых хачапури
4. Добавка для хачапури - зелень
5. Добавка для хачапури - сливочное масло
6. Зона приготовления закусок (баклажанных рулетиков (доска, ленты баклажанов, миска с начинкой))
7. Тарелки для подачи закусок
8. Добавка для закусок - миска с массой, из которой формуются пхали
9. Добавка для закусок - бочка с мжавеули (соления)
10. Кувшин и стаканы для тархуна
11. Вид на горы
#### Меню
##### Блюдо 1 - Хачапури по-аджарски
###### Референсы

###### Описание и приготовление
При нажатии на емкость с тестом, расположенную под печью, игрок добавляет один хачапури в печь, где оно готовится и может сгореть по истечении таймера. При нажатии на готовый хачапури оно переносится на поднос, выстеленный пергаментом.
###### Добавки:
Зелень (кинза, зеленый лук)
Сливочное масло (могут возникнуть проблемы с различимостью на фоне бежево-коричневого хачапури, тогда можно заменить на вяленые томаты или нарезанную бастурму, что, однако, будет менее аутентичным)
На хачапури можно добавить как одну из двух добавок, так и обе одновременно. При этом обе добавки изображаются расположенными на поверхности хачапури и зелень отрисовывается поверх второй добавки. При нажатии на соответствующий объект добавка добавляется на нижний хачапури на подносе, не имеющий данной добавки.
###### Комментарий
Хачапури - наверное, самое узнаваемое блюдо грузинской кухни, так что, по моему мнению, является обязательным атрибутом данного ресторана. Вариант по-аджарски представляется наиболее визуально сложным и интересным
##### Блюдо 2 - Закуски (нигвзиани бадриджани, пхали, мжавеули)
###### Референсы
Нигвизани бариджани - рулетики из баклажанов с ореховой начинкой

Пхали - шарики из различных перетертых растений (свекла, шпинат, фасоль)

Мжавеули - грузинские соленья

###### Описание и приготовление
Второе блюдо - набор различных грузинских закусок собранный вокруг баклажанных рулетиков.
При нажатии на станцию приготовления рулетиков (доска с расположенными на ней пластинами баклажана и миской начинки) начинает проигрываться анимация скручивания рулетиков.
По прошествии необходимого времени анимация прекращается и на доске оказываются несколько рулетиков, нажатие на которые переносит их на одну из расположенных рядом тарелок.
###### Добавки:
Пхали (при повышении уровня добавки можно отрисовывать дополнительные шарики различных цветов)
Мжавеули (при повышении уровня добавки можно увеличивать разнообразие отрисовываемых солений)
Добавки добавляются независимо друг от друга на нижнюю тарелку при нажатии на соответствующий объект. При этом пхали отрисовывается на левой стороне тарелки, а мжавеули - на правой.
###### Комментарий
Альтернативой для этого блюда были хинкали, однако от них было решено отказаться по следующим причинам:
Они плохо визуально и тематически контрастировали с бежево-коричневым и мучным хачапури
Добавками для них могут служить только соусы различных цветов и, возможно, зелень, что, опять же, не очень визуально и тематически интересно.
Вариант с закусками позволяет показать больше различных национальных грузинских блюд.
##### Напиток - Домашний тархун
###### Референсы


###### Описание и приготовление
Напиток разливается по стаканам автоматически, аналогично коле и молочному коктейлю на начальных уровнях
###### Комментарий
Помимо вина, нереализуемого из-за возрастных ограничений, с Грузией больше всего ассоциируются боржоми, гранатовый сок и тархун.
Боржоми для большинства людей, особенно вне постсоветского пространства, скорее всего будет восприниматься как обычная минеральная вода, никак не связанная с национальной кухней. Помимо этого, её достаточно сложно интересно визуально реализовать.
Гранатовый сок также широко распространен на Ближнем Востоке, что размывает его принадлежность к национальной кухне, однако он остается очень сильной опцией.
Тархун, в свою очередь, был изобретен грузином и не популярен практически нигде, кроме постсоветского пространства, что дает два преимущества:
Для иностранцев он представляется экзотичным и интересным, в первую очередь из-за своего цвета
Игроками с постсоветского пространства он легко узнается и ассоциируется с Грузией
##### Интерьер и фон
###### Описание
Грузинская кухня, в отличие от, например, французской - достаточно простая и домашняя. Соответственно и интерьер должен быть домашним, деревенским и уютным.
* Массив дерева, голый камень и кирпич в качестве основных материалов.
* Плетеные предметы и мебель.
* Ковры с национальными орнаментами в качестве украшений.
* Подвешенные сушеные травы и специи (чеснок, лавровый лист и т. д.)
Также Грузия известна своей живописной природой, так что стоит часть или весь задник оформить в виде открытой террасы с видом на горы
Наиболее ярким элементом рабочей зоны будет дровяная печь, использующая для приготовления хачапури
###### Референсы
Дровяные печи



Общий вид интерьера



Пейзаж на фоне



## Game Product Analytics
### Анализ оттока игроков Stone Age
Целью теста было выявить влияние сложности стартовых уровней на
удержание игроков. Сейчас в игре 120 уровней. Было разработано 30 полностью
новых уровней (более динамичных и простых) и проведен A / B тест, в котором
игроки были разделены на 2 когорты:
**Когорта А:** игроки с четным номером устройства получали старые 120
уровней
**Когорта В:** игроки с нечетным номером играли в новые 30 уровней, после
которых шли старые уровни (с 31 по 120).
Было необходимо изучить полученные данные, извлечь из них инсайты, позволяющие улучшить игру, и принять обоснованное решение о замене старых 30ти уровней на новые
[Исходные данные (Google Sheets)](https://docs.google.com/spreadsheets/d/1mQUrj6q7eBrBiWVFkAmQq3Fgnv61kPGrMzR-tAvMeSU/edit?usp=sharing)
[Итоговая таблица (Google Sheets)](https://docs.google.com/spreadsheets/d/1YOTklSnv025t_xeGbrNk8cDBl2w2tOOr5YeWhPKrMeM/edit?usp=sharing)
Пояснения по столбцам:
*Level started (Uniques)* – число уникальных игроков, начавших уровень.
*Level started (Totals)* – общее число запусков уровня.
*Level won (Totals)* – общее число выигрышей уровня.
*Level failed (Totals)* – общее число проигрышей уровня.
#### Изучение данных и создание столбцов
Были добавлены следующие столбцы:
CHURN(relative) - относительный отток игроков после уровня
CHURN(absolute) - абсолютный отток игроков после уровня

По этим данным достаточно тяжело сравнивать когорты, поэтому были добавлены следующие столбцы:
CUMULATIVE CHURN(relative) - относительный кумулятивный отток игроков после уровней
CUMULATIVE CHURN(absolute) - абсолютный кумулятивный отток игроков после уровней

Как можно увидеть, новые уровни имеют меньший отток, однако на следующих 90 уровнях разрыв исчезает
Более точно это можно рассмотреть рассчитав кумулятивный отток для последних 90 уровней отдельно

Как можно заметить, за первые 10 уровней когорта Б значительно обгоняет когорту А по уровню оттока и сохраняет лидерство до конца рассматриваемого отрезка
Также были добавлен столбец NOT FINISHED, отражающий количество начатых уровней, не закончившихся победой или поражением. Значения в данном столбце сильно противоречат значениям в exit_to_menu, однако без дополнительной информации о методике сбора информации дальнейшие выводы сделать крайне сложно.
Помимо этого был создан столбец DIFFICULTY, отражающий процент провалов уровней из числа запусков.

Наконец, в данных было обнаружено несколько уровней с большим процентом оттока, практически не имевших при этом провалов. Был сделан вывод, что эти уровни слишком скучные, после чего в качестве эксперимента были созданы столбцы для упрощения выявления скучных уровней.
с - отражает отношение оттока игроков к сложности уровня и имеет следующую формулу
REL_CHURN^churn_power / REL_FAILS
REL_CHURN = (UNIQ_CURR - UNIQ_NEXT + stab_metric) / (UNIQ_CURR)
REL_FAILS = (LVL_FAILS + stab_metric) / (LVL_STARTS), где
REL_CHURN - стабилизированный относительный оттток после уровня
REL_FAILS - стабилизированная относительная доля провалов на уровне
UNIQ_NEXT - число уникальных запусков следующего уровня
UNIQ_CURR - число уникальных запусков текущего уровня
LVL_FAILS - число провалов текущего уровня
LVL_STARTS - число запусков текущего уровня
stab_metric - параметр, используется для стабилизации значений функции при малых количествах провалов/оттока
churn_power - параметр, используется для придания большей значимости оттоку после уровня. При значениях >1 уровни с большим оттоком при одинаковом отношении оттока к доле провалов будут получать большую оценку.
BOREDOM(mean mormalized) - BOREDOM(raw), нормализованная так, чтобы единица соответствовала среднему показателю скучности уровней.

Конкретные значения данной функции не имеют “физического” смысла и должны использоваться только для сравнения уровней между собой.
#### Принятие решения по внедрению новых уровней
Как было отмечено выше, новые 30 уровней показывают лучшие показатели оттока, однако различие исчезает довольно быстро после их завершения. Рассмотрим конкретные числа оттока и рассчитаем статистическую значимость полученных результатов.
Относительный кумулятивный отток на 30м уровне(Когорта А) - 74,17%
Относительный кумулятивный отток на 30м уровне(Когорта Б) - 68,11%
Для подсчета статистической значимости за нулевую гипотезу примем то, что различий между наборами уровней нет
Теперь рассчитаем среднеквадратическое отклонение для обеих когорт как для распределения Бернулли
СКО(А30) = (0,7417*(1-0,7417)/1784)^½ = 0.011034
СКО(Б30) = (0,6811*(1-0,6811)/1750)^½ = 0.010463
Теперь рассчитаем стандартную ошибку разности
СОР(30) = (СКО(А30)^2 + СКО(Б30)^2)^½ = 0.015206
Наконец рассчитаем z-score и соответствующий ей p-value
z-score = (СКО(Б30)-СКО(A30)) = 3.9892
p-value = 0.000033, что соответствует практически 100% уверенности, в превосходстве новых уровней
Повторим расчет для последнего уровня
Относительный кумулятивный отток на 119м уровне(Когорта А) - 93,80%
Относительный кумулятивный отток на 119м уровне(Когорта Б) - 94,62%
СКО(А119) = 0.005307
СКО(Б119) = 0.005342
СОР(119) = 0.007531
z-score = 0.2406
p-value = 0.4049
Полученные результаты не позволяют говорить о каком-либо статистически значимом различии на 119м уровне.
Таким образом, при низкой трудоемкости внедрения новых уровней его можно считать оправданным, однако из-за исчезновения эффекта в долгосрочной перспективе выигрыш по удержанию и другим KPI, вероятно будет незначительным.
Имеет смысл создать набор уровней 31-60 в стиле новых 30 для определения причины резкого падения удержания после 30 уровня: несоответствие ожиданий после новых уровней старым уровням, идущим следом, либо существование некоторого предела удержания отдельных категорий игроков с помощью более динамичных уровней.
## Game Loop Studies
### Fallout 4 - общий цикл

*Схема состояний и переходов между ними внутри основного цикла игры*
<br/>
| Этап | Действия | Ресурсы | Главные источники удовольствия |
|:---:|:---:|:---:|:---:|
| EXPLORE | >Исследование карты в поисках точек интереса | Не изменяются | >Environmental storytelling (large-scale) <br />>Эстетическое удовольствие <br />>Погружение в мир |
| FIGHT | >Сражение с противниками на точке интереса | Расходники-- <br />Опыт++ | >Механическая стрельба по болванчикам <br /> >Решение простых тактических задач (выбор цели/оружия/позиции) |
| SEARCH | >Исследование локации <br />>Поиск лута и квестовых предметов | Расходники+ <br />Экипировка+<br />Деньги+ <br />Крафт ресурсы++ | >Получение лута <br />>Выполнение квестов <br />>Environmental storytelling (small-scale) |
| RESTOCK | >Шоппинг и апгрейд экипировки <br />>Сдача квестов <br />>Получение новых квестов | Расходники++ <br />Экипировка++ <br />Крафт ресурсы– <br />Опыт+ <br />Деньги? | >Усиление экипировки <br />>Строительство поселения <br />>Квестовый нарратив |
Чередуя этапы с различными задачами, интенсивностью геймплея и наградами в достаточно быстром темпе (этапы редко длятся больше 10 минут), Fallout 4 позволяет игроку не переутомиться от отдельных видов геймплея, стимулируя длинные игровые сессии с высоким погружением
### Diner Dash Adventures - цикл уровня

*Схема состояний и переходов между ними внутри основного цикла уровня*
Этапы:
**MATCH -** Соотнесение цвета/размера группы посетителей с цветом/размером столов
**QUEUE -** Принятие заказов в оптимальном порядке для минимизации времени готовки
**PLAN DELIVERY -** Определение оптимального маршрута для разноса блюд с учетом ограниченного количества переносимых блюд
**DELIVER -** Разнос блюд посетителям
При этом постоянное чередование типов задач и ограниченная скорость аватара игрока позволяют защитить игрока от переутомления
Овладение этим игровым циклом приводит к следующим измениям во взаимодействиях с ресурсами:
**Время** - в уровнях без лимита времени позволяет сократить время прохождения уровня и быстрее открыть опции кастомизации ресторана/сюжет
**Посетители** - уменьшает падение настроения от ожидания блюда, что позволяет избегать потерь посетителей от падения настроения до нуля.
**Сердечки** - позволяет повысить уровень настроения посетителей при окончании обслуживания, что повышает количество “сердечек”, получаемых от них
**Деньги** - в уровнях с лимитом по времени позволяет обслужить больше посетителей и, соответственно, заработать больше денег, что часто является ключом к получению максимального рейтинга на таких уровнях
**Шкала DASH** - облегчает объединение этапов обслуживания клиентов в комбо, повышающие скорость заполнения шкалы ускорения DASH
В итоге, такая структура основного цикла обеспечивает высокий потолок для роста навков, при этом не полностью завязывая его на координации движений (актуально, т.к. ЦА подобных игр - люди постарше), создает разнообразие задач, стоящих перед игроком на уровне и является источником небольших психологических наград (вид нескольких блюд, появляющихся одновременно, радикальное снижение времени выполнения операции при эффективной игре).
## Personal Projects
### Разработки на мобильные устройства
#### Dungeon Tower
Прототип разработан вместе с другом-разработчиком, в роли геймдизайнера. Игра представляет из себя пошаговый roguelike dungeon crawler, вдохновленный такими играми как Nethack и Pixel Dungeon. Ключевой целью во время разработки было адаптировать геймплей классических рогаликов к мобильным платформам не только на уровне технической реализации, но и геймдизайна. Для повышения динамичности и доступности были предприняты следующие шаги:
* Переработана система управления персонажем
* Упрощена боевая система, упразднено большинство характеристик
* Задана явная напрвленность уровней (вверх по башне), усиленная механикой лавы, постепенно запоняющей нижние этажи башни
* Переработаны и упрощены системы инвентаря и способностей, управление ими выведено на основной экран

#### CultistRoguelikeBot
Прототип разработан в одиночку в рамках курса по Нарративному дизайну на основе телеграм бота. Игра представляет из себя roguelike РПГ-декбилдер, где игроку нужно преодолевать постоянно усложняющиеся испытания в поисках древних знаний.
Перед дизайном ставились следующие задачи:
* Сочетать повествование с геймплеем, достоточно глубоким и интересным, но не избыточно сложным
* Отойти от линейной структуры квеста, создать более эмержентный опыт
* Реализовать механику декбилдера без регулярных сражений с врагами
* Сделать игру комфортно управляемой из интерфейса чатбота

### Разработки для НРИ (D&D 5e)
[**Common and Reliable Firearms (GM Binder)**](https://www.gmbinder.com/share/-LkIttewk0ldL-QWIGua)
Обширная система огнестрельного оружия, разработанная поскольку все существовавшие на момент разработки опции были недостаточно глубокими, опирались на anti-fun механику осечки и не позволяли собрать вокруг себя билд на персонажа
[**Modular Warlok Tweaks (GM Binder)**](https://www.gmbinder.com/share/-Lk33WVg5rDyaQd1A1ep)
Набор модульных модификаций и ребалансировок для Колдуна, закрывающий большинство проблем, обсуждаемых в комьюнити, плюс добавляющий несколько новых опций
[**Monk - Way of the Smoldering Match (GM Binder)**](https://www.gmbinder.com/share/-LhGX4NTE8RWQS7AYAtV)
Подкласс Монаха, специализирующийся на огнестрельном оружии и ган-кате
[**Paladin - Oath of Corruption (GM Binder)**](https://www.gmbinder.com/share/-LjymJ1m3CegleoIiyXF)
"Темный" подкласс Паладина в тематике боди-хоррора и космического ужаса Лавкрафта