[{"data":1,"prerenderedAt":822},["ShallowReactive",2],{"project-detail-zh-fubaobiaoju":3},{"locale":4,"slug":5,"detailPath":6,"renderMode":7,"category":8,"categories":9,"title":10,"summary":11,"roles":12,"period":17,"status":18,"stack":19,"tags":21,"cover":25,"coverImageLayout":26,"coverAspectRatio":27,"links":28,"highlights":37,"featured":41,"order":42,"ogImage":25,"media":43,"page":83,"blocks":544},"zh","fubaobiaoju","\u002Fprojects\u002Ffubaobiaoju","blocks","game",[8],"福报镖局","一款已上线 Steam 的黑色幽默武侠跑酷游戏，扮演实习镖师，在拿命赶路与保住老腰之间挣扎求生。",[13,14,15,16],"programmer","gameplay-systems-design","gameplay-design-role","sound-design","2025.10 ~ 2026.07","live",[20],"unity",[22,23,24],"wuxia-parkour","dark-humor","branching-endings","\u002Fproject-media\u002Ffubaobiaoju\u002Fcover.png","full","16 \u002F 9",[29,33],{"label":30,"url":31,"kind":32},"Steam 商店","https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F4227420\u002F_\u002F","store",{"label":34,"url":35,"kind":36},"Bilibili 视频","https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1iHNd6PEJo","video",[38,39,40],"武侠跑酷","黑色幽默","多分支结局",false,"70",[44,48,52,56,60,64,68,73,78],{"id":45,"kind":46,"src":25,"alt":47,"aspectRatio":27},"cover","image","福报镖局 — key art",{"id":49,"kind":46,"src":50,"alt":51,"aspectRatio":27},"gallery-01","\u002Fproject-media\u002Ffubaobiaoju\u002Fgallery-01.png","福报镖局 — gameplay screenshot 1",{"id":53,"kind":46,"src":54,"alt":55,"aspectRatio":27},"gallery-02","\u002Fproject-media\u002Ffubaobiaoju\u002Fgallery-02.png","福报镖局 — gameplay screenshot 2",{"id":57,"kind":46,"src":58,"alt":59,"aspectRatio":27},"gallery-03","\u002Fproject-media\u002Ffubaobiaoju\u002Fgallery-03.png","福报镖局 — gameplay screenshot 3",{"id":61,"kind":46,"src":62,"alt":63,"aspectRatio":27},"gallery-04","\u002Fproject-media\u002Ffubaobiaoju\u002Fgallery-04.png","福报镖局 — gameplay screenshot 4",{"id":65,"kind":46,"src":66,"alt":67,"aspectRatio":27},"gallery-05","\u002Fproject-media\u002Ffubaobiaoju\u002Fgallery-05.png","福报镖局 — gameplay screenshot 5",{"id":69,"kind":46,"src":70,"alt":71,"aspectRatio":72},"poster-vertical","\u002Fproject-media\u002Ffubaobiaoju\u002Fposter-vertical.png","福报镖局 — vertical promotional poster","5 \u002F 6",{"id":74,"kind":46,"src":75,"alt":76,"aspectRatio":77},"studio-logo","\u002Fproject-media\u002Ffubaobiaoju\u002Fstudio-logo.png","福报镖局 — studio logo","777 \u002F 470",{"id":79,"kind":46,"src":80,"alt":81,"aspectRatio":82},"architecture-diagram","\u002Fproject-media\u002Ffubaobiaoju\u002Farchitecture.svg","福报镖局 — 系统架构图","2 \u002F 1",{"locale":4,"title":10,"summary":11,"roles":84,"period":17,"highlights":85,"links":86,"seo":89,"blocks":91},[13,14,15,16],[38,39,40],[87,88],{"label":30,"url":31,"kind":32},{"label":34,"url":35,"kind":36},{"title":10,"description":90,"image":45},"《福报镖局》是一款黑色幽默武侠跑酷游戏。扮演新入职的实习镖师， 施展轻功、管理真气，把每一单准时送到官人手中。\n",[92,108,181,249,382,521,524,537],{"id":93,"type":94,"region":95,"title":96,"items":97},"project-facts","metrics","hero","项目信息",[98,102,105],{"label":99,"value":100,"image":101},"团队规模","6 ~ 10",{"id":74,"kind":46,"src":75,"alt":76,"aspectRatio":77},{"label":103,"value":104},"平台","PC (Steam)",{"label":106,"value":107},"工具","Unity, Yarn Spinner",{"id":109,"type":110,"region":111,"title":112,"document":113},"project-description","rich-text","main","项目简介",{"id":114,"title":115,"body":116,"description":168,"extension":174,"meta":175,"navigation":176,"path":177,"seo":178,"stem":179,"__hash__":180},"projectBlocks\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Foverview.md","Overview",{"type":117,"value":118,"toc":167},"minimark",[119,126,130,133,136,143,149,155,161],[120,121,122],"blockquote",{},[123,124,125],"p",{},"《福报镖局》是一款黑色幽默武侠跑酷游戏。你将扮演新入职的实习镖师，施展轻功、管理真气，穿越险恶地形，将快递准时送到各位官人手中。每一单都关系绩效，每一次失误都可能被「优化」——在亡命狂奔、升职加薪与保住老腰之间，努力享受镖局赐予你的福报。",[127,128,129],"h3",{"id":129},"游戏循环",[123,131,132],{},"早晨对话 → 白天跑镖送货 → 傍晚结算 → 进入下一天。每一单都关系绩效，每一次失误都可能被「优化」。",[127,134,135],{"id":135},"核心特色",[123,137,138,142],{},[139,140,141],"strong",{},"横版跑镖，拿命赶路"," — 控制起落、闪避障碍；真气见底，就透支生命继续跑。",[123,144,145,148],{},[139,146,147],{},"白天不够，夜里接着跑"," — 放弃休息接下夜镖。没有额外奖金，但你的「奋斗」镖局都看得见。",[123,150,151,154],{},[139,152,153],{},"武侠镖局，职场福报"," — 绩效考核、末位清退、自愿奋斗。镖局从不强迫你努力。",[123,156,157,160],{},[139,158,159],{},"跑镖之外，还得活下去"," — 练功、吃饭、休息、交房租，在有限的工钱与精力间做出取舍。",[123,162,163,166],{},[139,164,165],{},"每个同僚，都有自己的难言之隐"," — 结识形形色色的镖师，卷入他们的支线，逐渐窥见镖局不愿示人的秘密。",{"title":168,"searchDepth":169,"depth":169,"links":170},"",2,[171,173],{"id":129,"depth":172,"text":129},3,{"id":135,"depth":172,"text":135},"md",{},true,"\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Foverview",{"description":168},"projects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Foverview","Mx76Fe8nbmJHgOvAgZbSYU9zj1CMklB3iiG8DJ6xrh4",{"id":182,"type":110,"region":111,"variant":183,"title":184,"document":185},"my-roles","wide","我的职责",{"id":186,"title":187,"body":188,"description":243,"extension":174,"meta":244,"navigation":176,"path":245,"seo":246,"stem":247,"__hash__":248},"projectBlocks\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Froles.md","Roles",{"type":117,"value":189,"toc":239},[190,197,200,219,222],[123,191,192,193,196],{},"负责",[139,194,195],{},"养成系统、内容数据库框架、存档系统、Steam 接入、音频系统和对话系统","的设计与开发。",[127,198,199],{"id":199},"养成系统",[201,202,203,207,210,213,216],"ul",{},[204,205,206],"li",{},"设计主城功能分区、模块解锁顺序和成长结构",[204,208,209],{},"设计模块依赖、资源消耗、属性变化和成长反馈",[204,211,212],{},"设计购买预览、确认窗口、Tooltip 和状态提示等交互流程",[204,214,215],{},"实现建筑交互、住宅与餐厅、藏经阁、信件、晋升任务、排名考核等模块",[204,217,218],{},"搭建主城功能与剧情、教程、每日流程和晋升考核之间的联动",[127,220,221],{"id":221},"框架与工具",[201,223,224,227,230,233,236],{},[204,225,226],{},"自研基于 ScriptableObject 的内容数据库框架，配套 Unity Editor 表格工具",[204,228,229],{},"实现运行时数据管理与本地存档框架",[204,231,232],{},"接入 Steam 启动检测与成就同步",[204,234,235],{},"实现音乐、音效与场景音频管理",[204,237,238],{},"基于 Yarn Spinner 扩展对话系统",{"title":168,"searchDepth":169,"depth":169,"links":240},[241,242],{"id":199,"depth":172,"text":199},{"id":221,"depth":172,"text":221},"负责养成系统、内容数据库框架、存档系统、Steam 接入、音频系统和对话系统的设计与开发。",{},"\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Froles",{"description":243},"projects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Froles","TTrTnQpYt08T-6JpgW9SgnDDxKYehhDUurWBVsdPOwI",{"id":250,"type":110,"region":111,"variant":183,"title":251,"document":252},"tech-implementation","玩法系统",{"id":253,"title":254,"body":255,"description":168,"extension":174,"meta":377,"navigation":176,"path":378,"seo":379,"stem":380,"__hash__":381},"projectBlocks\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fimplementation.md","Implementation",{"type":117,"value":256,"toc":372},[257,259,262,265,291,294,328,331,354,357],[127,258,199],{"id":199},[123,260,261],{},"跑镖之外，玩家在主城安排日常生活：用有限的工钱与精力换取属性成长，逐步解锁新功能与更高职级。",[123,263,264],{},"养成内容包括：",[201,266,267,273,279,285],{},[204,268,269,272],{},[139,270,271],{},"住宅与餐厅"," — 休息恢复精力、用餐维持状态，房租与伙食构成日常开销",[204,274,275,278],{},[139,276,277],{},"练功"," — 投入时间与金钱，提升轻功、真气等跑镖属性",[204,280,281,284],{},[139,282,283],{},"藏经阁与信件"," — 阅读收集内容，接收镖局通知与同僚来信，推进支线剧情",[204,286,287,290],{},[139,288,289],{},"晋升任务与排名考核"," — 完成晋升任务提升职级，在末位淘汰的考核中保住位置",[123,292,293],{},"养成如何运转：",[201,295,296,299,302,313,319,325],{},[204,297,298],{},"各养成模块之间存在依赖关系，按成长结构依次解锁",[204,300,301],{},"每次养成操作消耗对应资源，带来属性变化与成长反馈",[204,303,304,308,309,312],{},[305,306,307],"code",{},"GameModule"," 与 ",[305,310,311],{},"ModuleManager"," 管理模块状态、父子依赖与批量解锁，并在解锁时联动教程触发与自动存档",[204,314,315,318],{},[305,316,317],{},"ZCBuilding"," 连接建筑表现、交互状态与功能模块状态",[204,320,321,324],{},[305,322,323],{},"ZCUIManager"," 管理主城窗口、全局窗口、窗口栈、ESC 关闭与窗口路由",[204,326,327],{},"购买预览、确认窗口、Tooltip 与状态提示支撑每一次养成决策",[127,329,330],{"id":330},"音乐与音效系统",[201,332,333,339,348,351],{},[204,334,335,338],{},[305,336,337],{},"SoundManager"," 统一管理 BGM、SFX 与 Ambient",[204,340,341,308,344,347],{},[305,342,343],{},"SO_SoundAsset",[305,345,346],{},"SoundDatabase"," 配置音频资源与场景关联",[204,349,350],{},"实现 BGM Crossfade、场景音频自动切换与音效对象池",[204,352,353],{},"支持随机音效、随机 Pitch、循环环境音与独立音量控制",[127,355,356],{"id":356},"对话系统扩展",[201,358,359,366,369],{},[204,360,361,362,365],{},"基于 ",[139,363,364],{},"Yarn Spinner"," 扩展对话功能，注册 Yarn Command 供剧情调用游戏系统",[204,367,368],{},"扩展对话队列、自动播放、跳过与对话历史记录",[204,370,371],{},"跳过对话时补偿其中的关键命令，保持剧情、教程与模块状态一致",{"title":168,"searchDepth":169,"depth":169,"links":373},[374,375,376],{"id":199,"depth":172,"text":199},{"id":330,"depth":172,"text":330},{"id":356,"depth":172,"text":356},{},"\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fimplementation",{"description":168},"projects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fimplementation","4WK1bUK1Py8XxedlzqPPbgh5Fh-129_kt27G0ZZVFEY",{"id":383,"type":110,"region":111,"variant":183,"title":384,"document":385},"frameworks-systems","框架与系统",{"id":386,"title":387,"body":388,"description":515,"extension":174,"meta":516,"navigation":176,"path":517,"seo":518,"stem":519,"__hash__":520},"projectBlocks\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fsystems.md","Systems",{"type":117,"value":389,"toc":510},[390,400,403,439,442,492,496],[123,391,392,393,308,396,399],{},"项目基于 ",[139,394,395],{},"Unity",[139,397,398],{},"C#"," 开发，采用 ScriptableObject、Singleton、事件驱动、协程与对象池组织各系统。",[127,401,402],{"id":402},"内容数据库框架",[201,404,405,412,423,433],{},[204,406,407,408,411],{},"自研基于 ",[139,409,410],{},"ScriptableObject"," 的通用内容数据库框架，统一管理教程、餐厅、信件、音频、成就与关卡等资源",[204,413,414,415,418,419,422],{},"泛型 ",[305,416,417],{},"SO_Database\u003CT>"," 管理不同类型的数据，",[305,420,421],{},"SO_BaseAssetInDatabase"," 提供统一的资源名称、唯一 ID 与资源引用",[204,424,425,428,429,432],{},[305,426,427],{},"BaseTableTab\u003CT>"," 搭建通用编辑器表格，支持新增、删除、搜索、分页、修改与保存，并基于 ",[139,430,431],{},"Odin Inspector"," 扩展配置流程",[204,434,435,438],{},[305,436,437],{},"RuntimeAssetBase\u003CT>"," 分离静态配置数据与运行时状态，通过唯一 ID 连接存档系统",[127,440,441],{"id":441},"运行时数据与本地存档",[201,443,444,450,463,472,482],{},[204,445,446,449],{},[305,447,448],{},"SaveManager"," 管理存档槽位、自动存档与数据恢复",[204,451,452,455,456,308,459,462],{},[305,453,454],{},"ISavable","、",[305,457,458],{},"SaveableBehaviour",[305,460,461],{},"SaveableSingleton"," 统一可存档对象的生命周期",[204,464,465,308,468,471],{},[305,466,467],{},"CaptureState()",[305,469,470],{},"RestoreState()"," 分离运行时对象与持久化数据",[204,473,474,475,308,478,481],{},"通过资源唯一 ID、",[305,476,477],{},"SaveId",[305,479,480],{},"SaveGuid"," 稳定关联数据库资源与运行时状态",[204,483,361,484,487,488,491],{},[139,485,486],{},"Easy Save 3"," 封装 ",[305,489,490],{},"ES3StorageProvider","，支持存档目录、格式兼容、压缩与加密配置",[127,493,495],{"id":494},"steam-功能接入","Steam 功能接入",[201,497,498,504,507],{},[204,499,361,500,503],{},[139,501,502],{},"Steamworks.NET"," 接入 Steam 成就接口",[204,505,506],{},"以客户端接口抽象平台调用，实现成就队列、批量提交、回调确认与失败重试",[204,508,509],{},"支持 Steam 未启动、离线以及重新连接后的成就同步",{"title":168,"searchDepth":169,"depth":169,"links":511},[512,513,514],{"id":402,"depth":172,"text":402},{"id":441,"depth":172,"text":441},{"id":494,"depth":172,"text":495},"项目基于 Unity 与 C# 开发，采用 ScriptableObject、Singleton、事件驱动、协程与对象池组织各系统。",{},"\u002Fprojects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fsystems",{"description":515},"projects\u002Ffubaobiaoju\u002Fzh\u002Fblocks\u002Fsystems","s4Qe0YXbb7HqCK2QerSFqRw88GjwScWWIbqf-us7iIY",{"id":79,"type":46,"region":111,"title":522,"item":523},"系统架构",{"id":79,"kind":46,"src":80,"alt":81,"aspectRatio":82},{"id":525,"type":526,"region":111,"variant":527,"title":528,"items":529,"stageScale":535,"stageSideGap":536},"project-gallery","gallery","carousel","项目图库",[530,531,532,533,534],{"id":49,"kind":46,"src":50,"alt":51,"aspectRatio":27},{"id":53,"kind":46,"src":54,"alt":55,"aspectRatio":27},{"id":57,"kind":46,"src":58,"alt":59,"aspectRatio":27},{"id":61,"kind":46,"src":62,"alt":63,"aspectRatio":27},{"id":65,"kind":46,"src":66,"alt":67,"aspectRatio":27},0.9,40,{"id":538,"type":539,"region":540,"items":541},"outbound-links","links","aside",[542,543],{"label":30,"url":31,"kind":32},{"label":34,"url":35,"kind":36},[545,551,591,633,722,809,811,818],{"id":93,"type":94,"region":95,"title":96,"items":546},[547,549,550],{"label":99,"value":100,"image":548},{"id":74,"kind":46,"src":75,"alt":76,"aspectRatio":77},{"label":103,"value":104},{"label":106,"value":107},{"id":109,"type":110,"region":111,"title":112,"document":552},{"id":114,"title":115,"body":553,"description":168,"extension":174,"meta":589,"navigation":176,"path":177,"seo":590,"stem":179,"__hash__":180},{"type":117,"value":554,"toc":585},[555,559,561,563,565,569,573,577,581],[120,556,557],{},[123,558,125],{},[127,560,129],{"id":129},[123,562,132],{},[127,564,135],{"id":135},[123,566,567,142],{},[139,568,141],{},[123,570,571,148],{},[139,572,147],{},[123,574,575,154],{},[139,576,153],{},[123,578,579,160],{},[139,580,159],{},[123,582,583,166],{},[139,584,165],{},{"title":168,"searchDepth":169,"depth":169,"links":586},[587,588],{"id":129,"depth":172,"text":129},{"id":135,"depth":172,"text":135},{},{"description":168},{"id":182,"type":110,"region":111,"variant":183,"title":184,"document":592},{"id":186,"title":187,"body":593,"description":243,"extension":174,"meta":631,"navigation":176,"path":245,"seo":632,"stem":247,"__hash__":248},{"type":117,"value":594,"toc":627},[595,599,601,613,615],[123,596,192,597,196],{},[139,598,195],{},[127,600,199],{"id":199},[201,602,603,605,607,609,611],{},[204,604,206],{},[204,606,209],{},[204,608,212],{},[204,610,215],{},[204,612,218],{},[127,614,221],{"id":221},[201,616,617,619,621,623,625],{},[204,618,226],{},[204,620,229],{},[204,622,232],{},[204,624,235],{},[204,626,238],{},{"title":168,"searchDepth":169,"depth":169,"links":628},[629,630],{"id":199,"depth":172,"text":199},{"id":221,"depth":172,"text":221},{},{"description":243},{"id":250,"type":110,"region":111,"variant":183,"title":251,"document":634},{"id":253,"title":254,"body":635,"description":168,"extension":174,"meta":720,"navigation":176,"path":378,"seo":721,"stem":380,"__hash__":381},{"type":117,"value":636,"toc":715},[637,639,641,643,661,663,685,687,703,705],[127,638,199],{"id":199},[123,640,261],{},[123,642,264],{},[201,644,645,649,653,657],{},[204,646,647,272],{},[139,648,271],{},[204,650,651,278],{},[139,652,277],{},[204,654,655,284],{},[139,656,283],{},[204,658,659,290],{},[139,660,289],{},[123,662,293],{},[201,664,665,667,669,675,679,683],{},[204,666,298],{},[204,668,301],{},[204,670,671,308,673,312],{},[305,672,307],{},[305,674,311],{},[204,676,677,318],{},[305,678,317],{},[204,680,681,324],{},[305,682,323],{},[204,684,327],{},[127,686,330],{"id":330},[201,688,689,693,699,701],{},[204,690,691,338],{},[305,692,337],{},[204,694,695,308,697,347],{},[305,696,343],{},[305,698,346],{},[204,700,350],{},[204,702,353],{},[127,704,356],{"id":356},[201,706,707,711,713],{},[204,708,361,709,365],{},[139,710,364],{},[204,712,368],{},[204,714,371],{},{"title":168,"searchDepth":169,"depth":169,"links":716},[717,718,719],{"id":199,"depth":172,"text":199},{"id":330,"depth":172,"text":330},{"id":356,"depth":172,"text":356},{},{"description":168},{"id":383,"type":110,"region":111,"variant":183,"title":384,"document":723},{"id":386,"title":387,"body":724,"description":515,"extension":174,"meta":807,"navigation":176,"path":517,"seo":808,"stem":519,"__hash__":520},{"type":117,"value":725,"toc":802},[726,732,734,756,758,790,792],[123,727,392,728,308,730,399],{},[139,729,395],{},[139,731,398],{},[127,733,402],{"id":402},[201,735,736,740,746,752],{},[204,737,407,738,411],{},[139,739,410],{},[204,741,414,742,418,744,422],{},[305,743,417],{},[305,745,421],{},[204,747,748,428,750,432],{},[305,749,427],{},[139,751,431],{},[204,753,754,438],{},[305,755,437],{},[127,757,441],{"id":441},[201,759,760,764,772,778,784],{},[204,761,762,449],{},[305,763,448],{},[204,765,766,455,768,308,770,462],{},[305,767,454],{},[305,769,458],{},[305,771,461],{},[204,773,774,308,776,471],{},[305,775,467],{},[305,777,470],{},[204,779,474,780,308,782,481],{},[305,781,477],{},[305,783,480],{},[204,785,361,786,487,788,491],{},[139,787,486],{},[305,789,490],{},[127,791,495],{"id":494},[201,793,794,798,800],{},[204,795,361,796,503],{},[139,797,502],{},[204,799,506],{},[204,801,509],{},{"title":168,"searchDepth":169,"depth":169,"links":803},[804,805,806],{"id":402,"depth":172,"text":402},{"id":441,"depth":172,"text":441},{"id":494,"depth":172,"text":495},{},{"description":515},{"id":79,"type":46,"region":111,"title":522,"item":810},{"id":79,"kind":46,"src":80,"alt":81,"aspectRatio":82},{"id":525,"type":526,"region":111,"variant":527,"title":528,"items":812,"stageScale":535,"stageSideGap":536},[813,814,815,816,817],{"id":49,"kind":46,"src":50,"alt":51,"aspectRatio":27},{"id":53,"kind":46,"src":54,"alt":55,"aspectRatio":27},{"id":57,"kind":46,"src":58,"alt":59,"aspectRatio":27},{"id":61,"kind":46,"src":62,"alt":63,"aspectRatio":27},{"id":65,"kind":46,"src":66,"alt":67,"aspectRatio":27},{"id":538,"type":539,"region":540,"items":819},[820,821],{"label":30,"url":31,"kind":32},{"label":34,"url":35,"kind":36},1786880260805]