大家好,我是秃头老李,一名老策划。
先跟大家透个底。 入行八年,我现在是个老油条了,遇到需求砍一半,看到 Bug 也不慌。 但如果时光倒流回七年前,站在那个 SLG 项目组的工位上,我还是个彻头彻尾的愣头青。
那时我刚转正,满脑子都是“改变世界”的策划梦。 也就是那一年,那个该死的“长坂坡突围”关卡,还有那一顿强颜欢笑的肯德基,成了我职业生涯最深的心理阴影。
如果不做这个 ConfigNexus 工具,我可能至今还被困在那个全是 JSON 的噩梦里。
那是项目最赶的时候。 制作人看了竞品,拍脑门要复刻一个“像素级”的高难度关卡,限时一个月。 任务落到了我这个新人头上。
那时候我懂个屁啊。我觉得这是领导器重我,给我机会表现。 我给自己排了个完美的计划表:前两周写文档,后两周配表。
前半个月,我像个战神一样,文档写得花团锦簇,逻辑图画得比蜘蛛网还密。 看着旁边熬夜修 Bug 的程序大哥,我心里甚至有点小得意:看,这就是科班出身的策划,时间管理大师。
但我忘了一件事:文档里的逻辑是给人看的,表格里的数据是给机器跑的。
前面的场景和关卡配置都很顺利,直到只剩下最后一张事件表的那天下午。
此时出现了问题,我之前想的太简单了。当我对着设计文档和 Excel 表格时,脑子里突然响起了警报。
我要实现的逻辑是这样的:
“当玩家走到 A 点,如果(身上有‘青釭剑’ 且 曹操血量 > 50%)或者(回合数 < 5 且 赵云在场),那么触发剧情 B。”
而我要填的表格呢?只有两列:Condition_Type 和 Condition_Value。 它根本不支持这种“嵌套再嵌套”的逻辑。
那一瞬间,我心里“咯噔”一下。 那种感觉就像是一脚踩入了深渊。当前的字段根本无法去实现这么复杂的逻辑。
我看着日历,距离封版本只剩 1 天。 脑子里只剩下两个字:完蛋。
我将文档发给主程,像个做错事的小学生,颤颤巍巍地挪到老张身后。 老张那是项目组的大佬,平时不苟言笑。此刻他正戴着耳机,屏幕上的代码映射在厚重的眼镜上,散发着“生人勿近”的杀气。
“张哥……这个事件表的结构,可能得改一下。我需要支持多重条件的嵌套……”
老张摘下耳机,接受了文档,看到内容一瞬间眉头皱了起来,转过头,那眼神像是在看一个智障。 他指着屏幕上那一堆红色的 Error,又指了指墙上的倒计时,声音冷得像冰窖:
“这事干不了,还有一天就要打包了,你让我现在给你新加这么多字段跟逻辑?”
我看着那一堆报错,脑子一热,为了在主程面前展露一下我有“技术思维”,脱口而出:
“张哥,那别改表结构了。我把这些逻辑写成 JSON 字符串,填在原来的 Condition_Value 里。你只要在代码里解析一下这个字符串就行,不用动表头。”
老张愣了一下,把你眼镜摘下来擦了擦,意味深长地看了我一眼:“你确定?在 Excel 里手写 JSON 可没代码提示,写错一个标点就挂。”
“没事!我仔细点!这个逻辑我熟!”我很自信地拍了胸脯。
老张耸耸肩:“行,那你填吧。解析器我半小时写完。”
那一刻的自信,成了我后来想抽死自己的理由。
这一句“我填”,是我噩梦的开始。 前面半个多月的“按时下班”成了最大的笑话。原本预留给调试的时间,全部变成了在那小小的单元格里手写括号的垃圾时间。
为了赶在周四晚上出包,哪怕只剩最后一天,我也必须要填完这 几百行json 数据。
你们能想象那个画面吗? 我的屏幕上全是这种东西: {"event_id": 1001, "cond": [{"type": 1, "val": 100}, {"type": 2, "val": [1,2]}], "action": "spawn_monster"}
我也想用 IDE 写,但数据都在 Excel 里。我只能在一个小小的单元格里,手动敲大括号 { } 和中括号 [ ]。 那一晚,我感觉自己不是在填表,我是在人肉编译代码。
到了晚上 11 点,我的眼睛已经花了。屏幕上密密麻麻的大括号和小括号像是在跳舞。
一直到周四下午,疲惫不堪的我,顶着两个黑眼圈,颤抖着点了“提交”。 全组人围在屏幕前打包。 然后,毫无悬念的—— BUILD FAILED.
因为我在第 4800 行的一个 Key 后面,多敲了一个中文全角空格。
那一刻,办公室里死一样的寂静。 负责测试的妹子小刘,原本化好了妆准备去约会,现在她什么也没说,只是默默地把背包放回了椅子上,眉头死死锁着,盯着屏幕发呆。 主程老张没有回头看我一眼,他只是把键盘敲得**“啪啪”**作响,每一声回车都像是在扇我的脸。
那一刻,如果你以为我会像电视剧里那样,缩在角落里哭,大家给我冷暴力,那就太小看职场了。
虽然我心里碎了一地,羞耻感让我恨不得钻进地缝里,但我的脸上必须立刻堆起笑容。
我几乎是弹射起步,熟练地打开外卖软件,大喊一声: “哎呀!我的锅我的锅!大家辛苦了!为了赔罪,今晚肯德基我包了!全家桶管够,大家别客气,V50 这种小事我来!”
原本死寂的办公室,气氛瞬间就“活”过来了。
“哎哟,铁公鸡拔毛了啊!”
“小李啊,下次那个空格注意点啊,这可是你请的第三顿了。”
“来来来,先吃鸡先吃鸡,吃完再打包。”
大家嘻嘻哈哈地分散回工位上。老张也没再骂人,而是边啃边说了一句“你个败家玩意儿”,然后转头继续帮我改代码。小刘也不皱眉了,一边吐槽我的粗心。
我们在“欢声笑语”中修完了那个 Bug,顺利打了包,吃了炸鸡。 深夜,大家拍着我的肩膀说“辛苦了”,然后各自打车回家。
这是一个皆大欢喜的结局,对吧?
那天回家路上,我坐在出租车后座,胃里塞满了油腻的炸鸡,看着窗外一盏盏划过的路灯。
车里很安静,安静得让我耳鸣。 其实大家都很好了。老张没再骂我,小刘也笑着说没事。 但恰恰是这种“没事”,让我感到前所未有的难受。
入行前,我以为策划的成人礼,是项目上线那天,看着滚动字幕里出现自己名字的瞬间。 太天真了。
每一个策划真正的成人礼,都是在 Deadline 前的那一秒。 不是你写出了惊世骇俗的案子,而是当你看着进度条卡在 99%,屏幕上炸出一片刺眼的报错红字时,那一瞬间涌上心头的、彻头彻尾的无奈。
那种无奈是:你明明满脑子绝妙的创意,却被一个看不见的空格按在地上摩擦;你明明想做那个拯救世界的英雄,最后却变成了那个连累全军覆没的罪人。
那一刻,我觉得自己真像个傻逼。
我忍不住在想: 我也许可以用炸鸡买来大家的谅解,但我买不回大家今晚失去的陪家人的时间,买不回我对“专业”这两个字的底气。
在那一刻,我看着车窗倒影里那个疲惫的年轻人,眼神逐渐冷了下来。
我不恨任何人,我只恨那个无能的自己。 我恨那个因为经验不足,只能靠“人情世故”来弥补技术漏洞的自己。
多年后的今天,当我终于写下 ConfigNexus 的第一行代码时,我意识到: ConfigNexus 的诞生,不是为了技术炫技。
我要做一个工具,让对就是对,错就是错。 错的时候,工具会冷冰冰地拦住我,狠狠地打我的手心。 哪怕它对我残忍一点,也好过让我把这个烂摊子带到那一群活生生的人面前,逼着大家用善良来为我的愚蠢买单。
我们不需要那些廉价的炸鸡和赔笑。 ConfigNexus 想做的只有一件事:守护每一个策划打包 Deadline 最起码的尊严。
也许,这颗多年前在出租车后座上种下的芽,今天终于要开花了。


暂无关于此日志的评论。