如果你在奈及利亞長大,有一句話能在你看卡通看到一半時,直接讓你心臟漏拍:

「我孩子,過來一下。」

你知道接下來會發生什麼。差事。去買麵包。去買鹽。去伊雅・托因的店,還要把找零數清楚喔。等你走出大門時,最後的警告又會傳來:

「如果我數錢時少了一奈拉……」

所以我就做了任何一個正常大人都會對這段記憶做的事:把它做成了一款 3D 遊戲。😂

手機上的 Pikin Days 標題畫面

那麼,Pikin Days 是什麼?

Pikin Days 是一款免費的 3D 瀏覽器遊戲,讓你一段記憶一段記憶地重溫奈及利亞的童年。 每一集都是成長過程中的一個切片。

第 1 集是「把找零拿好」:替家人跑腿,把完整的找零帶回來。你先選孩子,再選是誰派你去(媽媽、爸爸、奶奶、阿姨、叔叔……),然後就出發。

一路上你得:

  • 找到正確的店,買對正確的東西(鹽和糖可不一樣喔!)
  • 數好找零,因為店家不一定總是老實
  • 閃開不會為任何人減速的摩托計程車、三輪車和公車
  • 躲開 Bingo,那隻從來不喜歡你的鄰居家的狗
  • 決定要不要停下來跟朋友踢足球……而媽媽的耐心正在倒數
  • 在她派人來找你之前回到家

選擇是誰派你去跑腿

最後,媽媽會給你一個信任評分。我自己玩自己的遊戲只拿到 C。媽媽說:「我是叫你去明天嗎?」我真的懂了。😭

媽媽的信任評分成績單

為什麼我做了這個

老實說?一半是懷舊,一半是好奇。

這款遊戲裡的記憶,是很多奈及利亞人共同擁有的,尤其是我們這些 90 年代和 2000 年代初長大的人:NEPA 停電時的煤油燈、電一回來大家一起大喊 「Up NEPA!」、偷偷舀一匙奶粉卻把嘴唇染白露餡。我一直在想:如果你可以走進這些記憶裡,會是什麼感覺?

另一半則是出於好奇。我靠寫開發者工具維生,平常都在解釋事情怎麼運作。但我從來沒有端到端做過這種作品——一個真正在瀏覽器裡運作、真的有人在玩的 3D 世界——而我想知道,從裡面看它到底是什麼感覺。

劇透:那感覺是喜悅、恐慌,還有早上 6 點在手機上反覆測試的疲勞。

我是怎麼做出來的(沒有遊戲開發背景)

技術堆疊如下:

  • Three.js:打造一個活生生的奈及利亞街道 3D 場景(攤販、路人、摩托計程車、山羊),直接在手機瀏覽器裡跑,不用下載
  • Mixamo:角色動畫。我親自挑選並調整每一個走路、跑步與反應動作,讓孩子們的動作像真的小孩
  • Rapier:物理引擎,避免孩子穿牆,或被卡在麵包攤桌子後面(這部分後面還會提到 👀)
  • Vite + TypeScript:快速、型別安全的程式碼基底,能跟上每天更新
  • ElevenLabs:配音:媽媽、店家、以及大喊「讓開!」的司機。老實說,這部分壓力很大。要把聲音做得真的像奈及利亞口音,試了超多次,很多版本聽起來比較像倫敦而不是拉各斯 😅 我把每一句都聽過,只留下聽起來對的版本
  • 一個靜態網站 + 無伺服器後端:用來記錄遊戲統計、玩家投票、回饋,以及我用來查看玩家在哪裡流失的私人管理後台

而工作流程中最重要的一部分是:我把 AI 寫程式代理當成我的工程團隊來用。

先說清楚,免得有人說「所以是 AI 做的?」:不是。這個代理寫了很多程式碼,就像計算機做了很多數學題一樣。但它沒有決定要做什麼、該有什麼感受、或什麼時候算夠好。那是我決定的。

我這邊實際做的事是:

  • 設計遊戲。 跑腿、數找零、媽媽耐心見底、信任評分、Bingo、誘惑你脫離跑腿任務的朋友遊戲。點子、規則、以及整體感受。
  • 讓它有奈及利亞味。 AI 不知道店家是在你買完之後才說「thank you, go well」,也不知道「Comot for road!」比「請讓開」更有味道。每個街景細節、每句台詞、每段記憶都得經過我。
  • 寫非常精準的指令。 不是「把鏡頭做得更好」,而是「孩子轉身時,鏡頭必須快速跟到背後;只能用單指拖曳轉動視角,而且不能縮放;大多數玩家不是遊戲玩家。」結果發現,有技術寫作背景在這裡根本是超能力。
  • 設定規則。 不准出現真實品牌。任何大人都不能對小孩有敵意。絕不能把孩子描繪成在做重體力勞動。沒經過我說「推上線」,什麼都不能發布。
  • 像真正產品一樣管理發版。 每次變更都要有預覽連結、版本號、可回滾方案、用安全登入鎖住的統計儀表板,重大更新前還要先找 beta 測試者。
  • 像我的人生全靠它一樣測試。 在我的手機上、不同瀏覽器裡、不同 App 內、直拿和橫拿都測。
  • 要求證據。 這點我吃過虧後才學到。「完成了」和「完成且已驗證」不是同一件事。所以我開始要求每個修正都要有截圖和螢幕錄影,外加一張誠實表格,列出哪些已驗證、哪些未驗證、哪些是隱藏的。

那感覺很像同時在當產品經理、遊戲設計師、QA 測試員、作家,還有一個非常嚴格的奈及利亞阿姨。

在伊雅・托因的桌子前買麵包

上線那晚:我們把免費額度炸掉了 🎉

我把遊戲發到 X 上,開心地去睡覺,醒來後發現我的統計儀表板報錯了。

https://x.com/__deb_by/status/2114057303460913562

原因是?真的有人在玩,而且第一天我就碰到主機商免費方案的 每天 1,000 次資料庫寫入上限。每次開局、每次投票、每一筆回饋都算一次寫入。我後來升級到 5 美元方案,把儀表板改成只讀不寫,並把計數改成批次處理。

煩不煩?煩。
但上線第一天就遇到這種問題,是不是一種好問題?也是。🥹

那個藏在眼前的 bug

上線幾天後,有玩家傳訊息給我:遊戲卡在 「把手機橫過來玩」 的畫面。即使他把手機轉過去了也一樣。從上線開始就這樣。

卡在 App 內瀏覽器的旋轉畫面

更瘋的是:我自己也看過這個畫面。 我從 X 打開自己的連結,看到同樣的畫面,點了「用瀏覽器開啟」,然後就繼續了。我真的以為只是我的手機有問題。

不是我的手機。是所有人。

當你在 X、TikTok、Instagram 或 WhatsApp 裡點連結時,它不會開啟 Safari 或 Chrome。它會開在 App 自己的迷你瀏覽器裡。很多這種瀏覽器根本不會旋轉,或者會旋轉,但不會把這件事告訴頁面。我的遊戲一直耐心等待「手機現在已經橫過來了」的訊號,但那個訊號根本不會來。所以玩家就卡在門口。

我的儀表板其實也一直在提醒我。標題畫面有 188 次跳出。有人來了、卡住了,然後一聲不吭地離開。

這件事讓我記住兩件永遠不會忘的事:

  1. 如果你遇到奇怪問題後自己繞過去了,玩家也會遇到同樣問題,而且大多數人不知道怎麼繞。 你那些小小的解法,其實是線索。
  2. 大多數玩家不會回報 bug,他們只會離開。 每一個會傳訊息給你的人,背後都要假設還有很多人默默把分頁關掉了。

快速修法是:不要等旋轉事件,而是每半秒檢查一次螢幕的寬高。真正的修法更大:把遊戲重做成直向遊玩。如果遊戲拿著手機正常直立就能玩,那 App 內瀏覽器怎麼搞都無所謂。

以前,手機直拿時遊戲會被壓扁:

舊版在直立手機上被壓扁的畫面

手機優先重做之後:

新版直向版:選擇孩子

玩家(和資料)告訴了我什麼

第一週:140 次開局、40 位新玩家,這還不算上線當天的大部分時間,因為那時候我的統計系統自己先壞掉了 😅。也不包括那些因為橫向 bug 而卡在標題畫面過不去的人。但在有成功玩到的人裡,只有 31% 完成第一個跑腿任務,只有 2 局完整跑完了一整天的差事。

第一週的後台統計

很痛。但這種痛很有用。把這些資料跟回饋放在一起看,輪廓就很清楚了:

  • 「對話太慢了。」
  • 「我卡在麵包攤桌子後面,只好退出遊戲。」
  • 「我弄丟錢又找回來之後,只能回家,但時間快不夠了。」
  • 「體力消耗太快了。」

其中有些不只是煩,而是會卡死進度的障礙。如果你卡在桌子後面出不來,你不會去送回饋。你會直接把分頁關掉。

玩家投票與回饋

而當我自己在手機上坐下來玩了一個小時後,我又發現更多問題:

  • 店家在我還沒買任何東西前就先說了「thank you, go well」
  • 司機在我站在桌子前、甚至根本不在路上時,連著對我喊了三句不同的台詞
  • 一隻山羊直接穿過水溝牆 🐐
  • 朋友邀請我玩警察抓小偷,說了「走啊!」……然後大家就站在原地不動了
  • 足球被踢到了下水道格柵上
  • 時間到了之後,系統又叫我做完全相同的差事,連清單和店家都一模一樣。這點很傷,因為這個遊戲的核心就是:每次差事都應該有不同感覺

所以我替自己訂了幾條規則,之後也會套用到任何產品上:

  • 畫面上一次只能有一則訊息。 永遠如此。
  • 每張卡片最多大約 12 個字。 如果他們得閱讀,就不會玩。
  • 任何彈窗都不能大於螢幕的約 60%。
  • 玩家絕對不能被卡住、搞糊塗,或感到負擔過重。 一秒都不行。

跟朋友踢足球

更新內容:分享你最好笑的瞬間

最新更新可以直向遊玩、從任何 App 都能正常開啟、鏡頭跟隨更順、司機也有自己的(而且超戲劇化的)配音,還能把你最搞笑的瞬間存成短片:Bingo 追你、差點被摩托計程車撞上、回家太晚面對媽媽……

差點被摩托計程車撞上

……然後直接分享到 WhatsApp、TikTok 或 X。

分享瞬間畫面

我學到的事

如果你只記得這篇文章的一件事,那就是:

  1. 在使用者真的出沒的地方測試。 不是在筆電上,而是在手機上,從大家會分享你連結的那些 App 裡面測。
  2. 你的儀表板就是沉默使用者在說話。 跳出率和流失率就是回饋,要像讀訊息一樣讀它們。
  3. 如果你自己都覺得怪,那對他們來說就是壞掉了。 我自己繞過一個 bug,還以為只是我個人問題。你那些小小的繞路法,對玩家來說就是死路。
  4. 和 AI 一起工作是一種技能。 要夠具體、訂規則、並要求證據。「它說完成了」不算測試。
  5. 永遠不要上線你自己沒碰過的東西。 每次都要有預覽連結、在我自己手機上快速玩一次,以及可立即回滾。就那一次我趕著上線,結果正式版出了個壓扁的遊戲。
  6. 先推出,再傾聽。 我在一週真實玩家的回饋裡,找到的東西比我自己單獨開發好幾週還多。上線幾天後才發現大 bug,不是失敗;這正是 MVP 的用途。
  7. 讓它有個人感。 玩家最喜歡的從來不是技術本身,而是 Bingo、「Up NEPA!」,還有媽媽成績單上的那些台詞。

接下來呢

玩家可以投票決定遊戲下一步要做什麼,而 「Up NEPA!」 目前以 60% 的票數領先。💡 所以沒錯,接下來會有重新來電的時刻。我的清單上還有:更多跑腿類型、更多朋友遊戲(等我把跳格子做對,suwe 會回來),以及更多可以收集的記憶。

這幾週真的很忙,所以在下一次更新前,我先休息一下。不過遊戲已經上線,而且可以免費玩。

👉🏾 玩 Pikin Days: pikindays.com

也在留言告訴我:你童年跑腿時,最讓你懷念的事情是什麼? 我的是走回家的路上,把找零數三次,祈禱店家沒有坑我。😅


原文出處:https://dev.to/deborahemeni1/i-built-a-3d-game-about-my-nigerian-childhood-and-im-not-a-game-developer-281g


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
boluoji
📝17   💬3   ❤️6
351
🥈
站長阿川
📝5   💬2   ❤️1
213
🥉
mike
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登