第 1 集: 《AI 写了 52 万行代码,入口藏在广告失败回调里》
昨天公司把我调去接一个 Cocos Creator 项目。
交接文档只有一句话:
项目已完成 95%,剩下 5% 为不可描述部分。
我当时没懂什么叫不可描述。
直到我打开仓库。
52 万行代码。
14 个启动场景。
23 个 GameManager 。
以及一个叫 main_real_final_backup_不要点.scene 的文件。
我点了。
Cocos Creator 闪退了。
我重新打开项目,发现那个 scene 自己改名了:
main_real_final_backup_真的不要点.scene
那一刻我知道。
这不是项目。
这是电子凶宅。
我问交接的人:
“游戏入口在哪?”
他说:
“理论上在 Main.ts 。”
我说:
“实际上呢?”
他说:
“实际上在一个广告回调里。”
我以为他在开玩笑。
结果项目启动流程是这样的:
- 初始化 SDK
- 拉广告配置
- 广告失败
- 进入游戏
也就是说,这个游戏不是被玩家打开的。
是被广告拒绝之后,顺手活下来的。
最诡异的是资源加载。
正常项目加载资源:
resources.load("xxx")
这个项目加载资源:
resources.load(path || backupPath || oldPath || aiGuessPath || "随便试试")
我查了一下。
随便试试 这个目录真的存在。
里面有 800 多张图。
每一张都叫:
new.png
new_new.png
new_final.png
new_final_use_this.png
new_final_use_this2.png
美术说她没见过。
程序说不是他传的。
AI 说它没有记忆。
我说那它们是谁的?
群里安静了三分钟。
最后产品说:
“先别删,线上可能在用。”
这句话在我们项目里不是建议。
是丧钟。
第一天我修了一个 bug:
“点击开始游戏没反应。”
我查按钮事件。
没有绑定脚本。
我查节点。
节点是空的。
我查代码。
代码里监听的是另一个透明按钮。
我查透明按钮。
它被一个新手引导遮罩挡住了。
我查遮罩。
遮罩的点击事件绑定在音效管理器上。
我查音效管理器。
音效管理器里有一行:
if (Date.now() % 2 === 0) startGame()
我盯着这行代码看了很久。
这个项目不是点击开始游戏。
是偶数时间赐予玩家进入游戏的资格。
看到这句代码, 沉默了好久. 这什么脑回路才能写这样的代码
