MINESWEEPER 系统设计
原型文档 · 非正式发布返回游戏 ↗
开始阅读设计 v0.8.1

系统设计审阅稿 v0.8.1#

2026-09-13 · 对应每日规则1.5。这是本版设计审阅入口;已有录像服务端首阶段,完整账号/每日/游戏接入尚未实现。

1. 本轮变更#

本轮收紧官方录像:单段gzip最多1MiB、解压8MiB、20,000条事件,综合三段分别检查;服务端流式拒收、失败字节计额度,并限制并发/慢连接/核验CPU。双SHA-256区分规范原文与压缩传输包,上传前按本人对局查重,已有有效Redis文件直接复用,进行中复用原任务。具体阈值为待测初值,超限不取消已经确认的通关经验,见上传防护与去重

启用Redis,仅用于每日四榜缓存和官方录像/播放块。录像文件、gzip正文、播放块不进SQLite;DB保留成绩、四榜快照、录像key/hash/尺寸/截止/验证状态等小元数据。个人收藏和未提交草稿仍仅本机,直播与PVP仍不在本版范围。

录像写Redis时原子附绝对TTL,到期自动消失;不写录像到期清理job,不依赖过期通知。观看、重试与跨榜引用不滑动续期。为避免日切筛选任务,曾准备公开的旧段也保留到原public_until,不能只按最终60段估算内存。

榜单DB先commit再填Redis缓存,miss可重建;正文先Redis确认再由DB发布,两个存储没有共同事务。Redis正文丢失不能从SQLite恢复,因此推荐持久卷/AOF、关键写入WAITAOF确认和noeviction,Redis不可用时榜单回源DB、录像操作显示暂不可用。

参考表数仍为59张(35+24),仅将三张录像表的正文列替换为Redis元数据。设计版本0.8.1;首阶段代码可初始化同结构SQLite及接收候选文件,未接入游戏、未部署生产Redis。详细可先看Redis部分

2. 当前完整范围#

系统本版方案
账号本地档案、云游客、账号密码注册;未来SSO预留身份模型,游客可先游玩
离线游玩经典/自定义/已安装关卡与已下载历史每日可离线;今天每日必须联网
成长同步按对局事实入账;独立新局都累计,同一局/同日权益去重;等级由经验门槛计算,局中不因升级补血
每日出题服务器统一生成、独立验证、固定版本发布;客户端不生成今天每日,隐藏地图不下发
四榜初级/中级/高级各Top10,加综合Top10;单项取该档最佳无伤用时,综合取三档最佳之和
入榜成绩预选→授权上传缺失压缩记录→重演核验→再次比较→原子发布;候选不占名次
录像单项1段、综合3段;按对局共享,个人收藏录像始终仅本机;官方候选记录有独立受控上传用途
跨设备同账号关联各档成绩,各来源设备可分别上传;已核验段直接复用,不要求一台设备持有三段
日切UTC换日(北京时间08:00)四榜统一冻结,截止前必须完成核验发布;历史不补录/不递补
观看当天按当前设计有通关门槛及观看锁;历史Top10录像取消通关限制,不锁今天
安全服务端时间/状态/合法输入、去重账本、哈希锚点、录像重演与复核;离线自报成长不等于防作弊认证
存储客户端IndexedDB,SQLite存业务与元数据,Redis存每日缓存和录像TTL;最终最多40席/60份引用,但Redis容量含曾入榜/孤儿/暂存/播放块

3. 建议重点审阅#

以下是现行方案中影响体验的规则和建议,不是要求中断其他设计工作的审批流程。

审阅点当前设计需要理解的体验后果
跨端缺录像沿用任一榜候选后上传;没有默认启用服务器全程临时存证若单项未上传、综合后来入围,而原设备离线,需等原设备在截止前补齐;不能承诺四榜彻底解决跨端缺段
当天观看门槛仍采用三档经服务器确认完成后才看当天回放的建议单项能早入榜,但不因此提前看到中高级答案;历史回放没有这项门槛
当天观看锁观看今天其他玩家的回放后,锁住该日期四榜新增成绩的建议先展示告知;列表不锁;已释放画面但未确认显示时进入待确认,不靠刷新解除
截止通关、上传、核验、发榜均须日内完成临近08:00要预留处理时间;未验完不能次日补榜
Redis唯一正文副本AOF持久化+noeviction,关键写确认;建议Redis7.2+缓存能从DB恢复,录像不能;故障时名次仍在,播放暂不可用
自动过期范围无录像到期清理job;曾准备公开的段保留固定public_until比只留最终Top10占更多内存;其它账号/同步/验证任务仍保留
回放保留期原题日结束后30天,建议值[待确认][待测试]到期名次仍在,录像显示过期;被多榜引用不重复延长
正式重连/容量参数单次60秒、累计90秒、单档60分钟等为建议[待确认][待测试]需要真实网络/游戏测试;当前不作为上线性能承诺

服务器临时存证是曾讨论的替代方案,尚未作为当前上传策略启用。文档将这一点保留为明确的跨设备边界,避免把建议误写成用户已经确认的需求。

4. 阅读顺序#

  1. 总体架构:先确认账号、联网/离线和数据归属。
  2. 四榜规则:确认排名计算、刷榜反馈、跨端缺段和共享回放。
  3. 经验与防作弊:确认多端合并、升级和信任边界。
  4. 基础API每日/回放API:审阅客户端与服务端职责。
  5. 表与事务基础DDL在线DDL:审阅持久化、唯一键、回执和冻结事务。
  6. Redis设计:审阅key、TTL、两库一致性、内存与持久化故障。
  7. 验收矩阵:确认70项端到端场景覆盖本版规则。

5. 检查记录#

SQLite 3.40.1:python3 docs/account-system/verify_schema.py的50项约束检查通过,验证三张录像表只有元数据、不含录像BLOB。Redis 8.0.3:python3 docs/account-system/verify_redis.py的8项原语检查通过,使用/tmp临时实例和Unix socket,未连接已有实例,结束后关闭并清理。

Redis检查覆盖二进制原样保存、写入带TTL、过期无需job、重试不续期、内容不可替换、固定公开截止、跨日拒绝提升、WAITAOF与noeviction配置。未完成两库故障注入、实际业务压测、地图与录像重演引擎测试;70项端到端场景仍待实现后运行。

6. 变更记录#

版本日期变化
0.8.12026-09-13收紧录像大小/事件上限;双hash上传前去重;补流式拒收、配额、慢连接及验证资源保护
0.8.02026-09-13Redis限每日榜单缓存与官方录像TTL存储;录像正文移出SQLite,不设录像到期清理job;补跨库故障与持久化边界
0.7.02026-09-13建立集中审阅入口;移除直播,汇总本版范围、参数建议和跨设备边界