1
This commit is contained in:
@@ -82,7 +82,7 @@
|
||||
5. 玩家从广场进入某个作品时,第 1 关必须先显示当前作品本身。
|
||||
6. 第 2 关及以后必须按照“标签相似度权重 `70%` + 同作者权重 `30%`”选择下一关。
|
||||
7. 游戏运行时必须全屏展示拼图画布。
|
||||
8. 新游戏进入时难度必须从 `3*3` 开始,完成 `3` 关后切为 `4*4`,后续持续为 `4*4`。
|
||||
8. 新游戏进入时难度必须从第 `1` 关的 `3*3` 开始,并按关卡配置推进到 `4*4`、`5*5`、`6*6`、`7*7`;第 `11` 关起每 `6` 关循环复用第 `5~10` 关配置。
|
||||
9. 拼图运行时必须支持:
|
||||
- 点击选择两块并交换
|
||||
- 正确相邻后自动合并
|
||||
@@ -517,21 +517,35 @@ tagSimilarityScore =
|
||||
本次建议同时显示:
|
||||
|
||||
1. 当前关卡序号
|
||||
2. 当前网格规格,例如 `3x3` 或 `4x4`
|
||||
2. 当前网格规格,例如 `3x3`、`5x5` 或 `7x7`
|
||||
|
||||
## 9.3 难度与关卡推进规则
|
||||
|
||||
每次新 run 都必须从最低难度开始:
|
||||
每次新 run 都必须从第 `1` 关配置开始:
|
||||
|
||||
1. 第 `1~3` 关固定为 `3x3`
|
||||
2. 第 `4` 关开始固定为 `4x4`
|
||||
3. 后续全部关卡保持 `4x4`
|
||||
| 关卡 | 切割规格 | 限时 |
|
||||
| ---------- | -------- | -------------- |
|
||||
| 第 `1` 关 | `3x3` | `5` 分钟 |
|
||||
| 第 `2` 关 | `4x4` | `5` 分钟 |
|
||||
| 第 `3` 关 | `5x5` | `5` 分钟 |
|
||||
| 第 `4` 关 | `5x5` | `3` 分 `30` 秒 |
|
||||
| 第 `5` 关 | `5x5` | `3` 分 `30` 秒 |
|
||||
| 第 `6` 关 | `6x6` | `4` 分钟 |
|
||||
| 第 `7` 关 | `5x5` | `3` 分 `30` 秒 |
|
||||
| 第 `8` 关 | `7x7` | `4` 分 `30` 秒 |
|
||||
| 第 `9` 关 | `5x5` | `4` 分钟 |
|
||||
| 第 `10` 关 | `7x7` | `4` 分 `30` 秒 |
|
||||
|
||||
第 `11` 关开始,每 `6` 关循环复用第 `5~10` 关配置。
|
||||
|
||||
对应函数建议:
|
||||
|
||||
```ts
|
||||
function resolvePuzzleGridSize(clearedLevelCount: number): 3 | 4 {
|
||||
return clearedLevelCount >= 3 ? 4 : 3;
|
||||
function resolvePuzzleLevelConfig(levelIndex: number): {
|
||||
gridSize: 3 | 4 | 5 | 6 | 7;
|
||||
timeLimitMs: number;
|
||||
} {
|
||||
// 统一从关卡序号解析切割规格和倒计时。
|
||||
}
|
||||
```
|
||||
|
||||
@@ -646,8 +660,8 @@ V1 规则如下:
|
||||
|
||||
`2026-04-29` 起,拼图运行时加入倒计时:
|
||||
|
||||
1. `3x3` 关卡限时 `180` 秒。
|
||||
2. `4x4` 关卡限时 `300` 秒。
|
||||
1. 倒计时必须使用第 `9.3` 节的关卡配置函数,不允许在 UI 或本地兜底里按网格规模另写一套时间表。
|
||||
2. 第 `1~10` 关按配置表执行;第 `11` 关起每 `6` 关循环复用第 `5~10` 关配置。
|
||||
3. 规定时间内未完成拼图,关卡状态变为 `failed`。
|
||||
4. 弹窗、查看原图覆盖、冻结时间生效期间不消耗倒计时。
|
||||
5. 通关成绩只统计有效消耗时间,不统计暂停与冻结时间。
|
||||
@@ -693,7 +707,7 @@ interface PuzzleProfile {
|
||||
interface PuzzleRuntimeLevelSnapshot {
|
||||
runId: string;
|
||||
levelIndex: number;
|
||||
gridSize: 3 | 4;
|
||||
gridSize: 3 | 4 | 5 | 6 | 7;
|
||||
profileId: string;
|
||||
levelName: string;
|
||||
authorDisplayName: string;
|
||||
@@ -738,7 +752,7 @@ interface PuzzleRunSnapshot {
|
||||
entryProfileId: string;
|
||||
clearedLevelCount: number;
|
||||
currentLevelIndex: number;
|
||||
currentGridSize: 3 | 4;
|
||||
currentGridSize: 3 | 4 | 5 | 6 | 7;
|
||||
playedProfileIds: string[];
|
||||
previousLevelTags: string[];
|
||||
currentLevel: PuzzleRuntimeLevelSnapshot | null;
|
||||
@@ -1167,7 +1181,7 @@ interface PuzzleRunSnapshot {
|
||||
|
||||
先做:
|
||||
|
||||
1. `3x3 / 4x4` 切图
|
||||
1. `3x3 / 4x4 / 5x5 / 6x6 / 7x7` 切图
|
||||
2. 点击两块交换
|
||||
3. 正确连接自动合并
|
||||
4. 合并块整体拖动
|
||||
@@ -1202,7 +1216,7 @@ interface PuzzleRunSnapshot {
|
||||
4. 发布后的拼图作品能进入平台广场。
|
||||
5. 玩家从广场进入时,第 `1` 关必定是当前作品本身。
|
||||
6. 第 `2` 关及以后按照“标签相似度 `70%` + 同作者 `30%`”计算下一关。
|
||||
7. 新 run 前 `3` 关为 `3x3`,之后固定为 `4x4`。
|
||||
7. 新 run 的关卡切割和倒计时符合第 `9.3` 节配置,并且第 `11` 关起按第 `5~10` 关配置循环。
|
||||
8. 运行时支持点击两块交换。
|
||||
9. 交换后正确相邻的块会自动合并。
|
||||
10. 合并块可以整体拖动。
|
||||
|
||||
@@ -93,8 +93,9 @@
|
||||
|
||||
1. 数字过大时做单位缩略展示
|
||||
2. “游戏时长”卡固定以小时为单位展示,短时长不切换成分钟,长时长不切换成天
|
||||
3. 进入页面先展示骨架屏
|
||||
4. 数据请求失败时展示降级文案,不展示假数字
|
||||
3. “玩过”卡展示值始终带 `个` 单位,例如 `0个`、`1个`、`1.2万个`
|
||||
4. 进入页面先展示骨架屏
|
||||
5. 数据请求失败时展示降级文案,不展示假数字
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user