Skip to content
View amalex0610's full-sized avatar

Block or report amalex0610

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
amalex0610/README.md

🎱 AR 撞球大師 (AR 8-Ball Master)

免下載 App!開啟手機鏡頭即可在實體書桌上大展身手的 WebAR 撞球遊戲。
支援 AI 手勢握桿推擊、精確 2.5D 連續碰撞物理、美式 8 號球正規規則 與 iPhone XR 極致流暢抗卡頓優化!


🌟 核心特色

  1. 實景 AR 書桌撞球 (Passthrough WebAR)

    • 透過後置鏡頭將迷你球桌自然融合在您的書桌、茶几或客廳地板上。
    • 內建 3D 空間調校面板:支援等比縮放(0.25x ~ 1.5x)、高低升降、視角仰角、距離與 360° 水平旋轉。
  2. 🖐️ AI 手勢握桿與推擊體感 (MediaPipe Hands)

    • 瞄準:鏡頭前移動手掌,虛擬球桿即時跟隨手腕至食指方向旋轉對準母球。
    • 握桿蓄力:捏合大拇指與食指(👌)鎖定瞄準,向後拉手掌累積擊球力道(0% ~ 100%)。
    • 推擊出桿:向前推桿或鬆開手指(STRIKE!!),精確將動量傳遞給母球!
    • 觸控雙模相容:若不想舉手,亦可隨時使用畫面底部的「瞄準角度滑桿」與「蓄力推桿條」單指流暢遊玩。
  3. 🎯 雙重輔助瞄準系統

    • 母球運動路徑虛線:清晰指示母球前進方向。
    • 幽靈預測球 (Ghost Ball):自動計算第一顆碰撞子球的接觸點,輔助精確走位與角度切球。
  4. 🎱 正規美式 8 號球規則引擎

    • 標準 16 顆球(1 顆母球、17 號全色球、8 號決勝黑球、915 號花球條紋)。
    • 標準三角架開球排列(8 號球置於第三排正中央,頂球置於腳點)。
    • 完整規則判定:
      • 開球局(Break shot)選定花色(Solid vs Stripe)。
      • 合法擊球與犯規檢驗(先碰自身球、空桿、白球洗袋)。
      • 犯規自由球(Ball in Hand):可直接在檯面上觸控拖曳母球至任意合法位置擺放!
      • 決勝黑 8 規則:清台後打進黑 8 獲勝;違規進黑 8 或黑 8 洗袋直接判負!
    • 雙人同機輪流對戰(Pass & Play)。
  5. 🔊 Procedural Web Audio 物理合成音效

    • 零外部音效檔下載、零記憶體垃圾回收負載。
    • 動態球球相撞清脆撞擊聲(音量與音高依碰撞速度動態調節)、庫邊鈍擊聲、球桿擊球聲與球袋沉底聲。

⚡ iPhone XR 專屬流暢抗發燙優化 (Performance Engineering)

針對舊款 iOS 設備(如搭載 A12 仿生晶片、3GB RAM 的 iPhone XR)容易因 WebGL 與 AI 重負載導致發燙降頻、掉幀卡頓的問題,本專案實施了關鍵架構優化:

優化項目 實作策略 效益
MediaPipe 輕量化 採用 modelComplexity: 0 (Lite),並將攝影機推論尺寸限制為 480x360 大幅降低 A12 神經網絡推論功耗,杜絕過熱
AI 推論節流管線 影像推論限制在 ~22 FPS,主畫面 Three.js 以 Lerp 線性插值運行在 60 FPS 手勢動作絲滑流暢,同時降低 60% CPU 負載
視網膜渲染限幅 renderer.setPixelRatio(Math.min(window.devicePixelRatio, 1.5)) 避免 iOS Safari 在 2x/3x Retina 螢幕產生龐大像素填充率負載
高頻連續碰撞 (CCD) 自研 2.5D 連續碰撞物理引擎(每幀 4 次子步更新)替代沈重 3D 物理庫 徹底杜絕高速穿球/穿邊問題,且運行期間 0 物件記憶體分配(Zero GC)
程序化動態紋理 球體貼圖於啟動時由 Canvas 一次性繪製生成(包含 Aramith 紅點與條紋) 啟動秒開、零網路等待、免加載外部貼圖資源

🚀 快速開始

方式 1:本地測試 (Local Dev)

  1. 點擊執行目錄下的 start.bat,或在終端機執行:
    python serve.py
  2. 在電腦瀏覽器開啟 http://localhost:8080 即可測試。
  3. 若要使用 iPhone XR 實機測試相機:
    • 由於 iOS Safari 安全規範,相機權限(getUserMedia)必須在 HTTPS 或 GitHub Pages 環境下運作。
    • 推薦使用 ngrok 或 localtunnel 建立快速安全通道:
      npx localtunnel --port 8080
      將產生的 https://... 網址在 iPhone XR 的 Safari 中開啟即可!

方式 2:GitHub Pages 線上發布 (一鍵秒開)

專案已內建 .github/workflows/deploy.yml 自動部署腳本:

  1. 將本專案推送至 GitHub 儲存庫(Repository)。
  2. 至儲存庫 Settings -> Pages,將 Source 設為 GitHub Actions。
  3. 推送後即會自動構建,產生的 https://<你的帳號>.github.io/<專案名>/ 網址即可直接在任何手機上開箱遊玩!

🎮 操作指南

  • AR 校準:點擊右上角 📐 開啟調校面板,調整「縮放大小」與「高度」讓球桌穩固貼合桌子。
  • 鏡頭翻轉:點擊右上角 📷 可切換後置/前置鏡頭。
  • 瞄準調整:
    • AI 模式:鏡頭前移動手掌,球桿會自動跟隨手勢角度旋轉。
    • 觸控模式:滑動底部「瞄準角度滑桿」。
  • 擊球蓄力:
    • AI 模式:大拇指與食指捏合(👌)後向後拉手累積力道,向前推桿或放開手指即出桿!
    • 觸控模式:手指在底部「蓄力槽」滑動選擇力量,點擊「擊球」按鈕。
  • 自由球(Ball in Hand):對手犯規時,直接在畫面上按住白球拖曳至合適位置即可重新開球!

Popular repositories Loading

  1. midnight-er midnight-er Public

    🩺《急診當值:深更半夜》專為實況開台設計的黑色幽默急診診療遊戲!超大字體、防背題隨機選項、死魚眼語音無情開噴。

    HTML

  2. amalex0610 amalex0610 Public

    HTML

  3. taiwan-stock-streamer-game taiwan-stock-streamer-game Public

    🥬 圖奇實況專用互動小遊戲:化身百萬少年股神,在台股修羅場中體驗極速破防與破產斷頭!

    HTML

  4. absurd-detective-game absurd-detective-game Public

    專為 Twitch / YouTube 實況主與觀眾量身打造的爆笑互動式四格漫畫推理解謎遊戲!看似嚴肅緊張的重大刑案,真相卻蠢到讓全場聊天室笑到噴飯。

    HTML

  5. baldy-vs-zombies baldy-vs-zombies Public

    光頭大戰殭屍:強制理髮 - 結合實況彈幕吐槽與節奏打擊的趣味網頁小遊戲

    HTML

  6. hageng-anti-tilt-battle hageng-anti-tilt-battle Public

    💥《哈耿的抗破防大作戰》- 以 Twitch 實況主「哈耿」為主角的抗破防節奏反應網頁遊戲!雙鍵防禦黑粉釣魚、營業甜笑吸收人氣,支援手機/電腦全平台與自訂表情包、語音!🎮 Pure HTML5/Canvas/Web Audio API.

    HTML