iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
JavaScript

一條線救一隻狗:我用 PixiJS、Matter.js 和一條有閘門的 AI 產線做完一款網頁小遊戲 系列

一款畫線物理小遊戲:畫一條線擋住蜜蜂,讓狗狗撐過十秒。這 30 天兩條線同時跑。技術那條寫實作:PixiJS 只負責畫、Matter.js 只負責算,中間那層怎麼對齊;玩家滑一下,從 pointer 事件、座標轉換、幾何抽稀到變成剛體,中間發生八件事,每件都可能出錯。AI 那條寫閘門:合約寫在哪、驗證器擋什麼、母版制怎麼讓三十幾張 SVG 像同一個人畫的、哪幾個點我刻意不自動化。主張只有一句:AI 產出的品質,取決於你設得出幾道它過不去的自動檢查。我是前端工程師不是遊戲開發者,第一次寫遊戲迴圈、第一次用物理引擎,踩到的坑照實寫。遊戲已公開可玩。

參賽天數 21 天 | 共 21 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11|Pointer Events:一套事件吃掉滑鼠、觸控與觸控筆

模組三|畫線:從手指到剛體(Day 10–15) 昨天把時間講完了:一個迴圈、兩個時鐘、一個累加器。今天回到迴圈外面——玩家的手指怎麼進到這個系統裡。 這個...

2026-08-16 ‧ 由 harryfan 分享
DAY 12

Day 12|座標轉換:手指在螢幕上的位置,不是它在遊戲裡的位置

模組三|畫線:從手指到剛體(Day 10–15) 昨天把五個 pointer 事件接上了。事件進來之後,第一件事是把 event.clientX 那個數字翻...

2026-08-17 ‧ 由 harryfan 分享
DAY 13

Day 13|畫線狀態機:`pointercancel` 是常態,不是例外

模組三|畫線:從手指到剛體(Day 10–15) 昨天把 clientX 換算成了遊戲座標。一個點有了,但一次畫線不是一個點——它是一段有開始、有結束、隨時...

2026-08-18 ‧ 由 harryfan 分享
DAY 14

Day 14|幾何抽稀:一千個點怎麼變成四十個

模組三|畫線:從手指到剛體(Day 10–15) 昨天的狀態機裡有一個叫 simplifying 的階段,它的內容是四行函式呼叫。今天把那四行拆開。 poi...

2026-08-19 ‧ 由 harryfan 分享
DAY 15

Day 15|為了躲開一種不穩定,換到了另一種不穩定

模組三|畫線:從手指到剛體(Day 10–15) 昨天的抽稀管線交出最多 64 個點。今天這些點要變成 Matter.js 世界裡「擋得住蜜蜂」的東西。 這...

2026-08-20 ‧ 由 harryfan 分享
DAY 16

Day 16|蜜蜂怎麼追人:三個向量加起來就夠了

模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 15 講完玩家畫的那條防線為什麼停不下來、以及最直覺的修法會把遊戲弄壞。今天換到線的另一邊:往線上壓...

2026-08-21 ‧ 由 harryfan 分享
DAY 17

Day 17|碰撞:我沒有關掉蜜蜂互撞,但跑起來的蜜蜂也沒有真的撞在一起

模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 16 結尾留了一個洞:src/config/game.js:37-39 有一段註解,寫著「擁擠現在交...

2026-08-22 ‧ 由 harryfan 分享
DAY 18

Day 18|卡住的蜜蜂:規劃了三級復原,實作交出兩級

模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 17 講完蜜蜂撞上防線之後會發生什麼:進 HIT 狀態 130 毫秒、轉向停手、讓 Matter 的...

2026-08-23 ‧ 由 harryfan 分享
DAY 19

Day 19|同一條線,在你的手機上也要輸

模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 10 結尾我留了一句話:模擬層我敢說穩,畫面層不敢,而「不同幀率會不會玩出不同勝負」是 Day 19...

2026-08-24 ‧ 由 harryfan 分享
DAY 20

Day 20|同一幀裡同時贏了又輸了,算誰的

模組四|蜜蜂、碰撞與勝負(Day 16–20) Day 19 講過決定性:同一個 seed、同一條線,模擬會重播出同一個結果。但這句話有個前提沒被檢查:「結...

2026-08-25 ‧ 由 harryfan 分享