Добавить механику лутбоксов

Кристина2 года в сервисе
Данные заказчика будут вам доступны после подачи заявки
03.09.2023

Общая схема проекта

Это модель игры, в которой есть:

внутриигровая валюта

магазин с 2 слотами, в каждом из которых есть некоторое количество этой валюты

условный матч, в который можно сыграть за некоторую "ставку" в игровой валюте.

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

Сам матч условный: это просто рандомное определение выиграл/проиграл.

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

Клиент и сервер выделены в отдельные "packages", подключаемые через PackageManager. Это сделано для максмальной изоляции кода. На сервере есть свои компоненты, реализующие логику фич (Wallet, Shop, Match). На клиенте - свои.

Необходимость разобраться в том:

как взаимодействуют клиент и сервер,

как учитывать лаг сети (обмен данными между реальным клиентом и реальным сервером не будет мгновенным)

как сервер сохраняет и восстанавливает данные между сессиями игрока.

Нужно сделать новую функциональность в рамках тех подходов, которые уже есть в проекте.

Задание

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

После того, как лутбокс попал в слот игрок может нажать на кнопку и начать его "разблокировку". Разблокировка длится 20 секунд.

По истечению времени разблокировки лутбокс считается доступным к "открытию". Одновременно на разблокировке может находится только 1 лутбокс Открытие означает освобождение слота с начислением контента лутбокса.

Открытие происходит по нажатию на кнопку слота.

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

Контент лутбокса - внутриигровая валюта. Может быть 2 типа лутбоксов по объему контента:

большой (содержит 100 валюты)

маленький (содержит 20 валюты)

Принцип выдачи типа лутбокса при победе:

каждый 4й лутбокс должен быть большим, остальные - маленькие.

Реализовать игровую механику и отображение в GUI с использованием immediate mode GUI.

То есть, GUI такое же, как уже сделано в проекте для всего остального.

То, как будет выглядеть в итоге интерфейс - на ваше усмотрение.

Но там должны быть ясно различимы 2 слота для лутбоксов, состояние этих слотов (пустой / ожидает / разблокируется (с отображением таймера) / готов к открытию).

Референс: Bowling Crew, Golf Clash, Clash Royale