Идея:
разработать различное API для работы с сетью Интернет
Задача 1. Таблица рекордов
в общих штрихах
серверная часть: сервер БД
WEB интерфейс
- регистрация пользователя логин-пароль (дабы таблицы рекордов были персонализированными)
- регистрация игры и получение уникального ID игры
- просмотр рекордов/статистики игр итд итп
API для AZБК
- авторизация игры
- авторизация пользователя
- добавление рекорда
клиентская часть на AZ*
- авторизация игры
- авторизация пользователя
- добавление рекорда
Задача 2. Сетевые диски
возможность подключения в режиме R/O или R/W образа дисков на сервере
UPD 2024-03-17
разрисовываю детально и начинаю делать
UPD 2024-03-24
планируется такой пакет команд AZ60 авторизация продукта по хешу
61 авторизация пользователя по хешу
62 регистрация пользователя
63 передача параметров из буфера на сервер
64 считывание таблицы рекордов с сервера в файл на карточке
начал делать команды
UPD 2024-03-25
долго не хотел этим заниматься, но видимо пришло время
сделаю сетевой сервер дисков
иначе говоря будет возможность цеплять любые сетевые диски как устройства AZ
или будет отдельный драйвер - еще не решил
но суть именно такая - блочное сетевое устройство
начал писать сервер - демон на сях
проект API по рекордам и ачивкам
обмен будет в виде запросов с ответами отправляемых со стороны STM32
формат - JSON
организация обмена - типовая последовательность
1. #23 принять с шины в буфер данные - те загоняем данные (кроме инициализации - тут содержимое буфера не имеет значения)
2. #60 передача параметров из буфера на сервер, получение ответа
3. #22 отдать на шину считанный блок из буфера
последовательность
1. инициализация
включает в себя
- резолвинг домена с back-end-ом - dns имя back.hof.maxiol.com
- установка первоначального соединения с сервером, прокачка шифра, получение номера(хеша) сессии
результатом является такой JSON
{"SID":"хеш сессии","RESULT":"OK"}
или ошибка
{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
технически сессия будет с солью дабы не раскрутить
2. авторизация игры
технически это отправка JSON
{"SID":"хеш сессии","CMD":"AUTH_GAME","GID":"хеш игры","SERNUM":"1234567890","UTC":"420"}
где
SERNUM - серийный номер игры (для игр ретейл поставки)
UTC - часовой пояс игрока, число в минутах, брать из AZ.INI
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"GAME_NOT_FOUND"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
3. регистрация пользователя
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя","EMAIL":"email пользователя"}
все поля обязательные!
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NIKNAME_TAKEN"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"PASSWORD_TOO_SHORT"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
4. авторизация пользователя
технически это отправка JSON
{"SID":"хеш сессии","CMD":"AUTH_USER","NIKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK","UID":"хеш пользователя"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"USER_NOT_FOUND_OR_WRONG_PASSWORD"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
5. регистрация ачивмента
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_ACHIEVEMENT","ACHIEVEMENT":"id aчивмента"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"ACHIEVEMENT_NOT_EXISTS"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"ACHIEVEMENT_ALREADY_TAKEN"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
6. регистрация рекорда игры
технически это отправка JSON
{"SID":"хеш сессии","CMD":"REG_SCORE","SCORE":"число"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
7. продление сессии
технически это отправка JSON
{"SID":"хеш сессии","CMD":"NOP"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
8. трекинг кастомной информации
технически это отправка JSON
{"SID":"хеш сессии","CMD":"TRACKING","PARAMETER":"значение параметра","SERNUM":"1234567890"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
команда предназначена для трекинга какой-то своей информации в игре
9. завершение сессии
технически это отправка JSON
{"SID":"хеш сессии","CMD":"CLOSE_SESSION"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
10. Получение таблицы рекордов
технически это отправка JSON
{"SID":"хеш сессии","CMD":"GET_SCORE","COUNT":"количество строк"}
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
{"Peter":1122,"Ben":1100,"Joe":945}
или
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
ограничения
1. кодировка ASCII - те только латиница, для полной унификации
2. длина NIKNAME - от 3х до 16 символов,
3. длина EMAIL - до 32 символов
4. длина PASSWORD - от 8 до 16 символов
5. ACHIVMENT - это его числовой идентификатор в системе (смотрим на сайте)
6. длина SCORE - от 1х до 16 цифр
7. количество получаемых записей рекордов от 1 до 10
8. время жизни сессии игры - 4 часа
Русская версия Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)