Разработать базу данных и REST API для доступа к ней
35 000 руб. за проект
Введение
Цель создания
Игра представляет из себя сборку .webasm для запуска ее в браузере ПК без скачивания конечного приложения. Разработка игры ведется на Unity 2021 для WebGL 2.0 в среде .NET 4.5.
Игра ведет учет пользователей, результатов прохождения игры и иных данных, которые должны хранится вне зависимости от конечных экземпляров игры. Таким образом нужна внешняя БД и API для доступа к ней из самой игры.
Описание игры
Игра представляет из себя 2D платформер с тремя уровнями и c несколькими встроенными в эти уровни мини-играми. Главная цель игрока пройти все уровни, а целью прохождения каждого уровня является прохождения всех мини-игр в нем. Каждую мини-игру и каждый уровень игрок может пройти лишь единожды. На уровне так же расположены неуничтожаемые противники и собираемые монетки.
Главный и единственный ресурс игрока – время: при прохождении мини-игр, считается и суммируется время, затраченное на них игроком. За ошибки в мини-играх или столкновение с противниками на уровне игрок получает штрафное время, за сбор расположенных на уровне монеток – суммарное время сокращается на некоторую величину. Таким образом в конечном итоге выстраивается рейтинг игроков по суммарному времени.
ТЗ на создание базы данных
Требуется создать реляционную БД, хранящую в себе набор следующих сущностей с их атрибутами (звездочкой выделены ключевые атрибуты сущностей):
В качестве примера к данному документу прилагается пример такой БД в формате «Exel». Конечная структура и связи сущностей могут немного редактироваться в зависимости от рекомендаций разработчика.
ТЗ на создание API
Общие требования
Для доступа к БД из клиента, требуется разработать REST API. URI запросов рекомендуется организовывать по шаблону: /<ИМЯ_ТАБЛИЦЫ>/<ЗАПРОС>...
Основные запросы
Запросы к пользователям
Соответственно нужен GET-запрос на получение пользователя по ID пользователя. В случае если в БД нет такого пользователя, то он должен быть туда записан с указанным ID и пустыми значениями остальных атрибутов 2. Для заполнения остальных полей пользователя нужен PUT-запрос с параметрами для заполнения недостающих данных
Запросы к мини-играм и результатам
Запросы к монеткам и их сборам
Запросы к штрафам
Дополнительные запросы
Требования к информационной безопасности
Все данные передаваемые запросами симметрично шифруются, по вшитому в сервер и клиент ключу, здесь не нужна особенная безопасность данных, так как не хранится никакой конфиденциальной информации.
Требования к передаче продукта
Продукт должен быть предоставлен в формате Docker Compose, который мы будем разворачивать на своих серверах.
Цель создания
Игра представляет из себя сборку .webasm для запуска ее в браузере ПК без скачивания конечного приложения. Разработка игры ведется на Unity 2021 для WebGL 2.0 в среде .NET 4.5.
Игра ведет учет пользователей, результатов прохождения игры и иных данных, которые должны хранится вне зависимости от конечных экземпляров игры. Таким образом нужна внешняя БД и API для доступа к ней из самой игры.
Описание игры
Игра представляет из себя 2D платформер с тремя уровнями и c несколькими встроенными в эти уровни мини-играми. Главная цель игрока пройти все уровни, а целью прохождения каждого уровня является прохождения всех мини-игр в нем. Каждую мини-игру и каждый уровень игрок может пройти лишь единожды. На уровне так же расположены неуничтожаемые противники и собираемые монетки.
Главный и единственный ресурс игрока – время: при прохождении мини-игр, считается и суммируется время, затраченное на них игроком. За ошибки в мини-играх или столкновение с противниками на уровне игрок получает штрафное время, за сбор расположенных на уровне монеток – суммарное время сокращается на некоторую величину. Таким образом в конечном итоге выстраивается рейтинг игроков по суммарному времени.
ТЗ на создание базы данных
Требуется создать реляционную БД, хранящую в себе набор следующих сущностей с их атрибутами (звездочкой выделены ключевые атрибуты сущностей):
- Пользователь:
- *Уникальный ID (скорее всего, строка на подобии GUID)
- Никнейм (уникальная строка)
- Результат мини-игры:
- *ID мини-игры (неотрицательное целое)
- *ID пользователя (неотрицательное целое – соотносится с сущностью «пользователь»)
- Суммарное время (неотрицательное число с плавающей точкой)
- Завершение (логическое значение)
- Сбор монетки:
- *ID монетки (неотрицательное целое)
- *ID пользователя (неотрицательное целое – соотносится с сущностью «пользователь»)
- Штраф:
- ID пользователя (неотрицательное целое – соотносится с сущностью «пользователь»)
- Суммарное время (неотрицательное число с плавающей точкой)
- Рейтинг:
- *ID пользователя (строка – соотносится с сущностью «пользователь»)
- Никнейм (строка – соотносится с сущностью «пользователь»)
- Суммарное время (неотрицательное число с плавающей точкой - подсчитывается автоматически)
В качестве примера к данному документу прилагается пример такой БД в формате «Exel». Конечная структура и связи сущностей могут немного редактироваться в зависимости от рекомендаций разработчика.
ТЗ на создание API
Общие требования
Для доступа к БД из клиента, требуется разработать REST API. URI запросов рекомендуется организовывать по шаблону: /<ИМЯ_ТАБЛИЦЫ>/<ЗАПРОС>...
Основные запросы
Запросы к пользователям
- Вход в игру сбудет происходить с помощью авторизации на стороннем сервисе с помощью Open ID, таким образом игра уже при входе будет получать уникальный ID пользователя.
Соответственно нужен GET-запрос на получение пользователя по ID пользователя. В случае если в БД нет такого пользователя, то он должен быть туда записан с указанным ID и пустыми значениями остальных атрибутов 2. Для заполнения остальных полей пользователя нужен PUT-запрос с параметрами для заполнения недостающих данных
Запросы к мини-играм и результатам
- GET-запрос на получение всех результатов мини-игр, связанных с указанным ID пользователя
- PUT-запрос на запись результатов мини-игр, связанных с указанным ID пользователя. Если результаты мини-игр уже записаны в БД, то они перезаписываются
Запросы к монеткам и их сборам
- GET-запрос на получение всех собранных монеток указанным ID пользователя
- PUT-запрос на запись собранных монеток, связанных с указанным ID пользователя. Если собранные монетки уже записаны в БД, то ничего не происходит
Запросы к штрафам
- GET-запрос на получение суммарного времени штрафа для указанного ID пользователя
- PUT-запрос на запись/перезапись суммарного времени штрафа для указанного ID пользователя
Дополнительные запросы
- GET-запрос на получение топ-N рейтинга, где N - параметр запроса.
Для подсчета рейтинга надо вначале подсчитать суммарное время каждого верифицированного (то есть, с НЕпустым никнеймом) пользователя.
Время подсчитывается, как сумма времени всех результатов мини-игр связанных с данным пользователем и суммарного времени штрафа данного пользователя (сумма не можеn при этом быть отрицательной) за вычетом суммы стоимостей всех собранных данным пользователем монеток.
Далее полученные рейтинги необходимо отсортировать по возрастанию полученного времени и вернуть в ответе на запрос первые N.
В созданной для этого таблице должны размещаться только верифицированные пользователи. Таблица должна обновляться автоматически при записи сопутствующих данных в БД.
Требования к информационной безопасности
Все данные передаваемые запросами симметрично шифруются, по вшитому в сервер и клиент ключу, здесь не нужна особенная безопасность данных, так как не хранится никакой конфиденциальной информации.
Требования к передаче продукта
Продукт должен быть предоставлен в формате Docker Compose, который мы будем разворачивать на своих серверах.
- Файлы
Отзывы
Привлек внимание еще на этапе поиска исполнителя тем, что в отличие от многих соискателей вместо пустых "я крутой Full Stack, могу все и сразу и опыта у меня за троих!", сразу прочитал ТЗ и написал конкретно и внятно:
"Сделаю БД так-то,
API - вот так;
Добавлю вот такие дополнения к БД;
Время исполнения - вот столько."
То есть, человек сразу показал понимание того, что, как и почему он будет делать для конкретной задачи.
Задача была исполнена точно в срок, по ТЗ и без проблем (со стороны исполнителя, по крайней мере) работает;
Так же безвозмездно была помощь по развертке БД на сервере, и разъяснению аспектов работы API.
Все остальные личные/профессиональные характеристики - в звездочках (все 5). Рекомендуем к найму!
~ 3 года
назад
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.