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
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Hexfrontier — 3Dで遊ぶヘックスの島の開拓ゲーム Vanilla JavaScript + Three.js で 1 から作った、ブラウザで動く六角タイルの開拓ゲーム。 CPU 相手の 1 人プレイでも、合言葉を共有した友達とのオンライン対戦でも遊べる。 ルールは基本・都市と騎士・漁師たち・航海者たちと、 オリジナルのドラゴンの島の5種類。 ビルド工程なし・依存はベンダリング済みの Three.js のみ。 ▶ 今すぐ遊ぶ: https://junia2009.github.io/hexfrontier/ (スマホ推奨。PWA なのでホーム画面に追加すればアプリのように起動できる) いわゆる標準カタン。開拓地と都市を建て、道を伸ばし、サイコロの出目で資源を集めて 銀行交易・港交易・プレイヤー間交易で回す。発展カード(騎士・街道建設・収穫・独占・勝利点)、 最長交易路、最大騎士力もすべて実装。まずはここから。 公式拡張「Cities & Knights」の主要システムを一通り実装した本命モード。README 전문 보기 ↗
Vanilla JavaScript + Three.js で 1 から作った、ブラウザで動く六角タイルの開拓ゲーム。 CPU 相手の 1 人プレイでも、合言葉を共有した友達とのオンライン対戦でも遊べる。 ルールは基本・都市と騎士・漁師たち・航海者たちと、 オリジナルのドラゴンの島の5種類。 ビルド工程なし・依存はベンダリング済みの Three.js のみ。
▶ 今すぐ遊ぶ: https://junia2009.github.io/hexfrontier/ (スマホ推奨。PWA なのでホーム画面に追加すればアプリのように起動できる)
| タイトル | 都市と騎士(昼) | 夜 | 🐉 ドラゴンの島 |
|---|---|---|---|
いわゆる標準カタン。開拓地と都市を建て、道を伸ばし、サイコロの出目で資源を集めて 銀行交易・港交易・プレイヤー間交易で回す。発展カード(騎士・街道建設・収穫・独占・勝利点)、 最長交易路、最大騎士力もすべて実装。まずはここから。
公式拡張「Cities & Knights」の主要システムを一通り実装した本命モード。
盗賊の代わりにドラゴンが島に棲むオリジナルルール。
公式の小拡張「Fishermen of Catan」。基本ルールに魚という第2の通貨が加わる。
公式拡張「Seafarers」。盤が広がり、海と船が入る。
ルールの正確な仕様と公式から簡略化した点は docs/RULES.md に明記。 アプリ内でも「📖 あそびかた」からいつでも読める。
対戦で使う島の上を棒人間で歩き回れるモード。島ごとに遊びが乗っている。
import しているので、ルール実装はクライアントと共通の1つだけ?seed=123)。同じシードは同じゲームになり、
バグ報告・テスト・リプレイに使える。ダイスの公正性は χ² 検定で統計監査済みES Modules を使っているため、ローカルサーバー経由で開く:
npm run serve # または python3 -m http.server 8000
# → http://localhost:8000/ を開く
インストールもビルドも不要(npm install すら要らない)。
オンライン対戦も試す場合は、別ターミナルでサーバーを立てる:
npm install # wrangler(開発用)を入れる
npm run server # http://127.0.0.1:8787
localhost で開いたページは自動でこのローカルサーバーを見る。
npm test # 単体テスト + セルフプレイ検証(Node のみ、ブラウザ不要)
npm run selfplay # CPU 4体の自動対戦ゲート(node scripts/selfplay.js 1000 等)
node scripts/dice-audit.mjs # ダイス乱数の統計監査(χ²検定バッテリー)
ルールエンジンは DOM に依存しない純粋関数の集まりなので、Node だけで全ルールが検証できる。 最重要の不変条件は保存則(銀行+全手札 = 資源19×5・商品12×3)と、 セルフプレイ数百ゲームの完走。
main に push すると GitHub Actions がテストを通してから GitHub Pages にデプロイする
(.github/workflows/pages.yml)静的サイトとは別に、一度だけ Cloudflare へ配置する(無料枠で動く)。 GitHub Actions 経由なら、ブラウザだけで設定できる(PCがなくても可):
Settings → Secrets and variables → Actions に登録する
CLOUDFLARE_API_TOKEN … 1 で作ったトークンCLOUDFLARE_ACCOUNT_ID … Cloudflare のアカウントIDActions → Deploy game server → Run workflow を実行する以降は server/ や src/ を変更して main に push すると自動でデプロイされる
(ルールエンジンはサーバーも同じコードを取り込むため、ルール変更時も再デプロイが要る)。
手元にPCがある場合は以下でもよい:
npx wrangler login # ブラウザで Cloudflare アカウントを認証
npm run deploy:server
デプロイ後に出た URL を src/net/client.js の DEFAULT_SERVER に設定する。
アプリの「🌐 オンライン対戦」画面でも、接続に失敗したときに接続先を変更・保存できる。
index.html # 単一ページ(CSS込み)。importmap で three をベンダー読込
sw.js # Service Worker(ネットワーク優先 + install 時にプリキャッシュ)
src/
├── main.js # 起動・画面フロー・入力モード・CPU駆動・演出
├── state.js # GameState 定義(JSON化可能な単一オブジェクト)・モード一覧
├── actions.js # 全アクションの validate / apply(dispatch の一本道)
├── rng.js # シード制御の疑似乱数(mulberry32系)
├── rules/ # ルールエンジン(純粋関数、canvas 非依存)
│ ├── board.js build.js dice.js robber.js trade.js victory.js road-building.js
│ ├── cak/ # 都市と騎士(騎士・蛮族・都市改良・進歩カード54枚)
│ ├── dragon.js # ドラゴンの島(暴走・炎上・見張り塔・財宝)
│ ├── fish.js # 漁師たち(湖・漁場・魚の使い道・古い靴)
│ └── sea.js # 航海者たち(船・海賊・金鉱・新しい島)
├── ai/ # CPU(合法手列挙・評価関数・思考・カード別プラグイン)
├── render/ # 2D Canvas 描画 + DOM HUD + あそびかた・戦績・店の画面
├── render3d/board3d.js # Three.js レンダラー(海・空・地形・コマ・演出)
├── demo/ # あそびかたデモ(台本と再生エンジン)
├── minigame/ # 島を歩く(棒人間・釣り・射的・丸太乗り・大富豪・飾り・集まり)
├── net/client.js # オンライン対戦(WebSocket・再接続)
├── audio/ # ジェネレーティブBGM・効果音・足音・水の音(Web Audio)
├── progress.js achievements.js # 戦績・実績・称号
└── rewards.js shop.js quests.js market.js gear.js # 銀貨・店・掲示板・魚の相場・盤まわり
server/ # オンライン対戦サーバー(Cloudflare Workers)
├── room-core.js # 部屋のロジック(席・伏せ処理・肩代わり。テスト可能)
├── room-do.js # Durable Object(合言葉ごとに1部屋)
├── walk-relay.js # 散策部屋の位置の中継
└── index.js # Worker(合言葉の発行と振り分け)
test/ # node --test(1100本超: ルール・統計・セルフプレイ・部屋・ミニゲーム)
scripts/ # セルフプレイゲート・乱数監査・故障注入・プリキャッシュ生成
vendor/ # Three.js(MIT)
| フェーズ | 内容 | 検証 |
|---|---|---|
| Phase 1 | 基本カタン + 貪欲法CPU | セルフプレイ1000ゲーム |
| Phase 2 | 都市と騎士の盤面要素(商品・騎士・蛮族・都市改良) | セルフプレイ300ゲーム |
| Phase 3 | 進歩カード全54枚 + カード別CPU判断 + 難易度 | セルフプレイ300ゲーム |
| 独自拡張 | 🐉 ドラゴンの島 / プレイヤー間交易 / BGM / 海・空・島の描画強化 | 各機能ごとにE2E+セルフプレイ |
| オンライン | 合言葉で最大4人の対戦(サーバー権威型・切断復帰) | 部屋ロジックの単体テスト+ブラウザ2つのE2E |
| 公式拡張 | 🐟 漁師たち / ⛵ 航海者たち | セルフプレイ+盤面の回帰ハッシュ |
| やりこみ | 戦績・実績・称号 / 島の銀貨と店 / 掲示板 / 盤まわりの着せ替え | 実績の全件走査テスト+E2E |
| 島を歩く | 棒人間の散策・釣り・射的・丸太乗り・大富豪・集まり(大会) | 進行を純粋関数に分けて単体テスト+E2E |
| あそびかた | 実物を動かす自動再生デモ33本 | 台本が本物の手を出しているかをテストで検査 |
公開マッチメイキング・ランキング / 上記以外の公式拡張(「商人と蛮族」など) / アカウント登録