关于“档案、身份与遗忘”的游戏,结尾把档案存进 CKB

做了一个小型网页叙事游戏, 《Masked Identity》

这是一个什么游戏?

《Masked Identity》是一个基于我个人经历改写的互动叙事游戏。它把一些真实经验、历史想象和对制度性记忆的探讨,放进一个架空的苏联末期军事医院里。

玩家扮演一名医生,面对一个人的病例、军方记录、家庭材料、事故报告、告密文件和各种被涂改过的档案进行决策:

这些选择会改变三个维度:真相、安全、身份。最后,游戏会根据你一路如何处理档案,给出不同结局。

我真正想探讨的不是“解谜”,而是一些更让人不舒服的问题:
一个人的身份,到底是由自己定义,还是由档案、机构、诊断和他人叙述定义? 如果一个人的历史被封存、涂改、销毁,甚至被重新分类,那么他还剩下什么?如果保存真相会伤害一个人,销毁真相又会抹除一个人,那么“正确处理档案”这件事是否真的存在?

为什么接入 Common Knowledge Base (CKB)?

游戏结尾有一个可选机制:玩家可以把自己抵达的结局摘要,存入一个公共档案墙。

官方病例已封存,卷宗将不再可查。你可以将一份摘要副本存入一个公共账本——共同知识库。它不属于任何机关:没有调阅令能封存它,没有火炉能焚毁它。副本永久公开,任何人可见。

我不想把它做成一个“Web3 游戏”的典型形式。这里没有 NFT,没有代币经济,没有装备资产,也没有 play-to-earn。玩家不是为了玩游戏来连接钱包。游戏本体是完整的,链上归档只是一个结尾处的可选动作。

为什么 CKB 特别适合?

CKB 的 cell 模型很适合表达“档案”这种东西。它不是一个游戏资产,也不是一个要被频繁交易的对象,而是一条被写下、被保留、被公开读取的记录。

在这个游戏里,玩家写入的不是复杂状态,也不是金融合约,而是一份很小的结局摘要:结局 ID、三个指标、语言、日期,以及可选的档案员代号。公共档案墙从链上读取这些记录。

这和游戏主题非常贴合:档案不是为了流通,而是为了不被抹去。

我也很喜欢 Common Knowledge Base 这个名字和游戏语义之间的重合。游戏里的最后动作,不是“mint 一个东西”,而是把一份私人游玩结局,存入一个共同知识库。这个游戏的核心主题本来就是档案、记录、封存与删除。所以区块链在这里最自然的作用:

把一份无法再被官方档案系统封存的副本,放到一个公共、持久、抗审查的记录层里。

在游戏世界里,官方病例已经被封存,档案柜可以被锁上,纸张可以被烧掉。但如果玩家愿意,他们可以把一份结局摘要写入 CKB,让它成为一个公开的、不可被篡改的 cell。它不属于游戏里的任何机构,也不依赖任何服务器保存。

不是给游戏强行加金融系统,而是让链承担它最适合承担的事情:公共记录、持久性和抗审查。

欢迎体验

如果你只想玩游戏,不想碰钱包和链上记录,可以直接玩 itch 版,也欢迎在 itch 上留言、评论和打分 :folded_hands:t2:

如果想体验带 CKB 归档机制的版本,请点击这里

12 Likes

可以考虑推出一个富豪版的个人故事,心得,记录的dapp,基于ckb,让富豪们留下永远不会消失的消息(ckb如果能一直运行下去)

这个真的很棒!从你的游戏的创意、文本内容的编写,以及你特意选择了很轻量、甚至是某种可选的、和链上结合的方式,我能感觉出来你做这个东西真的有注入许多自己的想法。

我觉得这样的应用会让我眼前一亮,让我看到 ckb 产生了不太一样的东西。这个东西是什么呢?其实就是一种调性。它不一定是 CKB 的某些技术特点产生的(不过这个游戏切入“存档”确实和 ckb 作为共同知识库的定位是非常契合的),更多的我觉得是来自做事情的人的特点。

因为 CKB 社区的人不一样,所以做出来的东西也会不一样。我觉得这个小游戏很好的展示了这一点。你关于 DAO/社会机制/个人身份的思考,就代表了 CKB 社区对于某类不太一样的问题的关注和思考。我们现在有许多来自世界各地的社区成员,很期待看到更多类似的作品出现。最终一个社区的力量是由人组成的。

有时间我会好好玩下这个游戏,感谢你的分享。

3 Likes

搞个基于爱泼斯坦档案审判特朗普的游戏 :sweat_smile:

请问链上存的副本具体是什么信息?这里可以把这些信息decode出来吗?

实现方式很简单:

  1. 结局页生成 JSON
    schema 大概是:
{
  "p": "masked-identity",
  "v": 1,
  "e": "erased",
  "t": 0,
  "s": 100,
  "i": 0,
  "l": "en",
  "d": "2026-07-02",
  "n": "optional archivist name"
}

字段含义:

  • p: 协议标记,Masked Identity 的记录
  • v: schema 版本
  • e: 结局 ID
  • t: Truth 数值
  • s: Safety 数值
  • i: Identity 数值
  • l: 语言,zhen
  • d: 写入日期
  • n: 可选的档案员代号
  1. 用 CCC 把 JSON 转成 UTF-8 bytes,再转成 hex,放进 cell 的 outputData
outputsData: [ccc.hexFrom(ccc.bytesFrom(payload, "utf8"))]
  1. 这个 cell 使用一个固定的 archive lock,公共档案墙按这个 lock 搜索记录
  2. 档案墙读取每个 cell 的 outputData,hex → UTF-8 → JSON.parse
JSON.parse(ccc.bytesTo(ccc.bytesFrom(cell.outputData), "utf8"))
  1. 校验 pv、结局 ID、数值范围后渲染

BTW,CKB(UTXO)的机制,一方面比account模型做这种存储、检索方便好多,同时也和游戏本身的叙事语言契合:大家去中心化的投递档案卡,重构角色的身份

明白了,我以为会把完整档案上传到链上,更多看起来是一些元数据?

1 Like

轻量化 轻量化 :laughing:

1 Like

Thanks for sharing! I really enjoyed the story and the music.

1 Like

Tip: check what’s written in the cell with ckbadger :badger: :slightly_smiling_face:

4 Likes