проект API по рекордам и ачивкам - https://hof.maxiol.com/ Hall of Fame проект API по рекордам и ачивкам обмен будет в виде запросов с ответами отправляемых со стороны STM32
формат - JSON
организация обмена - типовая последовательность
1. #023 принять с шины в буфер данные - те загоняем данные (кроме инициализации - тут содержимое буфера не имеет значения)
2. #025 инициализация (или #026 - обмен)
3. #022 отдать на шину считанный блок из буфера
последовательность
1. инициализация включает в себя
- резолвинг домена с back-end-ом - dns имя back.hof.maxiol.com
- установка первоначального соединения с сервером, прокачка шифра, получение номера(хеша) сессии
результатом является такой JSON
Код
{"SID":"хеш сессии","RESULT":"OK"}
или ошибка
Код
{"RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"RESULT":"ERROR","DESCRIPTION":"CONNECTION_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","NICKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя","EMAIL":"email пользователя"}
все поля обязательные!
ответ тоже JSON
{"SID":"хеш сессии","RESULT":"OK"}
или
Код
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NO_ALL_DATA"} - какое-то поле NULL
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"EMAIL_ALREADY_USED"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NICKNAME_TAKEN"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NOT_VALID_EMAIL"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NOT_VALID_NICKNAME"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"NOT_VALID_PASSWORD"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SESSION_NOT_EXISTS_OR_EXPIRED"}
4. авторизация пользователятехнически это отправка JSON
{"SID":"хеш сессии","CMD":"AUTH_USER","NICKNAME":"никнейм пользователя","PASSWORD":"пароль пользователя"}
ответ тоже JSON
Код
{"SID":"хеш сессии","RESULT":"OK"}
или
Код
{"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":"USER_AUTHORIZATION_REQUIRED"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"GAME_AUTHORIZATION_REQUIRED"}
{"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":"USER_AUTHORIZATION_REQUIRED"}
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"GAME_AUTHORIZATION_REQUIRED"}
{"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":"имя параметра","VALUE":"значение параметра"}
ответ тоже JSON
Код
{"SID":"хеш сессии","RESULT":"OK"}
или
Код
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
команда предназначена для трекинга какой-то своей информации в игре
для трекинга нескольких параметров сразу доступен такой синтаксис
Код
{"SID":"хеш сессии","CMD":"TRACKING","PARAMETER":"имя параметра1|имя параметра2|имя параметра3","VALUE":"значение параметра1|значение параметра2|значение параметра3"}
те имена и значения разделаются через пайп - |
9. завершение сессиитехнически это отправка JSON
Код
{"SID":"хеш сессии","CMD":"CLOSE_SESSION"}
ответ тоже JSON
Код
{"SID":"хеш сессии","RESULT":"OK"}
или
Цитата
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
10. Получение таблицы рекордовтехнически это отправка JSON
Код
{"SID":"хеш сессии","CMD":"GET_SCORE","COUNT":"количество строк","DETAILS":"уровень детализации"}
уровень детализации определяет набор возвращаемых полей и формать
ответ тоже JSON - отличается форматами, возможно добавление новых форматов по заказу
DETAILS=1
Код
{"SID":"хеш сессии","RESULT":"OK","COUNT":9,"SCORES":[["1","TEST","1328"],["2","TEST5","1321"],["3","TEST","1195"],["4","TEST","704"],["5","TEST","672"],["6","TEST","541"],["7","TEST4","519"],["8","TEST","432"],["9","TEST","400"]]}<p><p>{"SID":"BKBHKLBBKBKJBBK","RESULT":"OK","COUNT":9,"SCORES":{"Peter":5,"Ben":37,"Joe":43}}
DETAILS=2
Код
{"SID":"хеш сессии","RESULT":"OK","COUNT":9,"SCORES":[[" 1","TEST "," 1328"],[" 2","TEST5 "," 1321"],[" 3","TEST "," 1195"],[" 4","TEST "," 704"],[" 5","TEST "," 672"],[" 6","TEST "," 541"],[" 7","TEST4 "," 519"],[" 8","TEST "," 432"],[" 9","TEST "," 400"]]}
DETAILS=3
Код
{"SID":"хеш сессии","RESULT":"OK","COUNT":9,"SCORES":[[" 1|TEST | 1328"],[" 2|TEST5 | 1321"],[" 3|TEST | 1195"],[" 4|TEST | 704"],[" 5|TEST | 672"],[" 6|TEST | 541"],[" 7|TEST4 | 519"],[" 8|TEST | 432"],[" 9|TEST | 400"]]}
DETAILS=4
тут добавлена короткая дата
Код
{"SID":"хеш сессии","RESULT":"OK","COUNT":9,"SCORES":[["1","TEST","1328","2024-12-02"],["2","TEST5","1321","2024-12-03"],["3","TEST","1195","2024-12-02"],["4","TEST","704","2024-12-02"],["5","TEST","672","2024-12-02"],["6","TEST","541","2024-12-02"],["7","TEST4","519","2024-12-02"],["8","TEST","432","2024-12-03"],["9","TEST","400","2024-12-02"]]}
DETAILS=5
тут добавлена дата + время
Код
{"SID":"хеш сессии","RESULT":"OK","COUNT":9,"SCORES":[["1","TEST","1328","2024-12-02 17:02"],["2","TEST5","1321","2024-12-03 14:51"],["3","TEST","1195","2024-12-02 17:01"],["4","TEST","704","2024-12-02 16:52"],["5","TEST","672","2024-12-02 16:59"],["6","TEST","541","2024-12-02 17:04"],["7","TEST4","519","2024-12-02 17:10"],["8","TEST","432","2024-12-03 14:50"],["9","TEST","400","2024-12-02 16:52"]]}
DETAILS=6 на тему 3й формы добавлена дата
Код
{"SID":"BKBHKLBBKBKJBBK","RESULT":"OK","COUNT":9,"SCORES":[[" 1|TEST |2024-12-02| 1328"],[" 2|TEST5 |2024-12-03| 1321"],[" 3|TEST |2024-12-02| 1195"],[" 4|TEST |2024-12-02| 704"],[" 5|TEST |2024-12-02| 672"],[" 6|TEST |2024-12-02| 541"],[" 7|TEST4 |2024-12-02| 519"],[" 8|TEST |2024-12-03| 432"],[" 9|TEST |2024-12-02| 400"]]}
DETAILS=7 на тему 3й формы добавлена дата + время
Код
{"SID":"BKBHKLBBKBKJBBK","RESULT":"OK","COUNT":9,"SCORES":[[" 1|TEST |2024-12-02 17:02| 1328"],[" 2|TEST5 |2024-12-03 14:51| 1321"],[" 3|TEST |2024-12-02 17:01| 1195"],[" 4|TEST |2024-12-02 16:52| 704"],[" 5|TEST |2024-12-02 16:59| 672"],[" 6|TEST |2024-12-02 17:04| 541"],[" 7|TEST4 |2024-12-02 17:10| 519"],[" 8|TEST |2024-12-03 14:50| 432"],[" 9|TEST |2024-12-02 16:52| 400"]]}
или
Код
{"SID":"хеш сессии","RESULT":"ERROR","DESCRIPTION":"SERVER_ERROR"}
ограничения1. применяется кодировка ASCII - те только латиница, для полной унификации
2. длина NICKNAME - от 3х до 16 символов,
3. длина EMAIL - до 32 символов
4. длина PASSWORD - от 8 до 16 символов
5. ACHIVMENT - это его числовой идентификатор в системе (смотрим на сайте)
6. длина SCORE - от 1х до 16 цифр
7. количество получаемых записей рекордов от 1 до 10
8. время жизни сессии игры - 4 часа
9. имя параметра - от 1ого до 32 символов
10. значение параметра - от 1ого до 32 символов