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。 以下為已儲存的摘錄。
Criador e ficha viva jogável de personagens de D&D 5e, em português, com estética cinematográfica de jogo AAA. Mobile-first, mas grandioso no desktop: partículas mágicas/brasas no fundo, brilho arcano nos cards, runas, luz volumétrica e transições suaves entre telas.檢視完整 README ↗
Criador e ficha viva jogável de personagens de D&D 5e, em português, com estética cinematográfica de jogo AAA. Mobile-first, mas grandioso no desktop: partículas mágicas/brasas no fundo, brilho arcano nos cards, runas, luz volumétrica e transições suaves entre telas.
A identidade visual foi construída a partir da referência
Ficha Viva AAA.dc.html(bundle do Claude Design): mesmas cores, tipografia (Cinzel / Chakra Petch / Inter), os dois climas — Arcano Frio e Brasa Heróica —, o sistema de partículas, os cards com inclinação 3D, o HUD em abas e o overlay cinematográfico de rolagem. O protótipo (que era estático e com dados fixos) foi evoluído para um produto real, interativo e persistente.
Um SPA completo em React + TypeScript + Vite + TailwindCSS, com Zustand
(persistido em localStorage) e Framer Motion + um canvas de partículas
próprio.
Fluxo completo:
Home) — sigilo rúnico, título e botão com pulso mágico.Login) — contas locais ou acesso imediato como convidado.CharacterSelect) — cards com CA/PV/Prof., criar, duplicar, excluir, importar.CharacterCreator) — 7 capítulos com herói iluminado, cards selecionáveis e resumo lateral:
Identidade → Origem (raça/sublinhagem) → Caminho (classe) → Atributos → Perícias → Equipamento → Despertar.CharacterSheet) — HUD em 7 abas, jogável de verdade no PC e no celular.A ficha inclui:
A engine de regras (/src/engine) é simples, tipada e expansível, com suporte a homebrew.
Requisitos: Node 18+ (testado em Node 22).
npm install # instala dependências
npm run dev # ambiente de desenvolvimento (http://localhost:5173)
npm run build # build de produção em /dist
npm run preview # serve o build localmente
npm run typecheck # checagem de tipos sem emitir
npm test # testes automatizados (engine de regras, sync, "O que eu rolo?")
npm run e2e # ponta a ponta no navegador (Playwright): criação, ficha, PDF, mesa, código, tela cheia, link
Testes de ponta a ponta (e2e/): o app sobe em modo dev apontando para um
Supabase de mentira (e2e/fixtures/supabase.ts, banco em memória + Realtime),
então nada sai da máquina. Qualquer erro de JavaScript na página reprova o teste.
Inclui acessibilidade: axe-core (WCAG 2.1 AA) em todas as telas e abas, e
teclado (pular para o conteúdo, menu com setas, foco preso nos modais).
Na primeira vez: npx playwright install chromium.
CI (.github/workflows/ci.yml): a cada push e PR roda tipos, npm test,
build e os testes de ponta a ponta; quando falha, guarda o relatório com captura
de tela e o rastro de cada passo.
Para entender o código por dentro, comece por docs/COMO-FUNCIONA.md.
src/
components/
ui/ Button, Panel/SectionLabel
layout/ AppShell, TopBar, Screen
animations/ ParticleField, BackgroundScene, RuneRing
character/ passos da criação (Identity, Race, Class, Abilities, Skills, Gear, Review) + CharacterEditModal
sheet/ SheetHeader, SheetTabs, MobileNav, TabFicha/Combate/Inventario/Magias/Descanso/Diario
dice/ DiceRoller, RollOverlay, useDiceRoller
inventory/ AddItemPicker
spells/ SpellPicker
diary/ JournalCard
pages/ Home, Login, CharacterSelect, CharacterCreator, CharacterSheet, LiveSession
features/
master/ console do mestre: MasterWorkspace, backstage/, inspector/, initiative/, quick/, masterStore
live/ PlayerWorkspace (mesa do jogador) + LiveHeader
data/ races, classes, backgrounds, skills, weapons, armors, items, spells, themes
engine/ dndRules, modifiers, dice, combat, inventory, characterBuilder, loadout,
levelUp, spellcasting, rollAdvisor ("O que eu rolo?") + __tests__
services/ Supabase: auth, sync offline, campanhas
store/ characterStore (IndexedDB), authStore, uiStore (Zustand + persist)
types/ character.ts, dnd.ts
lib/ color, useTheme, useTilt, summary
styles/ globals.css (base, keyframes, utilitários) · themes/ (uma identidade por arquivo + modos claro/escuro)
public/assets/ heroi.png, heroi-fem.png, bg.mp4
lazy(). Estilos de mesa/palco/console
(session.css, stage.css, master.css) são importados pelos componentes que os
usam, então viajam junto com o pedaço deles. Não importe esses estilos no main.tsx.m (não motion) do framer-motion; o app roda dentro de
<LazyMotion features={domAnimation} strict>. Arrastar/layout (domMax) existe
só nos toasts e é carregado quando o navegador folga./static (cache imutável de 1 ano no
vercel.json); sw.js/index.html sempre revalidam. O service worker guarda de
antemão só a casca do app; fontes e artes entram no cache na primeira vez que aparecem.useHeroArtPreload no App.tsx).preconnect para o servidor quando VITE_SUPABASE_URL
existe no build.src/data/themes.ts) passam no AA com folga; o teste
themeSync garante que os dois lados batem.useInk() de
src/lib/contrast.ts — ink(cor) mantém o tom e só ajusta a luz para o painel do
tema. Bordas e fundos continuam com a cor original.--c): use a classe .fv-tone; o CSS escurece no
claro, clareia no escuro e trata as plaquinhas escuras da Forja.src/styles/contrast.css (com o porquê).floor((valor − 10) / 2)2 + floor((nível − 1) / 4)1d20 + proficiência + atributo (acuidade/distância usam DES); dano com modificadorNão há conteúdo oficial protegido por direitos autorais — apenas estrutura genérica e dados básicos, fáceis de expandir.
Ideias trazidas do antigo dnd-companion e de projetos open source de RPG:
Confirmado: Ficha Viva AAA.dc.html foi usado como base visual e de UX. A
estética original foi preservada e evoluída para um produto completo, interativo,
cinematográfico e funcional — sem descaracterizar o design.
Dados 3D: @3d-dice/dice-box-threejs (MIT, Frank Ali; baseado nos 3D Dice de MajorVictory e Teall Dice).
Selo holográfico (src/components/ui/holo-badge.tsx, usado na Inspiração e nos
recipientes do inventário): adaptado do efeito do AwardBadge (21st.dev), sem a
marca original.
Ícones temáticos (abas, dados, forja…) de game-icons.net,
por Lorc, Delapouite e colaboradores, sob licença
CC BY 3.0. Os caminhos usados
ficam em src/components/ui/gameIcons.ts.
1d20@17). Carregados sob demanda, com as cores de cada atmosfera; liga/desliga no menu ⋯ (desligado para quem prefere menos animação). d100 e aparelhos sem WebGL usam a animação 2D.docs/SUPABASE.md./mesa/:id/jogar, para o mestre): Bastidores | Palco | Inspetor, com a faixa de iniciativa e a barra de improviso sempre à mão. Bastidores reúne Sessão, NPCs, Criaturas (bestiário), Encontro, Cenas, Pistas e Notas privadas; o Inspetor mostra o que foi tocado (no palco, na iniciativa ou nos bastidores) com as ações daquilo. Improviso em segundos: NPC, criatura, pista, item para um herói, encontro e nota (Alt+N/C/P/I/E/O). Dá para preparar a sessão antes (bandeja de atalhos) ou só começar e reagir — nada é obrigatório. Dano em criatura, ocultar/revelar e remover têm Desfazer. No celular, Bastidores e Inspetor viram gavetas. A FichaViva não tenta controlar a história: dá ao mestre ferramentas para reagir a ela.