下载 App
《行止》开发者日志4
修改于10/1914 浏览综合
重点:状态机拆分、布置 / 运行阶段隔离、物理系统轻量化实现
大家好,这边是《行止》的程序组日志。目前完成了角色基础运动、相机跟随,以及最核心的整备布置‑闯关运行双阶段状态机,第一章「失重」两个关卡已经可以跑通基础流程。
本作最特殊的约束是:道具只能在整备阶段放置,启动闯关之后禁止新增、修改任何道具。为了严格实现这个规则,我们把整个游戏关卡拆成两套独立状态:Prepare(整备布置态) 和 Run(闯关运行态),由一个全局关卡状态机统一管控。
- 整备状态:开启鼠标交互,渲染场景内所有可放置碑槽点位,允许玩家选择道具、拖拽放置、撤回重置;此时物理系统处于冻结,场景物体保持初始姿态,不会发生漂浮下落。按下启动按钮 / 空格,系统快照保存当前所有道具的位置、参数,切换进入运行状态。
- 运行状态:鼠标布置 UI 全部隐藏,关闭道具放置逻辑;解冻物理,所有校准道具开始生效,失序规则开始驱动场景物体;玩家只能使用键盘完成移动、跳跃、下蹲。死亡或者按下 R 键,状态机切回整备态,加载关卡原始快照,清除上一轮运行产生的物体运动结果,回到布置前。
这里踩了一个典型坑:最开始没有做完整场景快照,重置时只把角色放回出生点,已经被重锚、浮囊推动过的平台会保留上一局的运动结果,导致第二次开局场景错乱。解决方案是每一次进入整备阶段,都重载关卡物体的初始 Transform,道具恢复到未实例化状态,再读取玩家本次的放置记录重新生成道具实体。
物理方面,考虑两周 GameJam 工期,直接放弃高成本完整刚体模拟。没有做真实转动惯量、复杂堆叠碰撞,改用参数化物理实现全部失序效果:
- 失重:给场景物体单独的 “受重开关”,玩家角色永远保持正常重力不受影响;
- 重力、风力、摩擦力全部用区域向量配置,不同区域挂载对应的失序组件;
- 碰撞只保留四类:玩家角色、静态平台、动态场景物体、触发器,减少大量无效碰撞检测开销。
角色移动逻辑我们严格遵循策划文档要求:角色基础加速度、跳跃高度全六章固定不变,环境只修改运动结果,不改输入参数。狂风不会修改按键灵敏度,而是给角色施加持续横向速度偏移;“无着” 不修改角色本身,而是修改角色所处区域的地面摩擦系数。这样保证玩家不需要每一关重新适应操作手感,难点全部交给环境与路线判断。
相机采用横向跟随逻辑,预渲染前方约一屏的场景,规避危险被角色遮挡的问题;同时加入缓冲阻尼,防止高速滑行、被狂风吹动时镜头剧烈抖动。
目前遗留待解决问题:
- 动态物体高速运动下,偶尔出现穿透平台的碰撞 bug;
- 检查点系统还未接入,死亡后只能回到关卡起点;
- 道具生效的事件触发逻辑还比较硬编码,后续需要封装通用事件,方便后面颠倒、狂风、酸雨复用。
下一步工作:接入检查点存档快照,完成第二章颠倒重力的组件开发,处理高速物体碰撞穿透。#聚光灯gamejam开发者日志











