Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
守燈人 The Lamplighter — 2.5D side-scrolling atmospheric adventure (Three.js, procedural visuals & audio)
Translation pending
GamesJavaScript · CSSGitHub @wkai2573OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗一段提著燈、穿越長夜的 2.5D 橫向冒險。
世界沉入長夜,燈塔熄滅,暗影從海上來。你是最後一個守燈人:沿途點亮石燈,收集螢火補充燈油,躲過或驅散暗影,最後走到海崖上點亮燈塔、迎來黎明。
全程約 10~15 分鐘,共五章:林緣、沉村、斷橋、螢窟、燈塔。
線上遊玩:https://hub.ouo1.workers.dev/lamplighter/(建議用桌面版 Chrome 或 Edge)
| 按鍵 | 動作 |
|---|---|
A D / ← → | 移動 |
空白鍵 / W | 跳躍(長按跳得更高) |
S + 空白鍵 | 從木板上落下 |
Shift / 滑鼠右鍵 | 高舉提燈:照得更遠、逼退暗影、讓晶石顯形,但燈油消耗加快 |
F / 滑鼠左鍵 | 光爆:消耗燈油,燒散周圍的暗影 |
E | 點亮石燈(存檔點,補滿燈油)/長按點亮燈塔 |
Esc | 暫停、設定 |
M | 靜音 |
也支援 Xbox 配置的遊戲手把。建議戴耳機玩。
需要 Bun。
bun install
bun run dev # 開發模式:http://localhost:8000 (存檔後自動重新整理;8000 被佔用時改用 8001~8009,以終端機顯示為準)
bun run build # 輸出到 dist/
bun run preview # 預覽 dist/:http://localhost:8080
dist/ 只有三個檔案(index.html、app.js、style.css,約 780 KB),直接上傳到 itch.io 或任何靜態網站空間即可遊玩。
push 到 main 分支時,GitHub Actions(.github/workflows/deploy.yml)會自動執行 bun install --frozen-lockfile 與 bun run build,再發布至 Hub Worker 子路徑(https://hub.ouo1.workers.dev/lamplighter/)。也可以在 GitHub 的 Actions 頁面手動執行「Publish to Hub Worker」重新發布。
完整的架構、渲染管線、各系統原理與測試工具見 docs/TECHNOLOGY.md,以下是摘要。
畫面和聲音都是程式在執行時產生的,沒有任何外部圖片或音檔(字型除外,會從 Google Fonts 載入,離線時改用系統字型)。
畫面(Three.js)
聲音(Web Audio API 即時合成)
src/
main.js 啟動、主迴圈、選單
render/ 引擎、後製、天空與遠山、水、粒子、光柱、共用材質
world/ 關卡資料、地形、植被、建築物、大氣分區
game/ 遊戲流程、玩家物理、角色模型、攝影機、輸入、暗影、螢火、天氣
audio/ 音訊核心、音效、環境音、配樂
ui/ 介面
www/ index.html、style.css(開發用)
scripts/ 建置、開發伺服器、自動化測試
docs/ 技術說明
.github/workflows/ 自動部署至 Hub Worker 子路徑
screenshots/ 展示截圖
關卡是資料驅動的,改 src/world/level.js 就能調整地形、平台、石燈、螢火、暗影、旁白和大氣分區。
bun run test:bot # 用真實物理讓機器人從頭跑到尾,回報卡關或死亡位置
bun run test:chase # 模擬終章追逐戰是否逃得掉
bun scripts/tour.mjs "56,230,575,891" shot # 在指定位置截圖(需先 bun run dev)
截圖腳本透過 puppeteer-core 使用系統安裝的 Microsoft Edge。
開發時可以在網址後加參數:?skip 跳過標題畫面,?skip&x=430 直接傳送到指定位置,?q=low 指定畫質。