Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
ライブMTTのハンドを記録し、GTO Wizard 用のハンドヒストリーを書き出す
Translation pending
GamesTypeScript · JavaScriptGitHub @nobuzumiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Poker Hand Input Tool at MTT
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗ライブMTT(トーナメント)のハンドを iPhone で記録し、GTO Wizard の Hand History Analyzer が読める PokerStars 形式で書き出す PWA(Webアプリ)です。
ハンド詳細画面には、HHに載せられない ICM/バウンティ用メモ(残り人数・残り%・各スタックのBB換算・賞金構造)があり、GTO Wizard AI(ICM/PKOソルバー)に手入力する際にコピーできます。
| 項目 | 対応 |
|---|---|
| 形式 | PokerStars トーナメント形式、英語のみ |
| Hand # / Tournament # | 数値のみ(時刻+乱数で一意)。再アップロードは GTO Wizard 側で重複として無視される |
| 座席 | 1〜9(ボタンが Seat 10 だと認識されないため、10-max は非対応) |
| アンティ | 1人1行の posts the ante。BBアンティは人数で按分(端数はBBに)して出力 |
| ヒーロー | Dealt to <名前> [..] はヒーローのみ。相手のカードはショウダウンでのみ |
| PKO | ヘッダーを $賞金分+$バウンティ+$手数料 USD、座席行に , $X bounty |
| ベットサイズ | 実額を記録(GTO Wizard が最寄りの解析済みサイズに丸める) |
| 返還ベット | Uncalled bet (N) returned to ... を出力し、Total pot は回収額の合計 |
| 通貨 | ヘッダーの通貨は常に $/USD 表記(金額は入力値のまま)。GTO Wizard は検証しない |
| 9-max | GTO Wizard は 8-max ツリーで解析するため、UTG がフォールドしたハンドのみ対象 |
| マルチウェイ | ポストフロップ3人以上は GTO Wizard の解析対象外(ハンド一覧に ⚠ 表示) |
npm install
npm run dev # http://localhost:3000
npx vitest run # エンジン・エクスポーター・UIフローのテスト
npm run build
Node.js は ZIP 版(C:\Users\nobuz\tools\nodejs)を PATH に通して使います。
主要ファイル:
src/lib/engine.ts … ベッティングエンジン(手番、ブラインド/アンティ、返還ベット、サイドポット)src/lib/exporter.ts … PokerStars 形式テキスト生成、ICMメモsrc/lib/handEval.ts … 7枚役判定(ショウダウン自動判定・役名)src/lib/store.ts … localStorage ストア / src/lib/sync.ts … Supabase 同期src/app/t/[id]/setup record hand/[hid] … ハンド設定・記録・詳細画面git add -A
git commit -m "Initial commit"
# GitHub で空のリポジトリ poker-mtt-tracker を作成してから
git remote add origin https://github.com/<ユーザー名>/poker-mtt-tracker.git
git push -u origin main
https://xxx.vercel.app)を iPhone の Safari で開き、共有 → ホーム画面に追加この時点では ローカル保存のみ で全機能が使えます。
Supabase ダッシュボード → New project(リージョンは Tokyo 推奨)
SQL Editor で supabase/schema.sql の内容を貼り付けて実行(テーブル2つ + RLS)
Authentication → Providers → Email を有効化。自分専用なら Confirm email をオフ にするとメール確認なしで登録できます
Project Settings → API から Project URL と anon public キーをコピー
Vercel → プロジェクト → Settings → Environment Variables に追加して Redeploy
| Name | Value |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | https://xxxx.supabase.co |
NEXT_PUBLIC_SUPABASE_ANON_KEY | eyJ... |
アプリの右上「ローカル」→ アカウント画面でメール+パスワードを 新規登録 → 以降は起動時に自動同期
ローカル開発で同期も試す場合は .env.example を .env.local にコピーして値を入れてください。
Supabase Free プランは「直近1週間の DB 活動が不十分」だとプロジェクトを自動で一時停止します(公式の目安は「1日に数回のユーザーリクエスト」)。停止すると同期だけが失敗し(ローカル記録・エクスポートは使える)、ダッシュボードの Restore project で復帰できます。
これを防ぐため /api/keepalive(src/app/api/keepalive/route.ts)が両テーブルに複数クエリを投げ、2系統のスケジューラから呼ばれます:
| 経路 | 設定ファイル | 頻度 | 確認場所 |
|---|---|---|---|
| Vercel Cron | vercel.json | 毎日 UTC 3:00(±59分) | Vercel → プロジェクト → Settings → Cron Jobs |
| GitHub Actions | .github/workflows/keepalive.yml | 1日4回(UTC 0/6/12/18 時台) | GitHub → リポジトリ → Actions → Supabase keepalive |
CRON_SECRET を設定する場合は、同じ値を GitHub の Settings → Secrets and variables → Actions に CRON_SECRET として登録してください(未設定なら不要)。https://poker-mtt-tracker.vercel.app/api/keepalive を何度か開くか、Supabase ダッシュボードでプロジェクトを開くことです。BB: posts the ante N)を正しく解釈するかは未確認のため、按分出力を既定にしています(exportHand の bbAnteMode: 'single' で切替可能)