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
Sala multiplayer para rolar dados do Daggerheart com animação e cálculo automático
Translation pending
AI summary · README
GamesJavaScript · CSSGitHub @SarmunsOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
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:Read the full 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.