ARCADE ▶ GUAVA CATCH

芭樂接接樂

夜晚的芭樂樹開始掉果實了!移動籃子接住芭樂,小心別接到蟲。越接越快,你能撐多久?

  • ← → 或 A D 移動
  • 手機:按住畫面左右拖曳
  • 空白鍵/點擊:開始

玩法說明

芭樂樹上的果實會不斷掉下來,移動籃子把它們接住:

掉下來的東西 接到 沒接到
芭樂 +1 分 扣 1 顆愛心
黃金芭樂(稀有) +5 分 扣 1 顆愛心
蟲 扣 1 顆愛心 沒事,讓它掉
  • 一開始有 3 顆愛心,用完就結束。
  • 連續接到 10 顆會觸發 COMBO,額外加 3 分。
  • 分數越高,掉落速度越快、蟲也越多。
  • 最高分會記錄在你的瀏覽器裡。

開發筆記

為什麼選這個題材

網站叫 GUAVAMAX,第一款遊戲當然要跟芭樂有關。「接東西」是最經典的街機玩法之一,規則一看就懂、一隻手指就能玩,很適合當遊戲廳的第一台機台。

解析度與像素感

畫面內部解析度只有 192 × 160 像素,大約是掌上型遊戲機的尺寸,再用 CSS 放大到螢幕寬度。重點是這一行:

image-rendering: pixelated;

它告訴瀏覽器放大時不要做平滑處理,每個像素才會維持方正、銳利,不會糊成一片。繪圖時也一律把座標四捨五入成整數,避免半個像素造成的模糊。

用文字畫像素圖

所有角色都沒有用圖片檔,而是用字串陣列直接畫出來,例如芭樂是這樣:

const guava = PX.sprite([
  "...GG...",
  "..KKKK..",
  ".KDDDDK.",
  "KDPPPPDK",
  "KDPSPPDK",
  "KDPPSPDK",
  ".KDDDDK.",
  "..KKKK..",
], { G: C.lime, K: C.ink, D: C.green, P: C.pink, S: C.plum });

每個字母代表一種顏色,. 是透明。程式會先把它畫到一張離屏的小畫布上,之後每一幀直接貼上,效能很好。好處是改造型只要改文字,不用開繪圖軟體;配色採用 PICO-8 的 16 色色票,和網站整體風格一致。

固定時間步長的遊戲迴圈

不同電腦的畫面更新率不一樣,有的 60Hz、有的 120Hz。如果每畫一次就移動一次,在高更新率螢幕上遊戲會變兩倍快。

所以引擎採用固定時間步長:累積真實經過的時間,每滿 1/60 秒才更新一次遊戲邏輯,畫面則照螢幕的速度繪製。這樣不管什麼裝置,遊戲速度都一樣。切換到其他分頁時,遊戲也會自動暫停。

難度曲線

難度全部跟著分數走,用很單純的公式控制:

  • 掉落速度:基本速度加上「分數 × 1.3」,上限每秒 150 像素。
  • 掉落間隔:從約 1 秒開始,隨分數縮短到最短 0.32 秒,並加上隨機變化,避免節奏太規律。
  • 蟲的比例:從 20% 慢慢提高到 38%。

一開始很輕鬆,大約 30 分之後開始需要專心,50 分以上就很考驗反應了。

手機操作

手機上沒有方向鍵,所以加入了拖曳控制:手指按住畫面時,籃子會朝手指的位置移動,但有速度上限,避免一點就瞬間移動、讓遊戲失去挑戰性。畫布設定了 touch-action: none,拖曳時頁面才不會跟著捲動。

音效

音效同樣沒有用音檔,而是用瀏覽器內建的 Web Audio API 即時產生方波,就是紅白機時代那種「嗶嗶」聲。接到芭樂時,連擊數越高,音調會越來越高,讓連擊更有感覺。

下一步

之後可能會加入的東西:

  • 不同季節的關卡與背景
  • 會左右飄的特殊果實
  • 線上排行榜

有想法歡迎到關於頁告訴我。