返回项目列表
游戏项目已上线

福报镖局

一款已上线 Steam 的黑色幽默武侠跑酷游戏,扮演实习镖师,在拿命赶路与保住老腰之间挣扎求生。

武侠跑酷黑色幽默多分支结局

项目简介

《福报镖局》是一款黑色幽默武侠跑酷游戏。你将扮演新入职的实习镖师,施展轻功、管理真气,穿越险恶地形,将快递准时送到各位官人手中。每一单都关系绩效,每一次失误都可能被「优化」——在亡命狂奔、升职加薪与保住老腰之间,努力享受镖局赐予你的福报。

游戏循环

早晨对话 → 白天跑镖送货 → 傍晚结算 → 进入下一天。每一单都关系绩效,每一次失误都可能被「优化」。

核心特色

横版跑镖,拿命赶路 — 控制起落、闪避障碍;真气见底,就透支生命继续跑。

白天不够,夜里接着跑 — 放弃休息接下夜镖。没有额外奖金,但你的「奋斗」镖局都看得见。

武侠镖局,职场福报 — 绩效考核、末位清退、自愿奋斗。镖局从不强迫你努力。

跑镖之外,还得活下去 — 练功、吃饭、休息、交房租,在有限的工钱与精力间做出取舍。

每个同僚,都有自己的难言之隐 — 结识形形色色的镖师,卷入他们的支线,逐渐窥见镖局不愿示人的秘密。

我的职责

负责养成系统、内容数据库框架、存档系统、Steam 接入、音频系统和对话系统的设计与开发。

养成系统

  • 设计主城功能分区、模块解锁顺序和成长结构
  • 设计模块依赖、资源消耗、属性变化和成长反馈
  • 设计购买预览、确认窗口、Tooltip 和状态提示等交互流程
  • 实现建筑交互、住宅与餐厅、藏经阁、信件、晋升任务、排名考核等模块
  • 搭建主城功能与剧情、教程、每日流程和晋升考核之间的联动

框架与工具

  • 自研基于 ScriptableObject 的内容数据库框架,配套 Unity Editor 表格工具
  • 实现运行时数据管理与本地存档框架
  • 接入 Steam 启动检测与成就同步
  • 实现音乐、音效与场景音频管理
  • 基于 Yarn Spinner 扩展对话系统

系统架构

福报镖局 — 系统架构图

玩法系统

养成系统

跑镖之外,玩家在主城安排日常生活:用有限的工钱与精力换取属性成长,逐步解锁新功能与更高职级。

养成内容包括:

  • 住宅与餐厅 — 休息恢复精力、用餐维持状态,房租与伙食构成日常开销
  • 练功 — 投入时间与金钱,提升轻功、真气等跑镖属性
  • 藏经阁与信件 — 阅读收集内容,接收镖局通知与同僚来信,推进支线剧情
  • 晋升任务与排名考核 — 完成晋升任务提升职级,在末位淘汰的考核中保住位置

养成如何运转:

  • 各养成模块之间存在依赖关系,按成长结构依次解锁
  • 每次养成操作消耗对应资源,带来属性变化与成长反馈
  • GameModuleModuleManager 管理模块状态、父子依赖与批量解锁,并在解锁时联动教程触发与自动存档
  • ZCBuilding 连接建筑表现、交互状态与功能模块状态
  • ZCUIManager 管理主城窗口、全局窗口、窗口栈、ESC 关闭与窗口路由
  • 购买预览、确认窗口、Tooltip 与状态提示支撑每一次养成决策

音乐与音效系统

  • SoundManager 统一管理 BGM、SFX 与 Ambient
  • SO_SoundAssetSoundDatabase 配置音频资源与场景关联
  • 实现 BGM Crossfade、场景音频自动切换与音效对象池
  • 支持随机音效、随机 Pitch、循环环境音与独立音量控制

对话系统扩展

  • 基于 Yarn Spinner 扩展对话功能,注册 Yarn Command 供剧情调用游戏系统
  • 扩展对话队列、自动播放、跳过与对话历史记录
  • 跳过对话时补偿其中的关键命令,保持剧情、教程与模块状态一致

框架与系统

项目基于 UnityC# 开发,采用 ScriptableObject、Singleton、事件驱动、协程与对象池组织各系统。

内容数据库框架

  • 自研基于 ScriptableObject 的通用内容数据库框架,统一管理教程、餐厅、信件、音频、成就与关卡等资源
  • 泛型 SO_Database<T> 管理不同类型的数据,SO_BaseAssetInDatabase 提供统一的资源名称、唯一 ID 与资源引用
  • BaseTableTab<T> 搭建通用编辑器表格,支持新增、删除、搜索、分页、修改与保存,并基于 Odin Inspector 扩展配置流程
  • RuntimeAssetBase<T> 分离静态配置数据与运行时状态,通过唯一 ID 连接存档系统

运行时数据与本地存档

  • SaveManager 管理存档槽位、自动存档与数据恢复
  • ISavableSaveableBehaviourSaveableSingleton 统一可存档对象的生命周期
  • CaptureState()RestoreState() 分离运行时对象与持久化数据
  • 通过资源唯一 ID、SaveIdSaveGuid 稳定关联数据库资源与运行时状态
  • 基于 Easy Save 3 封装 ES3StorageProvider,支持存档目录、格式兼容、压缩与加密配置

Steam 功能接入

  • 基于 Steamworks.NET 接入 Steam 成就接口
  • 以客户端接口抽象平台调用,实现成就队列、批量提交、回调确认与失败重试
  • 支持 Steam 未启动、离线以及重新连接后的成就同步