更新文档

This commit is contained in:
2026-04-11 15:51:08 +08:00
parent 7a8dd4cea0
commit a257a8a912
6 changed files with 121 additions and 56 deletions

View File

@@ -259,7 +259,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
BaseUrl: https://brisk.lightyears.ltd
GameKey: briskh5verify
GameKey: game_a1faf5ee93d0
ClientVersion: 1.0.0
DeviceId: editor-device
ValidateSessionOnInitialize: 1
@@ -268,7 +268,7 @@ MonoBehaviour:
LoginCode:
Nickname: "Unity\u793A\u4F8B\u73A9\u5BB6"
AvatarUrl:
RankKey: h5-verify-rank-20260410034312-5cdd
RankKey: rank-20260411062004-2bce
SubmitScoreValue: 128
LeaderboardLimit: 10
AroundMeRange: 5

View File

@@ -19,17 +19,41 @@
## 2. 客户端主流程
1. `GET /api/client/bootstrap`
2. `POST /api/auth/login/exchange`
3. `Bearer access_token` 调用:
1. 可选:`GET /api/client/time`
2. `GET /api/client/bootstrap`
3. `POST /api/auth/login/exchange`
4.`Bearer access_token` 调用:
- `GET /api/player/me`
- `GET /api/announcements`
- 排行榜、存档、空间等业务接口
4. `GET /api/config/current` 为公开接口,登录前后都可调用
5. `GET /api/config/current` 为公开接口,登录前后都可调用
## 3. 初始化
### 3.1 获取初始化信息
### 3.1 获取平台时间
`GET /api/client/time`
说明:
- 平台级匿名授时接口
- 不需要 `game_key`
- 不依赖任何项目配置
- 返回 UTC 时间,适合客户端启动时做统一对时
示例:
```bash
curl "https://brisk.lightyears.ltd/api/client/time"
```
返回重点:
- `server_time`
- `server_unix`
- `server_unix_ms`
### 3.2 获取初始化信息
`GET /api/client/bootstrap`

View File

@@ -2,18 +2,18 @@
## 1. 这份文档适合做什么
这份文档用于说明当前 Brisk Unity SDK 的接入结构与推荐调用方式
这份文档用于在 Unity 侧封装 Brisk SDK
当前 SDK 已采用静态总入口
建议把 SDK 拆成以下层次
- `Brisk.InitializeAsync(...)`
- `Brisk.Auth.xxx`
- `Brisk.Player.xxx`
- `Brisk.Config.xxx`
- `Brisk.Announcements.xxx`
- `Brisk.Leaderboard.xxx`
- `Brisk.Archive.xxx`
- `Brisk.Space.xxx`
- `BriskTime`
- `BriskClient`
- `BriskAuth`
- `BriskConfig`
- `BriskAnnouncements`
- `BriskRanks`
- `BriskArchives`
- `BriskSpaces`
## 2. 初始化模型
@@ -26,6 +26,8 @@ Unity 客户端初始化建议持有:
不再需要项目级 `channel / platform`
如果只是做平台授时,不需要传 `gameKey`,可以单独调用时间接口。
示例:
```csharp
@@ -64,18 +66,31 @@ Task<LoginResult> LoginAsync(
## 4. 推荐接入顺序
1. `BootstrapAsync()`
2. 从第三方 SDK 获取:
1. 可选:`SyncServerTimeAsync()`
2. `BootstrapAsync()`
3. 从第三方 SDK 获取:
- `loginProvider`
- `loginUserId``code`
- 可选昵称、头像、扩展资料
3. `LoginAsync(...)`
4. 保存 `accessToken`
5. 拉取:
4. `LoginAsync(...)`
5. 保存 `accessToken`
6. 拉取:
- `GetMeAsync()`
- `GetCurrentConfigAsync()`
- `ListAnnouncementsAsync()`
6. 进入业务模块
7. 进入业务模块
平台授时接口建议封装:
```csharp
Task<ServerTimeResult> SyncServerTimeAsync()
```
建议返回:
- `ServerTime`
- `ServerUnix`
- `ServerUnixMs`
## 5. 身份模型建议
@@ -142,27 +157,12 @@ Task LikeSpaceByLoginIdentityAsync(string loginProvider, string loginUserId)
- msgpack bytes
- 压缩后的存档二进制
当前 SDK 提供:
Unity SDK 建议提供:
- `GetArchiveSlotsAsync()`
- `GetArchiveMetaAsync(slotNo)`
- `UploadAsync(slotNo, byte[], baseVersion, checksum)`
- `UploadTextAsync(slotNo, text, baseVersion, checksum)`
- `UploadJsonAsync(slotNo, payload, baseVersion, checksum)`
- `UploadArchiveAsync(slotNo, baseVersion, checksum, byte[])`
- `DownloadArchiveAsync(slotNo)`
- `DownloadTextAsync(slotNo)`
- `DownloadJsonAsync(slotNo)`
推荐上层使用策略:
- 文本存档:优先直接用 `UploadTextAsync / DownloadTextAsync`
- JSON 存档:优先直接用 `UploadJsonAsync / DownloadJsonAsync`
- 二进制存档:继续用 `UploadAsync / DownloadAsync`
其中:
- SDK 会自动计算上传用 `checksum`
- 手动传 `checksum` 时也可以带 `sha256:` 前缀SDK 会自动归一化
## 9. 玩家空间模块建议
@@ -177,7 +177,7 @@ Task LikeSpaceByLoginIdentityAsync(string loginProvider, string loginUserId)
- 小型二进制空间内容
- 文本、JSON、protobuf、msgpack 等自定义格式
当前 SDK / 接口核心是:
当前接口核心是:
- `UploadMySpaceContentAsync(baseVersion, contentType, checksum, byte[])`
- `DownloadSpaceContentByPlayerIdAsync(playerId)`
@@ -188,16 +188,6 @@ Task LikeSpaceByLoginIdentityAsync(string loginProvider, string loginUserId)
- `LikeSpaceByLoginIdentityAsync(loginProvider, loginUserId)`
- `GetMyVisitsAsync(limit)`
当前 SDK 额外提供了一个极简便捷入口:
- `Brisk.Space.UpdateMyAsync(payload, baseVersion, contentType, checksum)`
它的行为是:
- `payload``string` 时,自动按 `text/plain` 上传
- `payload``byte[]` 时,自动按 `application/octet-stream` 上传
- `payload` 为其他对象时,自动序列化为 JSON 并按 `application/json` 上传
建议 SDK 暴露两层模型:
- 空间主信息:
@@ -213,8 +203,7 @@ Task LikeSpaceByLoginIdentityAsync(string loginProvider, string loginUserId)
- 下载响应头中的 `X-Space-Version`
- 下载响应头中的 `X-Space-Checksum`
如果上层业务追求最省事,可以直接用 `UpdateMyAsync(string)``UpdateMyAsync(object)`
如果业务自己管理编码、压缩、protobuf、msgpack 等格式,则继续走 `byte[]` 上传下载接口。
如果上层业务实际保存的是文本或 JSON建议仍按 `byte[]` 统一收发,再由业务层自己决定如何编码和反序列化。
## 10. 动态配置建议

View File

@@ -1,7 +1,7 @@
# Brisk 错误码文档(内部实施版)
**版本**v0.1
**日期**2026-04-08
**版本**v0.2
**日期**2026-04-11
**说明**:当前工程内已使用的错误码分组与含义。
---
@@ -45,6 +45,13 @@
## 3. 当前已使用错误码
补充说明:
- `GET /api/client/time` 为平台匿名授时接口
- 该接口当前没有新增专属业务错误码
- 触发限流时仍使用通用限流错误码 `80001`
- 限流组件不可用时仍使用通用错误码 `80002`
| 错误码 | 接口/模块 | 含义 |
|---|---|---|
| `10001` | 客户端鉴权 | 缺少 token |

View File

@@ -4,6 +4,7 @@ Brisk 游戏服务端工程。
当前已实现模块:
- 平台授时 `time`
- 客户端初始化 `bootstrap`
- 登录换票 `auth`
- 玩家信息 `player`
@@ -20,6 +21,7 @@ Brisk 游戏服务端工程。
- 项目唯一标识只有 `game_key`
- 项目级 `channel / platform` 已移除
- 初始化和动态配置只依赖 `game_key`,配置筛选只看 `client_version`
- 平台授时接口不依赖 `game_key`,可直接匿名获取 UTC 服务器时间
- 登录模块单独处理第三方身份:
- `login_provider`:如 `tap`
- `login_user_id`:该登录平台返回的稳定唯一用户 ID
@@ -43,6 +45,7 @@ docker compose up --build
- `GET /health`
- `GET /api/ping`
- `GET /api/client/time`
- `GET /openapi.yaml`
开发环境默认账号:
@@ -54,6 +57,10 @@ docker compose up --build
## 接入说明
- 平台授时:
- 匿名接口 `GET /api/client/time`
- 无需传 `game_key`
- 返回 `server_time``server_unix``server_unix_ms`
- 客户端初始化:
- 必填 `game_key`
- 可选 `client_version`

View File

@@ -1,11 +1,12 @@
openapi: 3.0.3
info:
title: Brisk Game Service API
version: 0.1.0
version: 0.2.0
description: Current implemented Brisk server API for internal integration.
servers:
- url: /api
tags:
- name: time
- name: bootstrap
- name: auth
- name: player
@@ -51,6 +52,21 @@ components:
type: string
data:
nullable: true
ClientTimePayload:
type: object
properties:
server_time:
type: string
format: date-time
example: 2026-04-11T08:12:30Z
server_unix:
type: integer
format: int64
example: 1775895150
server_unix_ms:
type: integer
format: int64
example: 1775895150123
ExchangeRequest:
type: object
required: [game_key, login_provider]
@@ -494,6 +510,28 @@ components:
type: string
format: date-time
paths:
/client/time:
get:
tags: [time]
summary: Get platform server time
responses:
'200':
description: Current platform UTC time
content:
application/json:
schema:
type: object
properties:
code:
type: integer
example: 0
message:
type: string
example: ok
data:
$ref: '#/components/schemas/ClientTimePayload'
'429': { description: Rate limited }
'500': { description: Rate limit unavailable }
/client/bootstrap:
get:
tags: [bootstrap]