一句"我的娃,过来一下",能让看动画片的孩子瞬间心跳停摆。因为接下来一定是跑腿:买面包、买盐,去Iya Toyin的店里,把钱数清楚。出门时背后还会飘来最后一句警告:"要是我数钱少了一奈拉……"
一个成年人把这段记忆做成了3D游戏,名字叫Pikin Days。他是个写开发者工具文章的人,不是游戏开发者。游戏免费、跑在浏览器里,玩家扮演被派去跑腿的尼日利亚小孩:先选孩子,再选派你出门的人——妈妈、爸爸、奶奶、阿姨、叔叔,然后上路。
路上要干的事不少:找到对的店、买对的东西(盐和糖不是一回事);数清找零,因为卖家不一定老实;躲开根本不减速的okada(摩的)、keke(三轮车)和公交;甩掉邻居家那条从来不喜欢你的狗Bingo;还得决定要不要停下来跟朋友踢球——而妈妈的耐心正在耗尽。到家后,妈妈会给一个信任评分。他在自己的游戏里只拿到了C。妈妈说:"我是让你明天再去吗?"
为什么做这个
一半是怀旧。刷尼日利亚的社交平台时,人们总在分享童年:NEPA(电力公司)断电时的煤油灯,来电时所有人喊"Up NEPA!",偷偷直接吃罐里的奶粉、结果因为嘴唇发白被抓包。他一直在想:如果能走进这些记忆里会怎样?
另一半是好奇。他靠解释工具怎么工作谋生,却从没端到端做过一个真有人玩的浏览器3D世界,想知道从里面看是什么感觉。他的答案是:快乐、慌乱,以及早上六点还在手机上反复测试。
技术栈与工作方式
- Three.js 负责3D街道、人物和动物
- Rapier 负责物理,让孩子不会穿墙
- Vite + TypeScript
- Cloudflare Pages 托管,Workers KV 存简单的游戏统计、投票和反馈
- ElevenLabs 做配音:妈妈、卖家、喊"Comot for road!"(让开道)的司机
最关键的一环:他用一个AI编程智能体来写。智能体写了大部分代码,但它不知道尼日利亚的街道该是什么感觉,不知道卖家是在你买完之后才说"谢谢,慢走",而不是之前;也不知道你隔着三条街,妈妈不可能从家里喊你的名字——这一条他得专门告诉它。
他的活是代码之外的一切:写非常具体的指令,比如"孩子转身时镜头要快速跟到身后;单指拖动只转视角、绝不缩放;大多数玩家不是游戏玩家";定规则——不用真实品牌,成年人永远不对孩子有敌意,不展示儿童做重体力活,没他说"push"就不上线;拼命测试,在手机上、在不同浏览器里、竖着拿横着拿都试;还要索取证据。"做完了"和"做完并验证过"不是一回事,所以他开始要求每个修复都附截图和录屏,外加一张诚实的表:哪些验证过、哪些没验证、哪些被藏起来了。
他说这感觉像同时当产品经理、测试、作者,以及一位非常严格的尼日利亚阿姨。
上线当晚:免费额度被打爆
他把游戏发到X上,开心去睡,醒来发现统计面板在报错。原因是真有人在玩,第一天就撞上了Cloudflare免费版每天1000次KV写入的上限——每次开局、每次投票、每条反馈都是一次写入。他升级到5美元的套餐,让面板只读不写,并把计数批量处理。烦吗?烦。但这也是上线日能遇到的最好的问题。
那个一直摆在眼前的bug
上线几天后,一位玩家发消息说:游戏卡在"把手机横过来玩"这一屏,横过来也没用。从上线起就这样。
更离谱的是,他自己也见过:从X点开自己的链接,看到同一屏,点了"在浏览器中打开",就过去了。他真以为是自己的手机问题。不是他的手机,是所有人的。
在X、TikTok、Instagram或WhatsApp里点链接,不会打开Safari或Chrome,而是打开应用自带的迷你浏览器。很多这类浏览器从不旋转,或者旋转了也不告诉页面。游戏一直在等一个永远不会到来的"手机已横屏"信号,人就卡在门口。他的面板其实也在喊:标题页有188次跳出。人来了,卡住,一声不吭地走了。
他学到两件事:你遇到怪问题绕过去了,玩家也会遇到,而大多数人不知道绕法——你自己的小绕行就是线索;大多数玩家不报bug,他们直接离开,每一个给你发消息的人背后,还有很多默默关掉标签页的人。
快速修法是每半秒检查一次屏幕宽高,而不是等旋转事件。真正的修法更大:把游戏重做成竖屏可玩。手机正常拿着就能玩,应用内浏览器怎么折腾都无所谓。
玩家和数字说了什么
第一个完整周:138局开始,38位新玩家。但只有31%完成了第一个跑腿任务,只有2局撑过了一整天的跑腿。疼,但是有用的疼。结合反馈,问题很清楚:对话太慢;被面包摊的桌子卡住只能退出;钱丢了又找回来,回家成了唯一选择,可时间已经不够;体力掉得太快。
他自己在手机上玩了一小时,发现更多:还没买东西,卖家就先说"谢谢,慢走";他站在桌边、根本不在路上,司机却连着冲他喊了三句不同的台词;一只山羊直接穿过排水沟的墙;朋友邀他玩警察抓小偷,喊了"oya let's go!",然后所有人就站着不动;足球被踢在suwe(跳格子)的格子上;时间耗尽后,又派他去完全相同的跑腿,同样的清单、同样的店——这条最伤,因为游戏的全部意义就是每次跑腿都不一样。
于是他给自己定了几条规则,他说任何产品都适用:屏幕上永远一次只显示一条信息;卡片上最多约12个词,要读他们就不玩了;弹窗不超过屏幕的约60%;玩家绝不能被困住、困惑或不知所措,一秒都不行。
新版本:分享你最搞笑的瞬间
最新更新竖屏可玩,从任何应用打开都正常,镜头跟随更顺,司机有了自己的(非常戏剧化的)声音,还能把最搞笑的瞬间存成短片:Bingo追你、和okada擦身而过、回家晚了面对妈妈……然后直接分享到WhatsApp、TikTok或X。
他学到的
- 在用户真正在的地方测试:不是笔记本,是手机,是从人们会分享你链接的那些应用里面。
- 面板是沉默用户在说话,跳出和流失就是反馈,像读消息一样读它们。
- 和AI协作是一项技能:说具体、定规则、要证据。"它说做完了"不叫测试。
- 先上线,再倾听。一周真实玩家的收获,比独自构建几周还多。
- 做得个人化。人们最喜欢的从来不是技术,是Bingo、是"Up NEPA!"、是妈妈那张成绩单上的话。
接下来
玩家可以投票决定下一步做什么,"Up NEPA!"目前以60%的得票领先,所以来电那一刻会有的。他的清单上还有更多跑腿类型、更多朋友间的游戏(等他把跳的动作调对,suwe就回来),以及更多可收集的记忆。忙了几周,他打算在下个更新前短暂休息,游戏已经上线,免费可玩。
热门跟贴