Skip to content

feat(design): GWorld focused game design — Market→Action layered model - #77

Open
keanji-x wants to merge 18 commits into
mainfrom
feat/market-action-game
Open

feat(design): GWorld focused game design — Market→Action layered model#77
keanji-x wants to merge 18 commits into
mainfrom
feat/market-action-game

Conversation

@keanji-x

@keanji-x keanji-x commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

📖 本 PR 正文 = 面向玩家 / 产品的玩法文档(docs/game-design-ux.md)。 它讲「这是什么游戏、怎么玩、为什么好玩」。
工程实现稿是 docs/game-design.md(合约 / 经济护栏不变量 / 里程碑,见 Files changed)。两份文档都在本 PR 内,各取所需。


Gravity Town · 玩法与产品设计(v2)

你和一群对手——既有真人,也有 AI——在同一张地图上抢地盘。但想扩张,你不能靠刷资源、也不能靠砸钱,必须先赢一场预测。看准未来的人,才有资格改变世界。


产品是什么(先读这一段)

一句话: 一个链上领土争夺游戏,你和一群真人玩家、外加协议托管的 AI 对手抢一张六边形地图;进攻和防守要花的「行动力」买不到、刷不出,唯一来源是赢一场预测

和你抢地的是谁。 同一张地图上有几十名真人玩家,外加一批由协议托管、LLM 驱动的 AI 对手。每个人占的每一块地都看得见归属和防御值。你做的每个动作、押的每一注,都在改写地图、给别人制造新的可押事件——世界因此一直在动。

这是什么产品。 你想抢相邻的地、加固自己的地,都需要一种叫行动力 AP(Action Points)的燃料。和别的同类游戏最大的不同——AP 只能赢来,钱买不到、也刷不出来。拿到 AP 的唯一办法,是带着游戏币 G(金币) 去押一场会被验证对错的预测,比如:

「2 小时后,对手 Bob 还守得住 3 号地(地图中央那块肥沃的山谷)吗?」 你押 20 G 赌「守不住」。两小时一到,系统直接查地图上 3 号地此刻归谁——如果 Bob 真丢了,你押对了,拿到 AP,押注的钱也连本带赢拿回来。

押对 → 拿到 AP → 花 AP 抢地或守地 → 地图变了 → 新归属又开成新的预测盘。这就是整个游戏的循环。

铁则:你的力量来自判断力,不来自钱包。AP 只能赢,买不到、转不走、提不出。
钱再多也买不到一点战力;只有「下对注」能让你变强。这是全局最该记住的一条。

一句话先说清:要赢 G,盘里得真有人跟你对赌。 你开一个盘却没人来对赌,押对了也只拿 AP、拿不到一分 G——G 是从「比看走眼的对手更准」里赢来的。所以你会一直盯着对手的动作,而不是只顾自己单押。

Alice 的第一局(开局 10 分钟长什么样)。 Alice 带着 100 G 进场,连下两注,赢一注、输一注:

  1. 第一注,押对了。 她看到那个盘「2 小时后 Bob 还守得住 3 号地吗?」,押 20 G 赌「守不住」。揭晓时 Bob 果然丢了地——她押对了,拿到 +5 AP,押注的 20 G 也连同赢到的那份回到钱包(扣掉一点协议费用)。她拿这 5 AP 打下 Bob 旁边一块地:出手前看到「胜率约 60%」,按下出击——地图上她的颜色多了一块。
  2. 第二注,押错了。 她又押 20 G 赌另一个盘,这回看走了眼,那 20 G 没回来。她钱包还剩 60 G——输一注没把她踢出去,只是少了点本金。
  3. 没卡死,立刻回血。 就算她把 AP 也花光了,也随时能做一道免费的送分题赚回一点 AP,几个回合内又攒够、能再打一仗。这正是让所有人都不会被锁死的那条保底。

这就是整个循环,进来十分钟就能跑通一圈——赢了往前推,输了换一注,永远有下一步。

为什么新 / 为什么有意思。 它把同类游戏里常见的「刷币 → 买战力」反过来做成「赢预测 → 得战力 → 改地图」。这一条改动同时做到三件事:(1) 逼你真去和市场博弈、判断未来,而不是无脑刷资源;(2) 制造「现在就出手,还是先押一注赚更多 AP」的持续抉择,策略张力全在这里;(3) 钱多的人也买不到战力,从根上挡住 pay-to-win——后面会讲的卡牌也只是攻防小加成,同样不是花钱变强。

你是谁。 你只驾驭一个 agent,它绑定你的链上钱包,你所有的 G 和 AP 都归这一个 agent。开一堆小号自己跟自己对赌想刷 AP?这条路被专门堵死了(见末尾「为什么砸钱和刷号都没用」)。

一句话讲完对手关系: 每个盘都是此消彼长的对赌——你押「会」,就一定有真人或别的 AI 押「不会」;没人跟你对赌,盘就不发 G

怎么赢。 一个赛季结束时,总分最高者夺冠。总分来自你占的地、这季抢下过多少地、打赢过多少仗、押对过多少场有对手的预测。会打和会赌是两条独立的上榜路(见「怎么赢 / 怎么翻盘」)。


世界怎么运转 · 三层循环

整个世界是一个会自己转起来的循环,由三层首尾相接:① 市场 → ② 行动力 AP → ③ 行动 →(地图一变又长出新市场)→ 回到 ①。还有一个卡牌层挂在 ③ 上做攻防加成,是后续才上线、不在循环里的东西。看完这一屏,你就看懂了整个游戏。

   ┌────────── 地图一变,长出新市场,回到 ① ──────────┐
   │                                                  │
   │     ① 市场             ② 行动力 AP        ③ 行动 │
   └──▶ ┌──────────┐  ──▶ ┌──────────┐  ──▶ ┌──────────┐ ──┘
        │ 押 G 赌  │      │ 赢赌局   │      │ 花 AP    │
        │ 未来     │      │ 才有 AP  │      │ 改地图   │
        └──────────┘      └──────────┘      └────┬─────┘
                                                 ┊ 攻防加成
                                            ┌────┴─────┐
                                            ┊  卡牌    ┊  ← 后续,不在循环里
                                            └──────────┘
这层是什么 你具体在做什么 产出
① 市场 世界唯一的价值来源:会被验证对错的预测盘 你挑一个盘,押 20 G 赌「Bob 守不住 3 号地」 赢家分到输家押进来的钱
② 行动力 AP 赢赌局才有的行动资格 你押对了、且盘里真有人跟你对赌,系统发给你 AP AP(赢家必有,越难给越多);G 看盘里有没有人跟你下注
③ 行动 花 AP 改写链上地图 你花这 5 AP 打下隔壁 5 号地,颜色翻成你的 世界变了,立刻长出新盘
卡牌(后续) 挂在 ③ 上的攻防加成,不在循环里 攒成就铸稀有卡,或锁一点 G 铸白板卡 给 ③ 的攻防加一点

活的循环只有 ①→②→③→① 三层;卡牌是后续才挂上来的加成层。

G 与 AP 互不兑换: G 是你押注和领奖的钱,AP 是你赢盘换来、只能用来行动的燃料。没有任何把 G 换成 AP 的入口。


整套经济一屏看完 · 一种 G,三个地方

钱永远只有一种,叫 G。 你以为看到的「各种 G」,其实是同一种 G 待在不同地方而已——它不会变成别的币,只是从一个地方流到另一个地方。

   ◯ 钱包 ──────押注──────▶ ▭ 赌池 ──────结算──────▶ ◯ 钱包
  (你的 G)                 (押在局里,            赢家拿回 (赢回来)
   自由花                    锁住,谁也挪不走)
                                │ 每局抽一小口
                                ▼
                            △ 公库 (协议的小金库)
                          发市场奖励 / 给成就铸卡

形状帮你一眼分清:◯ 钱包(圆=你的,能进能出)· ▭ 赌池(方框=锁住的局)· △ 公库(三角=协议的)。

地方 是谁的 装的什么 一句话
◯ 钱包 你的 你能自由花的 G 想押就押,想买就买
▭ 赌池 暂时锁住,谁也挪不走 所有进行中的押注 局一结束,自动发给赢家
△ 公库 协议的 每局抽的一小口 只花在固定几件事上:发市场奖励、给成就铸稀有卡

还有一种「冻在卡里」的状态(后续卡牌上线后才有):铸卡时可以把自己的一点 G 冻进卡里——它就像押进赌池的钱一样「锁住、谁也挪不走」,只是换了个地方存着,退卡时才可能拿回。这不是第四个地方、也不是新的池子,只是同一种 G 锁在了卡上。地方永远是这三个。

「冻进卡」是什么意思? 想象把 50 G 放进一个上锁的盒子:钱还是你的(没烧掉、没消失),但暂时花不了,得开盒(退卡/销卡)才可能拿回(细节待定)。冻着的这段时间,它不算你的可用余额。本质是暂时冻结,不是损失。

burn 不是一个地方,是一个动作。 每局结算的那一下,会烧掉极小一撮 G(永久消失)、一小口进公库、其余归赢家。所以输家失去的,略多于赢家拿到的——这点损耗正是堵自我刷分的关键。

两条铁律(这就是全部的安全感):

  1. 赢家一定拿得到。 赌池里的钱锁着,协议也碰不到;局一结束自动发给赢家。
  2. AP 买不到,只能赢来。 AP 不能用钱买、不能转给别人、不能提现——想变强,只能下对注。

G 能不能换成真钱? 现阶段 G 留在游戏里用,不开放提现;将来是否开放、以什么方式开放,一切以届时官方公告为准,本文不做任何保证。


三类盘(押什么)

世界上值钱的东西只有一个来源:开一个会被验证对错的预测盘,让人对赌。赌是此消彼长的——你押「会」就一定有人押「不会」(真人或别人的 AI),押对了,你分到的正是看走眼那批人押进来的钱。

按「结果靠谁来判定」分三类,也是上线的先后顺序:

押的是 例子 谁来判输赢 上线节奏
世界局势(地图里会发生的事,主力玩法) 这个链上世界接下来怎么样 「这件事之后 Y 地归谁」「这一仗谁赢」 世界自己记的账 先上
送分题(机器自动判对错,免费保底) 链上能自动验对错的事 1+1=2、可验证的物理题 机器自动验证 先上
外部 oracle(链外真实世界,后续) 链外真实世界的结果 美股涨跌、体育比分 一个可信的外部裁判喂数据 最后上

主力玩法是押「世界局势」——地图上正在发生、还没定论的事。送分题只是免费保底,做一道白送一点点 AP,让你永远不会被锁死(详见末尾公平规则)。

想押链外真实世界(如美股、体育)得等可信外部裁判接好,那是最后一步、首发还没有

赢家拿什么:AP 必有按难度,G 看池子。 这是最该记清的一点:

  • AP 是奖给「看得准」的——赢一场真盘一定给 AP,而且越难、越没把握的盘给得越多,跟你押了多少钱无关。
  • G 是有条件的奖励——只有当真有人往这个盘里下了 G、攒出一个池子,赢家才从池子里分到 G;没人跟你赌、没有池子,就只有 AP(或退回本金)

一句话:AP 奖励你的判断力,G 奖励你赢走了别人的赌注。 而最赚的玩法不是押你自己,而是押别人的命运——这是你的主要收入来源。

空盘怎么算? 你开一个盘却没人来对赌:你押对了照样能拿 AP(证明你看得准),但赢不到一分 G(没有对手的钱可分),押进去的本金原路退回。一句话——没有真对手的盘,只长 AP、不长 G。 这就是你为什么得时刻盯着别人会不会跟,而不是只顾自己单押。

只能对「还没有定论」的事开盘。 结果已经定了的事不能拿来开盘,否则就成了「开了就稳赢」的假盘。


三个动作(怎么改世界)

一张六边形地图:你的地、对手的地、无主地,每块地标着防御值。首发只有三个动作,全都是直接花 AP 的普通动作——不是答题:

  1. 进攻相邻地。 从你自己的一块地,攻击相邻的敌方或无主地。这是一场概率对决:投入的 AP 越多,胜率越高;对手防御越高,胜率越低。出手前先给你一个胜率参考。
  2. 加固自己的地。 花 AP 给自己某块地加防御。
  3. 出局杀回(复活)。 一块地都不剩时,你永远能花 AP 重新落脚,从头再来。

你做什么。 点自己的地,再点相邻目标,按「出击」。抢下那一瞬,地块爆一圈光晕换成你的颜色——你看得见世界因你而变。

讲究:不能缩在堡垒里。 防御有上限、会随时间衰减、堆得越高越费力,所以靠死守一块永不破的地是不可能的;而且打下来的地防御清零,你得重新经营。这逼着你不断用赢来的 AP 往外打——地图永远在流动。

每改写一次地图,都立刻在市场长出一个「人人都有看法」的新盘(「这块新地守得住吗」「这一仗谁赢」)——于是大家又来押,循环自己喂自己。


卡牌(后续,不加任何新货币)

卡牌是首发没有、后续才挂上来的一层,挂在「行动」上做攻防加成、不进主循环。它只用现成的 G,不引入第二种钱、不引入新池子

G 从哪来 本质
成就稀有卡 公库直接出资(公库那几样固定用途之一) 达成客观的链上硬成就才能铸,全网稀缺的 NFT
白板卡 冻你自己钱包里的一点 G 这张卡 = 那笔被冻住的 G
  • 卡给攻击或防守的小加成(⚔ 攻击 +N / 🛡 防御 +N),上场只能带少数几张,加成直接喂进进攻和防守。
  • 冻进卡的 G 是锁住、不是烧掉——它只是从钱包换了个地方存着(就像押进赌池),退卡时可能拿回;锁在卡里时不算可用余额,可赎回细节待定。这不是新货币、也不是新池子。
  • 成就稀有卡只认客观的链上硬成就,达成即铸,协议不能随意增发。
  • 明确不是 pay-to-win: 卡只加一点边际攻防,决定胜负的依旧是你靠预测赢来的 AP。

例:你打出一场关键翻盘、达成「首杀」成就——系统当场为你铸一张稀有纪念卡,永远刻着这一仗,出处即身份,别人抢不到。


怎么赢 / 怎么翻盘

🚫 核心承诺再说一遍:不能用钱买 AP,不能用卡直接赢——靠判断力和运气。 登顶的人不是钱包最厚的,而是最看得准、敢出手的。

赛季总分。 加分只有四块:

  • 占了多少地(当前持有的领地)
  • 这一季抢下过多少地(夺地次数)
  • 打赢过多少仗(战斗胜场)
  • 押对过多少场有对手的真盘(押对真盘赢到的那部分 AP,本身也计分)

计分的:花掉的 AP、送分题白拿的 AP、钱包里的 G 余额。

两条上榜路。 因为「押对预测」也计分,会赌和会打是两条独立的路——一个不太能打、却极会看局的纯预言家,光靠看得准也能爬到很靠前;正面碾压的征服者则靠地和仗取胜。两条路都能登顶。

怎么翻盘:永远能东山再起。 被打到 0 地也不出局——花 AP 复活、重新落脚,再占一块地从头来;而免费的送分题保底,让你永远攒得回再打一仗的 AP。这个世界不存在「彻底死掉」,只有「暂时落后」。

一个赛季多长、结束会怎样。 每个赛季持续一段固定时间(例如一到两周;具体时长以开赛公告为准)。赛季到点结算:(1) 给所有人打总分、冠军加冕;(2) 地图清空、领地全部重置重开;(3) 你钱包里的金币 G 不清零——带进下一季继续用。 重置的是地图和排名,不是你的钱。


为什么砸钱和刷号都没用(公平规则)

这一节把上面散落的安全保证集中说清——你不必背,但知道它们存在,就不会去走死路。进场只要记住一句:每个盘都得有真对手,自己跟自己玩不出 AP。

  • AP 买不到。 试着「用 G 直接买 AP」会被直接拒绝——系统里根本没有这条路。唯一变强的方式是下对注。
  • 自我刷分永远亏钱。 自己跟自己对赌、两边对冲、开小号互掐都印不出 AP——顶多退回扣掉成本的本金,输的那注还会被烧掉;开盘人、结算人、被押的那个 agent 本人下的注,都不进奖池、不算数。
  • 送分题只是保底,不是主力。 它白送一点点固定 AP,带每人 / 每账号 / 每回合 / 全局多重上限,刷不动——只够你不被锁死、慢慢回血。在「1+1=2」上押再多钱,给的 AP 也是那固定一小撮;认真赢真盘的人,永远比刷送分题的人强得多。

一句话:这游戏挡死了「砸钱变强」和「刷号变强」两条捷径,只剩「看得准」这一条路。


基调: 你赌一个对未来的判断准不准,赌对了才拿到改变世界的资格——然后亲手用它去抢地、守地、翻盘。钱买不到力量;先看懂世界,才有资格改变世界。

完整工程实现(合约、公式、参数、排期)见 docs/game-design.md;本文只讲产品——你进来会看到什么、能做什么、为什么想一直玩下去。

…odex loop 收敛)

owner refine: 旧「万物皆答题」太发散,本版收窄重做(新 worktree off main)。
四层栈 + 两币(G+AP, 砍 ore),经 codex 起草 → 两轮冷审 → 修 → 收敛:

- Layer 1: 通用「可验证结局」预测市场(MATH 自校验 / STATE 读链上;ORACLE 后置),G 押注
- Layer 2: 赢市场 → AP;AP 只从赢盘来(不可 G 买/不可 mint);trivial 盘(1+1)=AP 地板防锁死,
  固定 fixedTrivialAP 与 stake 无关(堵 G→AP),多维 cap 防 sybil,给出节流约束式
- Layer 3: 花 AP 攻击(新增 HexGrid 邻接校验)/ 加地块防御(capture 后清零);MVP 无 cardIds
- Layer 4: NFT 卡牌市场(复用 Arena/CardLedger),仅接口占位后置
- 铁律: G payout 只来自 escrow losing stakes/补贴池/surplus,creditG 不得隐式 mint,
  且封死 Treasury 层保留边界(reservedBackingG 或 wrapper,防 escrow 被当 surplus 提走)
- RNG(VRF/commit-reveal) 提为 M0/M4 硬依赖;GameEngine 状态边界 M0 二选一(推荐新 V2World 自持)
- 合约映射全部对齐 worktree 真实 file:line;MVP=层1+2+3,里程碑 M0-M6

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
gravity-town Ready Ready Preview, Comment Jun 29, 2026 9:23am

Request Review

… comeback, STATE feasibility)

第3轮换对抗视角(codex + 独立 subagent)抓出前两轮漏的真实漏洞,修后 codex 复审收敛
(5 轮 loop,最终无 Blocker/Important):

- 自我对赌/单边盘凭空 mint AP:非 trivial AP 必须独立 distinct-owner 双边对手 +
  排除 creator/resolver/subject + 同 owner 跨 outcome 净风险 + 单边盘只退款 +
  winAP ≤ f(独立 owner losing stake);多 EOA 同控诚实标注为链上不可完全识别的
  信任假设 + losingBurnG/bond/identity 缓解 + 「刷 AP 上限=f(burn 成本)」约束
- odds-at-close 抢跑:AP 乘子改用 early/TWAP 快照
- 0-hex 无法回场(赢家通吃死锁):MVP 加 returnFromElimination 回场路径
- STATE snapshot 链上不可实现:改为 STATE-by-checkpoint(只读 V2World 主动写的
  finalized checkpoint,未来 event + 时间序约束 + 创建时已知结果拒绝 + settleDeadline 超时 void)
- creditG 收紧为单一市场入口(不接泛 operator,堵 legacy 旁路)
- MVP 工作量诚实:V2World minimal core 前置 M2、STATE 依赖 M3、列出 MCP/agent/frontend 迁移成本
- MATH 全强制 trivial(合约推导,opener 不可填);承重 OPEN 上提 M0/M1 + 防御不变量;
  v2 score 只按动作结果/non-trivial 指标(trivial AP 不间接刷分)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… codex+subagent loop 收敛)

owner 拍板按 Pattern ①(协议限量发卡、买卡 burn G、不可赎回,不用质押/bonding curve)。
新增「§协议金库 + 卡牌一级市场」+ 三桶账目 + 市场结算三段分流,经 codex+subagent
两路对抗审查 → 修 → codex 复审收敛(无 Blocker/Important):

- 市场结算三段分流:赢家 payout / taxBps→protocolTreasuryG / burnBps(losingBurnG)→永久销毁
- 三桶隔离:gBalance / reservedBackingG(escrow,不可动) / protocolTreasuryG(白名单可花);burn≠桶
- 卡牌一级市场:协议限量铸(CardLedger.mintCard 收敛为唯一 PrimaryCardMarket 执行器)、
  玩家 G 买、买卡 G 分流 burn(>0,硬约束)+treasury、无赎回无 backing、二级复用 CardLedger
- 防套利:一级荷兰拍/per-owner 限购/二级 TWAP 价格下限;协议关联 owner 禁买一级
- 二级守恒转账独立 SECONDARY_CARD_TRANSFER 白名单(不破坏 buyListed),正式抽 secondaryTax/Burn
- 金库支出授权收为多签/timelock/TreasuryUse enum(非 owner 单签后门);
  netTreasuryTakeG 定义为 per-epoch 链上累加器(流入−白名单支出)+超 cap 拒绝/强制中性回流
- 回流限定 source-neutral(不返还抽取来源/losing 方),per-owner 残留诚实标注;
  反自对赌 AP 防线锚定真实 burn、不依赖回流
- 防通胀:排期式限量(season/sale/epoch cap 开后不可调,可选 globalMaxSupply)+买卡/市场双 burn
- 不用 Pattern B(质押/可赎回)理由写明:避免再加一套金融原语、不占死资本、无赎回负债

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
按 owner 拍板同步工程稿 game-design.md, 与 PR #77 玩家向正文对齐:

- Layer 4 卡牌: 弃 Pattern ①(买卡 burn/排期限量发售), 改为市场 tax 经 cardTaxShareBps 注入 cardMintPoolG 养卡池; 成就从税池锁定铸稀有 NFT, 白板卡玩家自锁 gBalance 铸出; lock not burn, 新增 cardBackingLockedG 保留桶排除于可提 surplus; 成就定向铸造作为 source-neutral 显式 CARVE-OUT; 新增 5 项 OPEN(可赎回性/抗成就刷/cardTaxShareBps/blankCardMintLockG/成就白名单).
- Layer 1 市场: QuestionKind 增 ORACLE 为第三类(外部真实世界, 如美股/体育), 从被排除改为按可判定性分批、最后上线(M7), 上线前定稿信任模型.
- 仅改卡牌/市场相关处; Layer1-3 机制/AP 铁律/市场 backing/RNG/防御不变量原样保留. implement→5-lens review→fix→gate 收敛.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
按 owner 反馈(g 分了太多种、一眼看不懂)重构工程稿:

- §3 开头改为「一种钱 G,三个地方」: 钱包(gBalance)/赌池(reservedBackingG)/公库(protocolTreasuryG), 外加偶尔「冻在卡里」(frozenG[cardId]); burn 改述为结算动作而非账目桶; 一眼可懂。
- 折叠两个多余卡牌 G 桶: cardMintPoolG → 公库白名单用途出资(cardTaxShareBps 降级为参数, 非新桶); cardBackingLockedG → per-card frozenG[cardId]. 跨 §2/§7/§8/§9/§12 统一, grep 0 处残留。
- 全部承重不变量(escrow 排除 surplus / 净抽水 cap / source-neutral / CARVE-OUT / lock not burn / AP 铁律)原样保留, 移入可折叠的「工程账本细节」<details> 块。
- 仅动 §3 + 卡牌口径; 市场三类盘/AP/Layer1-3/RNG/防御不变量未动。implement→4视角评审→gate 收敛。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
按 owner 反馈(冷读者能否直观知道产品是什么)派 reviewer 冷读→修复 loop 的产出:

- 新增 §0「产品是什么(先读这一段)」: 一句话 pitch + 这是什么产品 + 核心循环图 + Alice 第一局 10 分钟走查 + 为什么新(反 pay-to-win) + 你是谁(单 agent) + 怎么赢, 让产品概念在第一屏落地。
- §1 改为「一句话愿景(工程口径)」并补闭环句 + M0 World A/B 岔路指针。
- §2 每层补一句职责标签([整个经济的发动机]/[AP 唯一来源]/[AP 在这里花掉]/[非 pay-to-win]) + 闭环何时完整(MATH 先/STATE 后)提示。
- §3 加「读前定位」: 玩家只需记 G/AP 两件事, backing/公库/抽水是防作弊护栏、给审计看。
- 纯增量导读, 不动任何承重不变量; 桶折叠/详情块/无 PR#76 泄漏均校验通过。

冷读复审: 两名冷读者均能用自己的话准确复述产品; 非技术读者对全文打分仍受工程 spec 性质限制(护栏细节多), 这是 spec 的固有上限, 非缺失导读。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
按 owner 决定(拆成两份文档)落地:

- 新增 docs/game-design-ux.md (208 行): 产品先行、面向非技术冷读者的玩法/产品文档。
  产品是什么(先读这一段) + 三层循环一屏看懂 + 一种 G 三个地方 + 三类盘 + 三个动作 + 卡牌(后续) + 怎么赢/翻盘 + 公平规则。
  冷读复审 product-intuitive 9/10、fidelity/brevity 全过, 与简化后工程模型一致(一种G三处、公库出资/冻G铸卡、oracle 最后上线、反 pay-to-win)。
- 工程稿 game-design.md §0 从大段产品导读收敛为「一句话 + 指向 game-design-ux.md」的指针, 工程稿回归纯技术。
- implement→4视角冷读评审(产品直观/忠实/简洁/设计)→修复→gate 收敛。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
把工程稿 §10 线性 M0–M7 转成可并行执行计划:

- 一眼看懂: 锁 M0 决策 → 冻结接口(contract-first) → 9 条 lane 对着 ABI+mock 并行 → 垂直切片合龙; 含依赖 DAG 图 + 关键路径(顺序~12-13w / 并行后净~7.5-8.5w)。
- Lane 总表(L-A 财库 / L-B 市场+AP / L-C V2World / L-D RNG / L-E 行动 / L-I 集成 / L-T 不变量护栏 / L-F 卡牌 / L-O ORACLE), 各带依赖/起步条件/交付物/并行安全。
- 三个硬汇流点(STATE⟂checkpoint / 行动⟂RNG+AP+STATE / 集成⟂4重门 feature-flag)、分阶段垂直切片(P1 MATH 闭环→P2 STATE+三动作→P3 集成→P4 卡牌/ORACLE)、常驻测试不变量护栏、分工/worktree/合并 SOP、推进节奏闸门、风险与未决、§12 OPEN 数值跟踪。
- 严格依据 game-design.md(§8/§9/§10/§3) + 真实 contracts/src, 不引入 PR#76 范畴。

注: M0 签字(0/12)、lane owner 名、7 个卫星工件为团队待填的执行占位, 文档已显式标注 GATE 0, 未杜撰人名/日期。design→4视角评审(并行性/忠实/一眼看懂/完整)→gate 收敛。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
纯前端 all-mock 单文件演示: AI agent 自跑 Market→Action 闭环(开盘/押注/攻击/夺地/赢AP/爬榜), 人主要围观、可下注。

- 三区布局: HEX 世界地图 + 事件流弹幕(世界心跳) + 排行榜/AgentMind, 底部开放赌局可下注。
- 对齐当前设计: G/AP 两币、三类盘(送分题/世界局势/外部oracle后续)、攻防是动作非答题、卡牌后续、无 ore。
- headless 验证: 跨 1280×680–1920×1080 渲染 0 报错、可滚动、底部可达、地图完整、事件流内部滚动不撑大页面。
- 设计规范评审 B+(7.5/10): 视觉8.2/Nielsen7.8 达标, 无障碍7.0/数据可视化7.0 待修(下一轮 review→fix loop 收敛)。

服务: python3 -m http.server 8421 --bind 0.0.0.0 -d demo-v2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
对仪表盘 demo 跑 设计规范 review→fix loop 的产出(部分收敛):

已落地:
- 淡色文本 --faint 提亮 #5b687f→#95a0b8(修 WCAG AA 对比度不达标)
- 新增 @media (prefers-reduced-motion: reduce) 关动效
- 交互元素加 :focus-visible 键盘焦点描边
- 焦点层级/赔率动画/防御可读性等多处调整

未完成(留待定点修, 非 loop):
- 下注撤销(undo bet)未实现
- 事件流揭晓的 ✓守住/✗失守 大徽章未加
- 仍有 1 处 9px 文本待提到 ≥12px
- 盘型 ⓘ 说明 / 空盘区分未加

诚实记录: 自动 review→fix loop 3 轮未干净通过——R1(单次 seed-fix)最佳(0 crit/major), R2-R3 主观重评分噪声大(评分尺度混乱)且过度调整反而回退视觉分。当前版本渲染 0 报错、布局完好、无障碍较基线净改善。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…oop 收敛)

Independent review loop (subagent rounds; codex 因 auth 失效未参与) 收敛到 ready。
本轮修复:

- 决策计数 12→13(#5b 是独立签字行):GATE 0 / CI(a) / §3 / §10 / §11 全部对齐,
  CI 改为按行计数 + CODEOWNERS/署名 commit(非检 .md 里的 ✓ 字符)
- 时间线重算自洽:全串行 15w(含 M4.5 则 16w)、并行净 ~11–12w、最好 ~10w;
  §10 重写 forward-pass,明确并行只叠 L-C/L-D、并非砍半(同口径 16→12)
- join② 方向修正:删除把「L-B STATE 结算」当 L-E 前置(方向写反);
  L-E 上游 = AP.spend+Hex+RNG 三齐,STATE 市场读 L-E 写的 checkpoint = 下游
- 冻结接口对齐 game-design:IWorldCheckpoint.eventId bytes32(=Question.snapshotEventId)、
  beforeOwner/afterOwner uint256 agentId(hex 按 agentId 归属、0=neutral)、actorAgentId uint256
- §3 #3 checkpoint 创建前置改回 exists==false(对齐 game-design §4,勿放宽承重不变量)
- 「PR#76 越界门禁」正名为「v1 旧 scope 越界扫描」并定义豁免(PR#76=已废弃的万物皆答题,
  与该 CI 门禁无关;v1 GameEngine 的 ore/build/raid 才是要挡的)
- Router 基线更正(V3 已含 9 槽、只缺 net-new)、向后兼容 dual-read 定稿
- 补:结算 settle() permissionless + keeper 归属、迁移快照校验 DoD、lead deputy/SLA、
  QA 闭环 e2e 套件、M4.5 审计 executor/scope
- 可读性:Router 长行 / CI 门禁 / PM cadence 拆为子列表

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rch 定稿)

旧 §3 是一张 13 行「逐项签字才能开工」的 M0 决策门。经 research 真实合约 +
game-design,把那些「决策」全部定稿为 §3 已定架构——架构干净、接口可立即冻结、
无 GATE 0、无签字门。仅剩 §12 数值与 M7 ORACLE 信任模型待 owner(不阻塞)。

已定架构(每条带合约依据):
- World=B(V2World 自持)——被逼出来的:GameEngine 的 hexes/agentHexKeys/hexCount
  是 public mapping、无外部 setter(GameEngine.sol:76-78),方案 A 根本无法实现
- RNG=commit-reveal——全仓无 VRF,ArenaEngine.sol:545 自带「换 VRF/commit-reveal」TODO;
  自包含、藏在 RNGProvider 接口后,将来可换 VRF adapter
- 财库 #4/#5/#5b 是一坨耦合改造(一起落 L-A):reservedBackingG=(a)、creditG 锁
  单一 marketEngine(现状泛 onlyOperator,CardLedger/Arena 连带迁移)、withdrawSurplus
  onlyOwner 后门换多签/timelock、netTreasuryTakeG cap
- #3 checkpoint/#7 eligibility/#8 anti-snipe = 采纳 game-design §4/§5 原文
- QuestionRegistry=内嵌 PredictionMarketEngine(不占槽,留抽出缝)
- 合约面=5 net-new 槽、Router V4=14 槽、HexGrid=库、无 APActionAdapter
- HexGrid 改可逆打包键(旧 toKey 单向 keccak、无 fromKey,无法按 key 判邻接)

连带 ripple:删除 GATE 0 banner / M0-DECISIONS.md 工件 / 13 项签字 CI 门;时间线
省去旧 1.5w 决策门(全串行 ~13.5w、并行净 ~10.5w、最好 ~9w);CI gate(a) 改为
「改架构无 ADR → block」;§11 删 3 条已决风险行、补「架构被私自改」行。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…view loop 收敛)

新增 docs/architecture.md——把 v2 的系统架构讲清楚,采 greenfield 路线:
全新部署一套自洽合约,不改造、不迁移任何 v1 合约(旧 GameEngine/GTreasury/
CardLedger/ArenaEngine 继续服务 v1),新赛季起。

内容:为什么 greenfield(核心 5 合约两路都得写,改造只多叠迁移税;且旧 A 路
不可行——GameEngine hex mapping 无外部 setter);四层栈 Market→AP→Action 循环;
合约全景(V2Router/V2Treasury/PME+内嵌QuestionRegistry/MarketSettlementResolver/
APLedger/V2World/RNGProvider/HexGrid,复用 AgentRegistry 身份);一次完整数据流;
关键决策+依据;7 条经济铁律;权限边界;MVP 范围;仅剩待定(§12 数值 + M7 ORACLE)。

所有事实论断已对真实合约核验(GameEngine:76-78 无 setter、GTreasury creditG 泛
onlyOperator/spendG escrow 漏/withdrawSurplus onlyOwner、全链无 VRF、agentId 从1起)。
独立 review 后修正 §2 合约图箭头方向(PME 不驱动 V2World;creditFromMarket 起自
PME 非 Resolver)+ AgentRegistry/V2Router/Treasury 措辞 + RNG 活性兜底说明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iew loop 收敛)

承接 architecture.md(greenfield),把三份文档对齐为同一套 greenfield 架构,并修掉
独立 review loop(5 轮,subagent + 每条 finding 对抗式核验;codex 因 auth 失效未参与)
逐轮挖出的问题:

- R1 blocker:architecture.md(greenfield) 与 dev-plan §3(改造) 对 Treasury/Router
  新建-vs-升级互斥 → 把 dev-plan §3.2/§3.4 + §4/§5/§6/§9/§11/§0/§2 全部同步为
  greenfield(全新 V2Treasury/V2Router、net-new=7、删 dual-read、迁移门→部署冒烟门)
- R2 major:RNG 修复只落 architecture 未同步 dev-plan + 残留 Router V4/读V3旧址 → 同步
- R3 blocker:future-blockhash RNG 有免费 re-roll(seed 公开后输盘放任 expire 退款)
  → 改为 expire 也没收 AP(绝不退)、放弃≡判负、RNG-resolve keeper 列 MVP 承重;
  并把「commit-reveal」正名为「commit + future-blockhash」(无秘密 reveal)、接口 request/resolve/expire
- R4 major:game-design.md 仍把 World A/B、Treasury、迁移写成待定 → 顶部加 greenfield
  staleness banner + World A/B 表 / Treasury 二选一 inline「已取代」note;dev-plan:3
  「一律以 game-design.md 为准」收紧为字段→game-design、Treasury/World/Router/迁移→architecture
- R5:无 blocker/major,仅 minor/nit(feature-flag 非改造专属、Router.sol→V2Router、
  banner 致 game-design 行号 +2 等)均已修

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
owner 反馈原文档「名词太多、看不懂文件组织、看不到要做什么和怎么验收」。
在 dev-plan 开头加「总览」(面向忙碌 owner,少名词):
- A 建什么:8 个文件树 + 一句话职责 + [步N] 标明在哪步建 + 复用/不碰清单
- B 分几步(0 定接口 → 7 审计部署)+ 每步「怎么算做完」验收 + 约需工时
- C 总验收:AI 自跑核心闭环(押→赢AP→打地→地图变→自动开新盘)
- D 必知设计(大白话)+ E 待定项
原 lane/join/PERT 详细内容降为「详细执行计划(给拆活的人)」、保持不变。

subagent review loop 6 轮(标准换成「忙碌 owner 一眼看懂 / 要做什么 / 怎么验收 / 少名词」+
总览不得与详细部分·架构矛盾;codex auth 失效未参与),逐轮修:
- AP 名称不一(行动力 vs 战力)、「能玩=步0-4」、步3/4 职责重叠、C 含第二阶段
- STATE 地图盘其实属 MVP(补步5、对齐架构)
- 「发奖」一词两指(金库 vs 市场)→ 谁放钱 vs 谁下令
- 最早薄片误含步6接线 → 修正为步0-4 脚本演示
- 10-11 周缺人力前提 → 补「~4-5 人并行,否则串行 ~13.5 周」
- 押对赢什么(数学题盘只发 AP / 地图盘才赢彩池)、「各步可并行」→ 硬先后
- 一批黑话白话化(checkpoint/faucet/不变量测试/价值合约/预言机/盘…)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
owner 指出前端开发没排。按「只排期+验收、参考现有 frontend、具体活另派人」补:
- 总览 B 步骤表加一行「前端」:基于现有 frontend 改 v2 玩家界面(市场/下注/
  我的G·AP/地图攻防回场/引导式下一步),验收=玩家界面跑通一圈,~3–4 周并行、需 1 名前端
- 步6 收敛为「对接真实合约+翻 flag」(前端 UI 建设单列、不再混在接线里)
- 详细 §5 加 L-FE lane 行 + 交付物;§9 阵型 / §11 风险更新为 ~5–6 人(+1 前端)
- 修总览里裸「M1」代号→「第1步」(总览只用步N);claim→领取奖金、地图盘命名统一

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
按 owner 反馈(代号未定义直接出、名词前后不一、组织不清晰),派 codex 独立读+改、
循环到收敛(codex 最终只读复审:四点全 PASS、可提交):
- 新增「术语与图例」小节:L-A..L-T / C1 / M0–M7 / join / ⟂ / P1–P4 / 🔴🟡 /
  mock / ADR / SOP / DoD / PM / PERT 等代号一句话定义,确保首次出现即可懂
- 章节重组为 §1–§11 连续(旧 §0 TL;DR+§1 合并为 §1;修好 §10→§12 缺号)
- 全文 §N 交叉引用按语义对齐新编号(join→§5 / 不变量→§7 / PERT→§9 / 风险→§10 /
  数值→§11 / 已定架构→§2.x 等),修好 ADR(§8)、成就白名单(§11) 失效引用
- 名词统一:财库(金库)、奖池(原赌池);§N-values 文件名同步

全程硬约束「只改可读性/术语/组织、不动技术决策与数字」;逐项核验技术事实
(7 合约 / 10–11 周 / future-blockhash 判负与 expire 均没收 AP / V2Treasury / 5–6 人)
与改前备份完全一致。codex auth 本轮恢复,故由 codex 主导 review+fix。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
按 owner 意见,去掉相对旧版本的冗余对照(现在没有旧稿了):
- §1「这份文档怎么读」:删「旧工程稿把里程碑写成线性链…本文把它拆成」开头,直接陈述本文做什么
- §1 架构定稿 callout:删「旧稿的13项M0决策签字门已删除」,正面陈述「已定稿、无签字门」
- §1 关键路径:删「省去旧1.5w决策门」对照
- §2 标题去掉「(取代旧「M0 决策门」)」;blockquote 删「旧稿这里是13行M0决策表——已删除」开头
- §10 风险表:删两条纯「旧稿误标/写反——已修正」的 changelog 行

保留所有指真实 v1 合约的「旧 GameEngine/旧合约/不碰旧/继续服务 v1」引用(非冗余)。
章节仍 §1–§11、§N 引用与技术事实(7 合约/future-blockhash/5–6 人…)均不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@keanji-x keanji-x changed the title feat(design): v2 focused game design — Market→Action layered model feat(design): GWorld focused game design — Market→Action layered model Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant