Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
川で石を投げて跳ねた回数を競う 3D 水切りゲーム(Next.js + TypeScript + three.js)
Loading the full README.
Read the full README ↗河原で石を選び、立ち位置・角度・力を決めて川に投げ、何回跳ねたかを競う 3D ゲームです。
lucide-react)npm install
npm run dev
http://localhost:3000 を開きます。
supabase/migrations/ の SQL を日付の古い順にすべて実行(SQL Editor または supabase db push).env.local.example を .env.local にコピーし、4 つの値を設定(Vercel では Project → Settings → Environment Variables)
NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY:ブラウザに渡る値SUPABASE_SERVICE_ROLE_KEY / SCORE_SIGNING_SECRET:サーバー専用。NEXT_PUBLIC_ を付けない。秘密の文字列は node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" などで作る設定しない場合、ランキングは「この端末」に保存されます(画面にも表示されます)。
scores への insert ポリシーなし)/api/session)が河原・天候の乱数の種を発行して署名する/api/stone-luck)へ送る。サーバーはその投げ方を確定させ、同じ物理計算で跳ねた回数を求めて保存してから、投擲の乱数の種を返す/api/scores)は、投げた瞬間に保存した結果だけを使う。送られてきた回数や投げ方は使わないので、外れた投擲を取り消して投げ方を変えて引き直すことはできないscores の表示に使う列だけが読めるsrc/game/physics.ts)app/ Next.js のページとグローバル CSS(MD3 トークン)
src/game/ ゲームロジック(ステージ・石の生成・天候・物理・地形の高さ)
src/three/ three.js の描画(地形・水面・空・植生・水しぶき・雨・カメラ)
src/components/ UI(ステージ選択・石選び・移動・角度・ゲージ・結果)
src/lib/ Supabase クライアントとスコア保存
supabase/migrations/ スコアテーブルと RLS