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,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Duality Dice — Rolagem de Dados do Daggerheart Site multiplayer leve para rolar os dois dados do Daggerheart (Esperança/Hope e Medo/Fear) numa sala compartilhada, com animação, cor por jogador e cálculo automático do resultado (Sucesso/Falha com Esperança ou Medo, ou Crítico). • Frontend: React 19 + Vite • Estado/Realtime: Supabase (Postgres + Realtime) • Dados 3D: @gnuton/css-dice-roller Já existe um arquivo .env.local na raiz do projeto com as credenciais do Supabase (VITE_SUPABASE_URL e VITE_SUPABASE_ANON_KEY). Se precisar recriar, pegue os valores em:查看完整 README ↗
Site multiplayer leve para rolar os dois dados do Daggerheart (Esperança/Hope e Medo/Fear) numa sala compartilhada, com animação, cor por jogador e cálculo automático do resultado (Sucesso/Falha com Esperança ou Medo, ou Crítico).
npm install
Já existe um arquivo .env.local na raiz do projeto com as credenciais do
Supabase (VITE_SUPABASE_URL e VITE_SUPABASE_ANON_KEY). Se precisar recriar,
pegue os valores em:
https://supabase.com/dashboard/project/whujybpgnpiyuyjdwlzj/settings/api
VITE_SUPABASE_URL=https://whujybpgnpiyuyjdwlzj.supabase.co
VITE_SUPABASE_ANON_KEY=sb_publishable_...
A senha de acesso ao painel do Supabase é
daggerheartsupa.
npm run dev
Abre em http://localhost:5173. Para testar o multiplayer, abra a mesma URL
em duas abas/navegadores diferentes.
npm run build
Gera os arquivos finais em dist/.
npm run preview
npm run lint
src/
├── App.jsx # Roteamento simples entre as 3 telas (Home → PlayerSetup → Room)
├── components/
│ ├── Home.jsx # Tela inicial: criar sala ou entrar em sala
│ ├── PlayerSetup.jsx # Tela de identidade: nome + cores do jogador
│ ├── Room.jsx # Tela da sala: rolagem dos dados + histórico
│ ├── ColorSettingsPanel.jsx # Painel para editar nome/cores dentro da sala
│ ├── ColorSwatchPicker.jsx # Paleta de cores fixa reutilizável (jogador)
│ └── ColorInput.jsx # Input de cor customizada (hex + color picker)
├── utils/
│ ├── dice.js # Regras do jogo: rolar dados e calcular resultado
│ ├── cores.js # Paleta fixa de cores dos jogadores
│ └── codigo.js # Geração do código curto da sala
└── lib/
└── supabase.js # Cliente Supabase (usa as env vars acima)
Hope > Fear → Sucesso/Falha com EsperançaFear > Hope → Sucesso/Falha com MedoHope == Fear → CríticoA lógica fica isolada em src/utils/dice.js (rolarDados, calcularResultado,
textoResultado) — sem estado, sem UI, fácil de testar.
Rodar no SQL editor do Supabase (uma vez só):
create table rooms (
id uuid primary key default gen_random_uuid(),
codigo text unique not null,
senha_hash text not null,
criada_em timestamp default now()
);
create table rolls (
id uuid primary key default gen_random_uuid(),
room_id uuid references rooms(id) on delete cascade,
jogador text not null,
cor text not null,
dado_hope int not null,
dado_fear int not null,
resultado text not null,
criado_em timestamp default now()
);
Depois, ativar o Realtime na tabela rolls em Database > Replication.
O checklist completo de fases do projeto (o que já foi feito e o que falta)
está em claude.md.
VITE_SUPABASE_URL,
VITE_SUPABASE_ANON_KEY) no painel de deploy.