Вводная информация
Привет! 👋
Теперь у тебя важная задача — написать ТЗ на комплексную фичу. Это твой шанс закрепить полученные знания и применить их на практике.
Ты сам выбираешь, какую фичу описывать:
— это может быть что-то для твоей игры
— или для известной игры, но важно, чтобы такой фичи там ещё не было
Главное — выбирай что-то масштабное и интересное. Фича должна быть жирной: со схемами, формулами, переменными, контентом и так далее…
Для вдохновения можешь представить, например:
- Уникальный боевой режим в игре про выживание.
- Мета-механику с кастомизацией персонажей в рогалике.
- Систему социальных взаимодействий с NPC, которая меняет их отношение к игроку.
Но пока сосредоточься на том, что ты уже умеешь:
1. Выбери фичу
2. Напиши Цели и Общее описание фичи.
Это основа, с которой мы будем работать дальше. Задачи и материалы лекций будут добавляться ниже, по мере продвижения по интенсиву. ↓↓↓
Дальше в лекциях мы разберём:
→ как создавать схемы и user flow для контекстных разделов (материалы лекции №5)
→ как делать мокапы и UI-декомпозицию,
→ как запрашивать аналитику, вычитывать документ и обеспечивать связность с ГДД.
Удачи! 💪 Помни, что каждый шаг приближает тебя к профессиональному уровню. 🚀
Nested-Механика сытости в Days Gone
Описание:
Игрок создаёт и использует готовую еду, чтобы её продавать или заполнять параметр сытости. Значение параметра сытости влияет на характеристики персонажа как в положительную, так и в отрицательную сторону.
Цель
Основная цель фичи:
Дать игроку возможность влиять на характеристики персонажа, в основном используя уже существующие механики и объекты.
Дополнительные цели фичи:
- Геймплейно поддержать нарратив выживания и поиска пропитания в мире постапокалипсиса.
- Добавить альтернативный способ использования подбираемых объектов класса «еда».
Нарратив (Обоснование)
Механика сытости поддерживает сеттинг игры, который рассказывает о группах выживших в мире пост апокалипсиса. Иначе получается парадокс:
Выжившие сосредоточены в лагерях, где они выращивают еду и откуда они отправляются на охоту.
Раненый друг гг переселяется в лагерь, где его кормят в обмен на работу после выздоровления.
Фрики (зомби) едят трупы, хищники охотятся на оленей.
И только главному герою вообще есть не нужно. Всю еду, которую он собирает — он исключительно продаёт в лагерях.
Описание геймплея
Игрок заполняет шкалу сытости, используя предметы класса «готовая еда».
Шкала сытости истощается с течением времени.
Параметры персонажа изменяются в зависимости от степени заполнения шкалы сытости.
Игрок создаёт и использует предметы класса «готовая еда» из предметов класса «еда» с помощью «колеса выживания» (крафт, модификация и использование предметов).
Игрок может продавать предметы класса «готовая еда» тем же способом, что и предметы класса "еда" в лагерях на кухне.
Класс предметов “готовая еда”
В этот класс будут входить предметы, указанные в таблице баланса:
“Жаркое из оленины”
“Медвежьи котлеты”
“Рагу из волчатины”
Предметы класса «готовая еда» обладают параметром: наполнение сытости [Satiety_Filling].
Для каждого из этих предметов нужно создать рецепт крафта.
Пример: рецепт крафта жаркого из оленины — [Roast_Venison_Craft_Recipe]. Он требует расхода: [Roast_Venison_Deer_Amount] оленины и [Roast_Venison_Berry_Amount] ягод.
Ограничение числа предметов
Предметы класса «готовая еда» обладают параметром, ограничивающим их максимальное количество, доступное для хранения игроком — [Max_Coocked_Food_Carry_Amount]. Значения этого параметра для каждого типа предметов указаны в таблице баланса.
В другом документе: вводим переменную, которая обозначает максимальное число предметов класса «еда» каждого типа, доступное для хранения — [Max_Food_Carry_Amount].
Параметры персонажа «Сытости»
Текущая сытость персонажа: [Current_Satiety]
Максимальная сытость персонажа: [Max_Satiety]
[Current_Satiety] определяется в диапазоне [1; Max_Satiety].
Заполнение сытости
[Current_Satiety] заполняется при использовании предметов класса «готовая еда» значение предмета [Satiety_Filling] до [Max_Satiety].
Если сытость максимальная, то персонаж не может использовать предметы класса "готовая еда".
Убывание сытости
После использования предмета класса «Готовая еда», в течении определенного времени [Timer_Satiety_Pause], значение сытости остается неизменным. Когда время [Timer_Satiety_Pause] заканчивается — сытость персонажа начинает уменьшаться со скоростью [Satiety_Reduction] до минимального значения (1).
Диапазоны сытости
Диапазон значений текущей сытости [Current_Satiety] персонажа разбит на три интервала:
- «Голод» определяется значениями [1;K]
- «Насыщение» определяется значениями [K;M]
- «Пресыщение» определяется значениями [M;Max_Satiety]
Характеристики персонажа меняются в зависимости от того, в каком разделе находится значение сытости в текущий момент. Список характеристик и влияющих на них переменных смотри в таблице баланса.
Пример: когда [Current_Satiety] находится в интервале «голод», шанс критического удара в ближнем бою увеличивается на 15%, а скорость восстановления выносливости уменьшается на 50 %.
Шкала сытости в UI
Шкала сытости расположена в HUD ниже шкал выносливости и здоровья, как менее важная, но выше количества медикаментов и лома. Она разделена на 3 раздела вертикальными линиями, разделы на шкале соответствуют разделам “голод”, “насыщение”, “пресыщение” слева направо.
Внутри шкалы отображается значение параметра [Current_Satiety] в процентах от максимального значения.
Перед шкалой стоит спрайт, обозначающий сытость персонажа [Icon_Satiety].
Вопрос: возможно стоит менять цвет заполнения шкалы сытости в зависимости от того в каком разделе находится значение. Например, когда значение в разделе “пресыщение” - цвет шкалы зелёный, когда в “насыщении” - жёлтый, когда в “голоде” - красный.
Мелким планом в HUD
Крупным планом в HUD
Раздел «колеса выживания» → «питание»
Используются механики раздела “медицина”, но с другими типами характеристик, расходуемых и подбираемых предметов. Не реализация, будет заполнено ГД при конфигурации.
Создание «готовой еды»
Игрок создаёт класс предметов «готовая еда» из класса предметов «еда».
При создании игрок получает предмет класса «готовая еда», но тратит предметы класса «еда», которые указаны в соответственном рецепте крафта.
Если у игрока нет возможности создать предмет класса «готовая еда» — он получает соответствующую индикацию в UI. Как и в других системах крафта в игре.
Создание предмета проигрывает в UI стандартную анимацию крафта [a_Craft_Items] с иконкой соответствующего предмета взятой из таблицы контента.
Использование «готовой еды»
Игрок использует на персонажа предметы класса “готовая еда”. При этом изменяется значение [Current_Satiety], и удаляется использованный предмет класса готовая еда.
Если [Current_Satiety] = [Max_Satiety] — блокируем возможность использования предмета класса «готовая_еда» и выводим индикацию в UI: «Максимум сытости».
Если предмета нет в наличии — блокируем возможность использования предмета «готовая_еда» и выводим индикацию в UI: «Не осталось».
Использование предмета классса «готовая еда» происходит со стандартной анимацией использования предмета [a_Item_Use] с иконкой соответствующего предмета взятой из таблицы контента.
Перемещение игрока по разделу «Питание»
UI раздела «Питание»
UI аналогичен разделу «медицина», но использует свои иконки, названия и обозначения.
Мокап UI раздела «Питание»
Если использование или создание предмета класса «готовая еда» невозможно — соответствующая кнопка и её название подсвечиваются красным.
«Готовая еда» в экономике
Все предметы класса «готовая еда» получают тэг "IS_Tradable", позволяющий их покупать и продавать в кухнях лагерей.
Покупка в лагере
Цена покупки предмета класса "готовая еда" определяется по формуле
[Coocked_Food_Buying_Price] = SUM(a1+a2+a3)*[Coocked_Food_Buy_Multiplier]
[Coocked_Food_Buying_Price] — цена покупки предмета класса «готовая еда»
a1, a2, a3 — цена продажи каждого материала, из которого создаётся этот предмет
[Coocked_Food_Buy_Multiplier] — коэффициент покупки «готовой еды»
Продажа в лагере
Цена продажи предмета класса "готовая еда" определяется по формуле
[Coocked_Food_Sale_Price] = SUM(a1+a2+a3)*[Coocked_Food_Sale_Multiplier]
[Coocked_Food_Sale_Price] — цена покупки предмета класса «готовая еда»
a1, a2, a3 — цена продажи каждого материала, из которого создаётся этот предмет
[Coocked_Food_Sale_Multiplier] — коэффициент продажи «готовой еды»
Изменение в балансе спавна предметов класса «еда» (проще через coeff)
Мы вносим изменения в объекты содержащие в себе обьекты класса «еда».
Так как теперь они используются не только для продажи, но и для крафта. Мы увеличиваем множитель их шанса на спавн.
Пример: увеличить шанс спавна животных в 1.5 раза. Увеличить шанс спавна кустарников, грибов и травы в 2 раза. Затем понаблюдать за плейтестами.
Аналитика
Первое использование
Создать в фиче событие [First_Meal], которое надо привязать к первому использованию предмета класса «готовая еда» игроком после обучения.
В событии указывается время, ID игрока, время проведённое игроком в игре, значение [Current_Satiety] на момент события.
Эти события должны быть доступны ГД.
События собираются в первые 5 игровых часов игрока в игре.
При помощи этой аналитики мы сможем понять какой процент игроков используют механику сытости.
В зависимости от результатов аналитики, мы сможем принять решения:
1. Если результаты показывают очень низкий процент игроков, использующих «готовую еду», то стоит поработать над моментом обучения механике и увеличить яркость индикации шкалы сытости.
2. Если результаты показывают низкий процент игроков, использующих «готовую еду», то стоит увеличить яркость индикации шкалы сытости и увеличить влияние [Current_Satiety] на характеристики персонажа в интервалах «насыщение» и «пресыщение» и уменьшить влияние [Current_Satiety] на характеристики в интервале «голод».
3. Если результаты показывают средний или высокий процент игроков, использующих готовую еду, то оставляем механику функционировать в текущем виде.
Покупка/продажа
Создать в фиче события [Buy_Cooked_Food] и [Sell_Cooked_Food]. Они должны быть привязаны к продаже и покупке предметов «готовая еда» в лагерях.
В событии указывается время, ID игрока, тип покупаемого/продаваемого предмета и количество купленных/проданных предметов.
Аналитика по этим событиям собирается в первые 10 часов игрока в игре.
Аналитика должна быть доступна ГД
При помощи этой аналитики мы можем понять соотношение покупки/продажи предметов. И определить нет ли переизбытка справна «еды» в игре, нет слишком ли завышены цены на покупку/продажу предметов каждого типа.
В зависимости от результатов аналитики, мы сможем принять решения по доработке, переделке, откату, стабилизации…etc…
Перечень вариантов:
1) Если предметы всех типов значительно чаще покупают, чем продают, или только покупают, то стоит увеличить шанс спавна предметов класса «еда».
2) Если предметы всех типов значительно чаще продают, чем покупают, то стоит уменьшить цену продажи и цену покупки.
3) Если дисбаланс есть только у каких-то конкретных типов предметов, то предшествующие варианты применяются только к этому типу предметов.
4) Если баланс покупок/продаж находится в устраивающих нас рамках, то оставляем механику функционировать в текущем виде.
До какого значения пользователь увеличивает шкалу выносливости
Создать в фиче события [Satiety_Fillment_Stop], которые присылают значение [Current-Satiety] через промежуток времени, после которого пользователь перестал использовать готовую еду.
Это позволит нам понять увеличивают ли пользователи значение шкалы сытости до насщения или пресыщения
Если большинство пользователей увеличивают шкалу сытости только до интервала «насыщение», то стоит увеличить бонусы к характеристикам, которые идут от нахождения [Current_Satiety] в интервале «пресыщение».