NEW LIFE / AI 游戏与交互世界
String the Ghost
@ 峰哥牛逼
#卡牌#3D战斗#肉鸽#agent
[ 团队 ]
- 王颢哲15981884995
- 蔡易霖17260011393
> 提交时间:2026/9/24 02:48:10
[ 项目介绍 ]
一、项目定位
《String the Ghost》是一款以「卡牌驱动实时身体动作」为核心的单人 Roguelite 动作游戏。
核心主张:卡牌不是数值结算的菜单,而是角色身体动作的即时触发器;玩家构筑的是战斗节奏,而非伤害倍率。
当前为一功能完整的垂直切片:从教学关、三层随机城市、街段遭遇、商店与义体构筑、侵蚀阈值,到镜像 Boss 决战与胜利演出,单局闭环全部可运行并通过自动化测试验证。
二、核心矛盾与三条设计原则
动作游戏考核操作精度,卡牌游戏考核资源规划。两者结合时,行业普遍失败于一处结构性矛盾:随机抽得的手牌与角色既有的身体能力相互冲突——手中没有位移牌,玩家面对敌方前摇便无任何应对手段。这不是难度设计,而是控制权的丧失,并把失败归因从"我的决策"扭曲为"抽牌太差"。
本项目将该矛盾作为核心机制正面处理,确立三条原则。
原则一:基础机动不依赖卡牌。 WASD 移动与跳跃常驻可用,跳跃不消耗能量、不占用卡牌。玩家在任何手牌状态下都保有完整的空间操作能力。
原则二:位移牌是机动的增强,而非机动的许可。 翻滚拥有 0.44 秒无敌窗口与约 4.11 米固定位移,速度与距离均优于后退走位,也是稳定脱离重剑敌人 4.4 米攻击范围的唯一手段。位移牌的价值在于"更可靠地规避",而非"能否规避"。
原则三:卡牌驱动身体动作,而非数值结算。 打出一张牌会真实触发角色的出拳、翻滚或腾空动作,伤害是动作的结果而非目的;操作反馈来自动作本身,因而具备可感知的手感。
三条原则共同构成一个可被操作验证的命题:原地依赖抽牌将导致失败,读取前摇并据此出牌方可取胜。
三、三个核心创新点
创新点一:可解释、有边界、可降级的自适应 Boss
镜像 Boss 不采用"读取玩家手牌后针对性出招"的作弊式设计,也不把实时战斗决策交给大模型,而是严格分层:
层级 职责 关键约束
L1 世界模型 记录最近 40 张成功打出的卡牌与失败尝试,按 8 秒半衰期加权统计动作类别、连招转移(如 roll→slash)、能量投入与距离分桶 仅观测已发生的行为与公开状态,不读取当前手牌、抽牌堆与未来随机数
L2 策略摘要 低频异步向大语言模型提交紧凑摘要,获取受限 JSON 策略(如 aggression / roll_response) 间隔 12 秒,样本不足 4 次不发送;实时帧不等待网络;返回值须过 JSON 解析、字段白名单、数值区间三重校验,任一失败即丢弃
L3 本地反应状态机 plan_reaction() 为无副作用的纯规划接口,逐物理帧依据"已识别连招 + 当前能量"输出 evade / disengage 意图,并附可解释依据 Boss 控制器自行决定移动、攻击与碰撞;该意图不参与命中、伤害、抽牌与胜负判定
该架构的价值集中在三项可被评审直接检验的属性:
公平性:系统只能利用玩家已暴露的行为模式。它能学会"该玩家习惯在翻滚后接续攻击",但无法知道玩家此刻是否持有翻滚牌。
可解释性:每次策略调整都对应可读证据链,例如"翻滚后接续攻击频率显著偏高,据此提高闪避权重"。强度不来自不可见的数值膨胀。
可失败性:网络超时、非法 JSON、越界策略均不影响战斗运行,系统自动回退至本地规则;断网状态下依然完整可玩。
该系统由契约测试锁定:tests/test_boss_brain.gd 以玩家代理验证动作学习、连招识别、能量门槛、状态机白名单与策略边界;tests/test_llm_bridge.gd 以回环 HTTP 服务验证请求、取消、超时与响应校验,均不依赖真实网络与密钥。
创新点二:卡牌与实时动作的衔接机制
项目实现 13 种动作、初始 10 张与全解锁 18 张实体卡牌、默认 4 个可见手牌槽(义体可扩展至 9 槽)、能量上限 10 点、每秒恢复 2 点。数值本身不构成差异,差异在于动作间的衔接与取消关系:
机制 实现表现
翻滚中攻击 0.44 秒窗口内可插入快拳、出拳、扫腿或点射,攻击与位移并行结算,距离与无敌窗口完整保留(每次翻滚限一张)
动作取消 出拳可接翻滚取消余波;蓄力重劈可被位移牌取消;短距闪现结束即可攻击;俯冲重斩可被空中翻滚或闪现取消
方向锁定 翻滚与突进出拳期间锁定位移方向,转镜头或改输入均不改变本次位移,由此建立操作承诺感
读招—规避—反击 敌方前摇经调整至可清晰辨认:重剑敌人 1.34 秒、拳击手 0.60 秒加 0.20 秒判定,规避成功后原地僵直 1.5 秒,构成明确反击窗口
三维战斗判定 攻击结算涵盖距离、角度、高度与障碍遮挡四重判定;在攻击高度顶点跃过即可规避;同一次挥击对同一目标最多结算一次伤害
"读取前摇—翻滚规避—收招反击"这一约三秒的循环构成验收基准,并作为教学关第五步授予玩家。
创新点三:结构完整的单局 Roguelite 闭环
按 F5 启动后,玩家依次经历:
教学关:五步依次教学移动、跳跃、出牌与核心循环,全程 2–4 分钟,可随时跳过。
随机生成的城区第一层:连续几何生长算法先生成 68 度主干道与两侧三条支道,再沿道路与既有建筑边生长,直至连续失败 2200 次、0.5 米步长收尾扫描仍无合法位置。层内含约 60 栋以短边 6 米归一化的真实 GLB 楼体与三角面碰撞;楼体遮挡视线时不消失,转为带扫描线的蓝青渐变半透明材质;商店、工厂、医疗中心、公安局与居民楼五类建筑可交互。
三类具备独立解法的街道敌人:大剑敌人(100 生命、40 伤害、长前摇,仅能靠翻滚稳定规避);拳击手(55 生命、12 伤害、光学隐形,现形 0.72 秒,后撤后僵直 1.5 秒);狙击手(射程 20 米、弹速 50 米每秒、受击后 3 秒内无法射击、仅在受击后显形)。
水域与侵蚀系统:浅水可行走,深水真实下沉,脚部低于 −2.4 米判定"意识迷失";侵蚀条在探索与静止时累积、战斗期间中止,满 100 触发数字雨转场进入决战场。
镜像 Boss 决战与胜利演出:Boss 以 3 秒护盾无敌入场,使用翻滚连拳、突进回旋踢与近身护盾,自适应系统在此启用。胜利后播放完整演出——决战场崩塌、坠落水池、水面俯视台词、数码闸门过场,载入下一层。
第二层与第三层:三层共用同一套代码,差异集中于 level_stats.gd 的单张配置表。
项目 第一层 第二层 第三层
地图范围 100×100 米 160×160 米 180×180 米
敌人生命倍率 ×1.0 ×1.4 ×1.85
敌人伤害倍率 ×1.0 ×1.25 ×1.5
遭遇场次 8 10 12
镜像 Boss 生命 500 1000 1600
数值缩放入口唯一且幂等:反复重置不叠加倍率,第一层 1.0 倍率保证基础数值不变。层间差异集中表达,降低维护成本,并由回归测试验证。
四、工程质量与验证
指标 数值
GDScript 代码量 约 3.2 万行,121 个文件
自动化测试 30 个 test_*.gd,全部支持无界面运行
场景文件 15 个 .tscn
3D 资产 23 个 GLB,约 743 MB(含可离线简化碰撞网格)
渲染配置 Compatibility 渲染器;逻辑视口 960×540,窗口默认 1280×720,界面随窗口缩放
外部依赖 无。不需要 .NET、编辑器插件或网络;大模型桥接为可选增强
测试覆盖的是系统契约与规则,而非仅验证项目可启动:
牌库守恒与卡牌 ID 唯一性、无替换抽取、洗牌时机、补牌延迟、出牌失败时状态不变;
伤害结算、攻击预警、走路与翻滚对照、死亡、暂停与复活,以及三维碰撞、三角网格台阶、高墙、低顶与空中台阶判定;
建筑遮挡虚化的九线视线检测与材质恢复;敌人光学隐形的隐藏、扫描层交叉渐变、原贴图恢复与多敌人材质隔离;
地图生成种子可重现性、建筑退距与楼间距、水域四边四角、深水迷失;侵蚀计时、场景转场、Boss 入场无敌、牌库与义体保留、R 键中断还原;
三层数值单调性、缩放不叠加、第一层数值回归;自适应系统的动作学习、连招识别、白名单与响应校验。
五、当前范围边界
未纳入当前范围 说明
存档系统 关闭游戏后回到初始牌组。优先完成单局内体验,持久化列为后续工作
室内场景 当前为可探索灰盒城市,建筑均为外景;室内需独立关卡与镜头方案
义体部位耐久 六部位独立血条显著增加认知负担——玩家已需同时管理手牌、位置与能量,故原型阶段不实现
大模型台词层 模型仅参与策略生成,不参与台词。台词层需配套超时、缓存、内容过滤与降级机制,完备前不上线
正式美术资产 大量使用引擎内程序化材质与灰盒几何;建筑、角色与武器使用外部 GLB
数值平衡结论 当前验证的是交战与规避节奏,不主张数值平衡已过玩家测试
原创性边界。 项目在叙事与角色命名层保留了向经典赛博朋克作品的致敬(镜像、水面、台词等意象)。若进入商业化或正式发行,上述命名、台词、角色轮廓与组织设定均需原创化替换;界面设计、系统架构、代码实现与玩法逻辑均为自研。
[ 演示视频 ]
时长 0:56
[ 项目图集 ]