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분 만에 확인하기プロンプト 1 行からブラウザで遊べる 2D ゲームを生成し、作品を改造(フォーク)して公開し合う UGC コミュニティ。Go(Ebitengine)→ WebAssembly、Cloudflare Pages + AWS Lambda / Bedrock 構成。
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
プロンプト 1 行から、ブラウザで遊べる 2D ゲームを生成します。生まれた作品を他の人が改造(フォーク)して公開し合う、UGC コミュニティのリポジトリです。 • 公開形態: 招待制のクローズドβです。プレイと URL の共有は誰でもでき、生成は招待コードを持つ人だけができます。 • ホスト: アプリ本体の app.game-forge.ojos.jp、利用者が作った作品を配信する sandbox.game-forge.ojos.jp、運営の管理画面の admin.game-forge.ojos.jp の 3 つです。 この README は入口です。仕様・手順・進み具合は下の文書が正本なので、ここへは書き写しません。 画面と API は Cloudflare Pages Functions で動きます。生成には Cloudflare の待ち時間の上限を超える時間がかかるため、生成の実行は AWS Lambda へ出しています(理由は docs/orchestrator.md の冒頭)。作品は Go(Ebitengine)のソースとして生成し、隔離したビルド関数で WebAssembly にしてからサンドボックスのホストで配信します。 部品ごとの正本は次のとおりです。README 전문 보기 ↗
プロンプト 1 行から、ブラウザで遊べる 2D ゲームを生成します。生まれた作品を他の人が改造(フォーク)して公開し合う、UGC コミュニティのリポジトリです。
app.game-forge.ojos.jp、利用者が作った作品を配信する sandbox.game-forge.ojos.jp、運営の管理画面の admin.game-forge.ojos.jp の 3 つです。この README は入口です。仕様・手順・進み具合は下の文書が正本なので、ここへは書き写しません。
| 知りたいこと | 文書 |
|---|---|
| いまどこまで進んでいて、次に何をするか | docs/handoff.md |
| 何を作るか(仕様と、決定の経緯) | docs/product-spec.md |
| 作業の分解(マイルストーンと issue) | docs/mvp-roadmap.md |
| 手元で動かす・検証する | docs/local-dev.md |
| AI エージェントの運用ルール | 実行環境ごとの入口(Claude Code は CLAUDE.md、GitHub Copilot は .github/copilot-instructions.md)→ .github/project-ai-rules.md → .ai-playbook/shared-ai-rules.md |
画面と API は Cloudflare Pages Functions で動きます。生成には Cloudflare の待ち時間の上限を超える時間がかかるため、生成の実行は AWS Lambda へ出しています(理由は docs/orchestrator.md の冒頭)。作品は Go(Ebitengine)のソースとして生成し、隔離したビルド関数で WebAssembly にしてからサンドボックスのホストで配信します。
flowchart LR
browser[ブラウザ]
subgraph cf[Cloudflare]
pages[Pages Functions<br>app / sandbox / admin]
likes[Worker game-forge-likes<br>Durable Objects]
d1[(D1)]
r2[(R2)]
end
subgraph aws[AWS]
orch[オーケストレータ<br>Lambda]
bedrock[Amazon Bedrock]
build[ビルド関数<br>Go → wasm]
ogp[OGP 撮影<br>Lambda]
avatar[アイコン変換<br>Lambda]
end
browser --> pages
pages --> d1
pages --> r2
pages --> likes
pages -->|生成ジョブを投げる| orch
orch --> bedrock
orch --> build
build --> r2
orch -->|結果のコールバック| pages
pages --> ogp
pages --> avatar
部品ごとの正本は次のとおりです。
運営が回す手順は、削除依頼の対応が docs/takedown.md、集計が docs/usage-report.md、撤退条件の判定が docs/retreat-review.md にあります。当面の方針(何に時間を使うか)は docs/strategy.md にあります。
クラウドの開発環境は持たず、クラウドにあるのは本番だけです。開発は手元で行います。前提(Node.js 22 以上・Docker・Go・OpenSSL)は devcontainer にすべて入っています。
npm ci # 依存と、wrangler.toml から作る型定義(worker-configuration.d.ts)
cp .dev.vars.example .dev.vars # アプリが読む値はここへ置く
npm run db:migrate # migrations/ をローカルの D1 へ当てる(冪等)
npm run dev # https://game-forge.localtest.me:8787/
.dev.vars です。.env ではありません。 .env は開発ツール(gh など)向けで、アプリへ流れ込まないよう各 script で止めてあります。npm run dev が自己署名で作るため、ブラウザは初回に警告を出します。SESSION_SECRET・Google OAuth のクライアント・招待コードが要ります(docs/local-dev.md の 3 章「ログインを試す」)。wrangler pages dev から生成を投げると本番のオーケストレータが動きます。手元で確かめられないものの一覧は docs/local-dev.md の 5 章、オーケストレータについては docs/orchestrator.md の「まだ決まっていないこと」にあります。bash scripts/verify.sh # ローカル層の受け入れ条件(機密の検査・文書の検査・テスト・型)。VERIFY_PASS で合格
bash scripts/loop-gate.sh # push / PR 作成の前の単一入口。verify と、第二意見のレビュー(別ベンダーのモデル。無ければ飛ばす)を直列で通す
npm test・npm run typecheck は単体でも回せます。実ブラウザや Docker を要する重い検査と、それぞれが何を確かめるかは docs/local-dev.md の 4 章にあります。宣言と実際の外部状態の一致は scripts/acceptance-remote.sh が確かめます。外部状態の宣言を変えたときに通します。
main へのマージで GitHub Actions が本番へ出します(.github/workflows/deploy.yml)。検証が緑のときだけ走ります。そのコミットがもう main の先頭でなければ配らず、後のコミットの配備に任せます。本番の D1 に未適用のマイグレーションがある場合と、そのコミットでオーケストレータの束が変わったのに配備済みの関数が手元の束と一致しない場合は、配備の段で失敗して止まります(束が変わらないコミットでは、オーケストレータを見ません)。/terms)が定めます。bash scripts/loop-gate.sh で、別ベンダーのモデルによる第二意見を通します。同じリポジトリのブランチから出した PR では、その head に第二意見の記録が付いていることを second-opinion-gate.yml が確かめます。fork からの PR は対象になりません。リモートのコードレビュー(GitHub Copilot)は置いていません(#807)。コミットの作者は identity-guard.yml が許可リストと照合します。| ゲームのビルド | docker/isolated-build/・src/build-client.ts | terraform/build-function.tf・terraform/github-oidc.tf | docs/build-function.md・docs/build-invocation.md |
| OGP 画像 | docker/ogp-shot/ | terraform/ogp-function.tf | docs/ogp-capture.md |
| アイコン画像 | lambda/avatar-encode/ | terraform/avatar-function.tf | scripts/deploy-avatar.sh(背景は宣言の冒頭コメント) |
| Google ログイン | src/auth/ | terraform/gcp.tf | docs/gcp-oauth-setup.md |
| 手元の機械(dev01)の口 | — | terraform/tunnel-dev01.tf・terraform/zero-trust.tf | docs/local-llm-tunnel.md |
| メール(Resend) | src/mail/ | — | — |
| ロゴ | tools/logobake/ | — | docs/logo.md |