Polestar
Polestar는 무료 오픈소스 월드오브워크래프트 레벨링 가이드 애드온으로, 인게임 화살표와 1~60 레벨 경로, 직업 퀘스트를 제공한다
The Shovel Toss Game
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A mobile-first 2D arcade timing game. Hold to charge a power meter, release to launch a shovel into the pit.
No build step required — it's a single HTML file.
Option 1 — Python (built-in, recommended)
python3 -m http.server 8000
Then open http://localhost:8000 in your browser.
Option 2 — Node serve (via npm)
npm install
npm run dev
Option 3 — VS Code Live Server
Right-click index.html → Open with Live Server.
192.168.1.x).http://192.168.1.x:3000 for npm run dev, port 8000 for Python).localStorage, used for the global leaderboard).1v1 Toss-Off, Play Game, Leaderboard, Hall of Fame, Player Stats, or What's New. Tap the username to edit it.NEW / LADIES / CHAMPS filters to narrow the roster, or flip a card to preview that character's top-5 scores.STICK.MISS costs one life. The run ends when all three are gone.| Result | Points | Condition |
|---|---|---|
STICK | +3 | Released inside the sweet spot, landed in the pit |
BACK_WALL | +1 | Landed in the back 10% of the pit |
IN_PIT | 0 | Landed in the pit (no bonus) |
FRONT_WALL | +1 | Landed in the front 10% of the pit |
MISS | -2 | Landed outside the pit (costs a life) |
Each STICK increases meter speed for the rest of the run, tightening the timing window.
Global scores use Supabase. Run supabase/migrations/20260428000000_create_high_scores.sql in the Supabase SQL editor, then set the project URL and anon key in src/config.js. If the table already exists, run the SQL again to add character_name:
export const SUPABASE_URL = 'https://YOUR_PROJECT.supabase.co';
export const SUPABASE_ANON_KEY = 'YOUR_ANON_KEY';
The game imports @supabase/supabase-js from https://esm.sh/@supabase/supabase-js@2, so no bundler is required. If config is missing or the request fails, the global status shows offline. The current global #1 gets a crown badge next to their HUD name. The leaderboard screen defaults to Today (since local midnight) and toggles to All Time; it can also be filtered by character.
The Supabase anon key in src/config.js is intentionally public for this browser app. Access is gated by row-level security and database constraints in the migration.
The weekly keep-alive workflow in .github/workflows/supabase-keepalive.yml fetches one score every Monday. Add repository secrets named SUPABASE_URL and SUPABASE_ANON_KEY.
Async multiplayer over Supabase. From the home screen, tap 1v1 Toss-Off to challenge another player to a 9-throw match on a chosen level and character. The opponent's run is played when they next open the game; the result lands back on your side via polling (every 30 s). Match writes work locally; only high_scores submissions are production-only.
| Action | Input |
|---|---|
| Charge meter | Touch hold / Mouse hold |
| Release throw | Touch release / Mouse release |