返回项目展示

共生契约

已通过
截图 1

项目描述

共生契约 · Symbiosis Covenant三个意志,一只生命。三个独立钱包共同操控一只共生兽。先协商并秘密提交路线、身体与记忆,揭示后进入三段各 45 秒的风暴远征:A 负责移动与诱敌,B 把握身体反击时机,C 记录并触发记忆。击倒撞岩兽、击破风核守卫,再由三人确认战果并上链结算。共同生命与能量跨段继承,两次营地可以重新决定后续进化。快速体验: 单人演示 · 无需钱包 · 三人联网 · Monad 测试网。单人模式可任选一名角色,另外两位由自动队友操作。项目位于 codex/symbiosis-covenant 分支;main 保留原工程。三个人分别做什么三个人共享同一具身体、位置、生命与能量,各自保留独立的操作权限。角色操作玩家需要决定什么A 引路者WASD / 方向键移动,也可用屏幕方向按钮决定路线、走位与朝向,诱导敌人撞上石柱,为同伴创造反击位置B 塑形者每按一次空格或屏幕招式按钮出招一次甲壳盾击负责格挡与打断;鳍身突刺负责快速近身反击;双翼滑翔斩负责机动与短暂无敌C 守忆者每按一次 E 或屏幕记忆按钮,推进一次“记录—触发”选择保存哪次招式或哪个位置,在有效时间内决定何时重放攻击或回到锚点守忆者的两种记忆有不同的操作过程:旧火 · 招式回声: B 出招后的 3 秒内按 E,记录这次招式及其位置;6 秒内再次按 E,在记录位置重放攻击。敌人需要进入回声范围才能被命中。风息 · 位置回溯: 按 E 留下持续 7 秒的位置锚点;再次按 E,让三人共用的身体回到锚点,保留已经受到的伤害。一次配合可以是:A 将撞岩兽引向石柱,B 趁敌人僵直近身反击,C 记录该次攻击,并在敌人重新进入记录范围时触发回声。按时完成“A 诱敌 → B 接招 → C 触发记忆”,可以获得共鸣终结伤害和能量奖励。公网与合约公网试玩,无需登录可观战。Monad Testnet,Chain ID 10143,测试 MON 仅支付 gas。当前战斗合约:0xeaf1d20bcaf178b6a1f370a084eba9aebeff7820,已通过 Monadscan 和 MonadVision 源码验证。部署交易。旧合约与旧房间记录仍在链上,房间编号不能跨合约混用。已完成单局公网验收:房间 4,51 秒通关、战后生命 60%、得分 10 / 13 / 13。A 通过公网浏览器和 WalletConnect 实际建房、提交、揭示、键盘移动、核验回放及结算;B/C 由两个独立签名的测试客户端配合。10 笔游戏交易及 3 笔退款全部成功,每个主钱包仅有 1 笔开局交易,三个会话最终余额均为 0。逐笔验证记录。未操作 MetaMask 扩展界面,未做三位真人平衡测试。另一次脚本联调在房间 2 通关;房间 3 的双翼配置脚本战败并正常结算零分。按单局试玩范围交付,三种配置的公网胜率不作为本次验收结论。三段远征版本已完成公网单人 B / C 各一局通关,分别验证鳍身→双翼→甲壳和旧火→风息进化。三钱包房间 13完成两次营地独立提交—揭示、三段战斗、回放核验、三方签名结算和三笔退款,每个主钱包仍仅一笔开局游戏交易(共 10 笔游戏交易)。该局前两段通关、第三段战败;联网三段胜利验收尚未通过,不能以模拟延迟测试或单人通关代替公网胜率。一局怎么玩一个人演示可直接打开单人演示,任选 A / B / C,另外两人自动操作。A 负责走位;B 每次按空格出招;C 第一次按 E 记录,第二次触发:旧火重放最近身体招式,风息返回锚点且不回血。三段环境轮换,营地各限时 45 秒,生命与能量继承;完成后可复制战报并查看本机档案。单人模式为本地演示,无需钱包、不上链。 提交与揭示只演示流程,不产生链上承诺或成绩;切换“三人联网”即可继续原有三钱包房间,独立权限与会话授权不变。三名玩家用不同钱包选择 A / B / C。创建或加入时,每人只确认一笔交易,同时授权本局临时密钥并拨付 0.06 测试 MON 的 gas 预算。三人协商,各自提交带随机盐的承诺。承诺绑定链、合约、房间、主钱包、角色与选择;三份齐备才允许揭示。揭示后确定身体、技能、初始生命与能量;不会立即判定通关。三人各点一次“准备战斗”,齐备后倒数 3 秒。同一战场只接受该角色的会话签名输入。A 用 WASD / 方向键移动;B 用空格施展身体技能;C 用 E 记录或触发记忆。可使用触控按钮;攻击按键不会按住连发。单人规则允许在冷却末尾 0.6 秒预输入一次,联网宽容规则为 1 秒;缓冲过期会丢弃,不会变成自动连发。A 诱敌、B 反击、C 触发记忆可完成共鸣连招。用石柱诱导撞岩兽冲撞,或以甲壳盾击打断;风核守卫发射风弹后短暂暴露核心。双翼与鳍身可以通过机动躲避、靠近反击,守忆者根据位置和时机重放攻击或回溯脱险。所有形态均可应对两种敌人。每段击破风核进入营地,三段全部通关才胜利;生命归零或任一段 45 秒内未击破则失败。营地中每人以原会话独立提交并揭示下一段选择,营地过程不上链,完整记录绑定最终回放哈希。链上个人目标与分数仍按开局选择计算。三人分别核验回放并确认战果,任一人提交三份签名完成链上结算。战后可退回剩余会话 gas。任一链上阶段限时 5 分钟;有人不揭示、不准备、不确认或断线时,到期后任何地址均可解除房间占用。正常完整一局有 10 笔游戏交易:开局 3、提交 3、揭示 3、结算 1。只有开局三笔需要主钱包确认;战斗输入、回放确认均在本页本地签名,结算交易也使用会话。钱包首次连接、切换网络以及主动选择的恢复 / 撤销操作另计。角色选择的影响个人目标A 引路者绕行:基础风伤 2;险路:风伤 4、能量 +1、敌人伤害提高;战斗负责走位穿越险路B 塑形者甲壳:耗能 2,盾击格挡 / 打断;鳍身:不耗能,快速突刺;双翼:耗能 2、风抗 2,滑翔斩 / 短暂无敌,风弹减伤 3生长甲壳C 守忆者旧火:耗能 1,记录并重放身体招式;风息:不耗能、风抗 1,记录位置并回溯,不恢复生命保留旧火配置生命为 max(1, 4 - 风伤),风伤最低为 0。战斗生命为 36 + 配置生命 × 8;三人全部坚持时,共生不稳再减 12,但仍可通过操作获胜。能量为初始 3 减身体 / 记忆消耗、加险路奖励,影响技能冷却。通关每人 10 分,个人目标达成再加 3 分;战败全员 0 分。三种典型让步形态仍为烬甲兽、烬翼兽、风甲兽。全部坚持且操作通关时三人均可得 13 分。同步与可信边界公网客户端为 Next.js 静态导出,沿用 RainbowKit / wagmi。Sites 的 Worker 使用固定 100 ms 步长统一推进战斗,D1 保存房间快照及输入回放;条件更新版本号防止三人的同时写入互相覆盖。客户端约每 180 ms 加一次请求耗时同步,画面插值移动。该轮询实现面向小规模比赛演示,尚未做多人房间容量与跨洲延迟测试。输入签名绑定链、合约、房间、角色、时间序号和按键;服务器检查链上阶段及会话有效期,角色不能越权。1 秒没有新输入即停止该角色动作;断线不会暂停当前段的 45 秒战斗计时。兼容旧房间的单段规则仍为 60 秒。确认战果前,客户端用相同固定步长规则重新执行回放并校验哈希。链上 finishBattle 校验三个主钱包或其有效会话对同一战果的签名,绑定链、合约、房间、胜负、剩余生命和回放哈希。无管理员单方结算入口。这属于服务器计算、三人共同确认的 MVP;不是链上逐帧证明。 回放的输入来源仍依赖服务器,合谋或恶意服务器不适合有经济奖励的竞技场。没有押金、代币奖励或 NFT。合约尚未经过外部审计。会话密钥仅保存在当前标签页 sessionStorage,最长 20 分钟;结算 / 超时 / 撤销后权限失效。关闭标签页丢失会话时,可用主钱包补签链上提交 / 揭示 / 超时;实时战斗需要有效的本页会话。前端不会静默降级弹钱包。随机盐及揭示备份也应私下保存。网络较慢但队友仍在同步时,服务端每次最多补算 0.5 秒旧输入,减轻延迟造成的连续误操作;完全失联仍按战斗计时结束,链上 5 分钟退出期限不变。自动引路者远距离接近时使用 1 秒指令、近距离使用 0.3 秒指令,避免一条旧方向持续走过头。开发与验证原前端和合约仍用 Yarn 4;新增战斗服务为独立 npm 项目,保留 Sites 的 Vinext / Cloudflare 构建集成和锁文件,避免改变原工程依赖。yarn install --immutable cd packages/battle-server npm run install:ci npm run db:generate cd ../.. node packages/battle-server/scripts/build-game.mjs 完整构建生成根目录 dist/,包含静态客户端、Worker 和 D1 迁移。站点身份及 DB 绑定保存在 .openai/hosting.json,私钥和本地凭据不进入部署包。D1 迁移由 Sites 在发布时执行;本地预览数据库单独初始化。cd packages/hardhat node node_modules/hardhat/dist/src/cli.js test --network hardhat node node_modules/typescript/bin/tsc --noEmit --incremental false cd ../nextjs node node_modules/typescript/bin/tsc --noEmit --incremental false node scripts/check-wallet-qr.mjs cd ../battle-server node node_modules/typescript/bin/tsc --noEmit --incremental false node ../hardhat/node_modules/tsx/dist/cli.mjs scripts/check-battle.ts 44 项合约 / 战斗测试覆盖全部 12 种选择、角色权限、提交—揭示、会话持有证明、授权 / 撤销 / 释放、三人战果签名、结果篡改与重放、战败及四阶段超时,以及两条单人路线的自动队友通关、射程与冷却限制。服务器检查用真实 SQLite 和签名验证模拟并发请求、越权输入、序号重放、800 毫秒输入更新、两次营地协商、数据库短暂断连、输入失效及完整回放;简单操作脚本证明四种主要配置可通关,不代替真人平衡测试。三钱包公网联调cd packages/hardhat .\scripts\symbiosis-testnet.ps1 balances .\scripts\symbiosis-testnet.ps1 fund .\scripts\symbiosis-testnet.ps1 deploy .\scripts\symbiosis-testnet.ps1 verify # Publish the matching Site before the following public-service runs. .\scripts\symbiosis-testnet.ps1 demos .\scripts\symbiosis-testnet.ps1 play .\scripts\symbiosis-testnet.ps1 expedition .\scripts\symbiosis-testnet.ps1 check # Recover an abandoned room only after its printed on-chain deadline. .\scripts\symbiosis-testnet.ps1 expire 脚本使用 Windows DPAPI 加密的三个专用测试钱包,每局生成独立会话,真实调用公网上的战斗服务并核验回放、三份签名、每个主钱包的一笔开局交易、链上结算及剩余 gas 退回。测试结果保存在忽略的 .local/symbiosis-battle-<contract>.json;仓库的历史 JSON 按合约区分,不能作为当前战斗版本的验证证据。入口:合约、页面、战场、共享战斗规则、战斗服务。

团队成员

小队十月十七

YY
队长
甜甜棠
Ppocky

元数据

创建者Y
创建时间2026年10月17日
状态已归档
项目 ID#435