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
Um RPG de mesa solo, narrado por IA — crie um herói e viva uma campanha de fantasia sombria onde o mestre não trapaceia.
Translation pending
GamesPython · TypeScriptGitHub @Bobeda12OnlineOwner 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.
Um RPG narrado por um LLM — FastAPI + Groq no backend, React no front. 🔗 Jogue agora: mestre-ia-seven.vercel.app — no ar desde a Etapa 9 (Render + Vercel + Neon; ver ADR-0015 e ADR-0022, a migração de Fly.io para Render na Etapa 14). A arquitetura, as decisões e o porquê de cada uma vivem em PLANO_MESTRE.md e em docs/. Este README é a porta de entrada de engenharia: como rodar, como o backend é organizado, e o que ele ainda não faz.Read the full README ↗
Um RPG de mesa narrado por IA, onde o modelo conta a história e um motor de regras decide o que acontece.
O código foi escrito por agentes de IA (Claude Code). Eu defini o que construir, o escopo, as regras e a arquitetura, e acompanhei cada decisão técnica, registrada nos ADRs.
🎮 Jogue agora: mestre-ia-seven.vercel.app · entre como convidado, sem cadastro. Roda em planos gratuitos, então há um limite diário de turnos e cada resposta pode levar de 20 a 40 segundos. Dá para usar a sua própria chave do Gemini e não gastar a cota compartilhada.
Uma partida real em produção: o herói é criado, o narrador conduz a cena e um duelo é resolvido pelo motor de regras, com rolagens, iniciativa, o contra-ataque que deixa o herói com 1 PV, saque e retorno à exploração.
Modelos de linguagem são ótimos para narrar e ruins para fazer contas. A primeira versão pedia ao modelo o campo hp_atual a cada turno, e o resultado foi um bug revelador: o HP nunca mudava, porque ninguém de fato o governava.
A solução foi separar os papéis (ADR-0006):
rules_engine.py é determinístico, sem rede e sem LLM: dados, ataque, dano, iniciativa, testes de morte, progressão. É ele quem decide o que aconteceu.| Tema | O que foi feito |
|---|---|
| Motor de regras | D&D 5e enxuto, puro Python e testado. Combate por fila de turnos, com ação, ação bônus, movimento e distância sem mapa (ADR-0040). |
| Tool calling | O narrador pede ao servidor rolagens, combate, itens e mudanças de mundo; o servidor valida e aplica. |
| Memória em três camadas | Curto prazo cru, resumo estruturado e eventos de longo prazo, buscados por BM25 + embeddings (ADR-0009, ADR-0010). |
| Vários modelos, um papel cada | Cadeia com fallback entre Gemini e Groq, com tempo limite por modelo, porque os planos gratuitos falham e estouram cota (ADR-0038). |
| Avaliação | Golden dataset de 60 cenários, LLM-as-judge e bake-off entre modelos, em um framework separado do código de produção (ADR-0011, relatórios). |
| Produção real | Vercel + Render + Neon, proxy /api para o cookie de sessão sobreviver, login por senha e Google, rate limit, teto diário de turnos e chave própria do jogador (ADR-0022). |
| Qualidade | Mais de 970 testes, cobertura de 86% no domínio e nos serviços, ruff, mypy e CI a cada push. |
argon2. Decisão registrada no ADR-0014.Backend: Python 3.11+, FastAPI, SQLAlchemy 2.0, Alembic, Pydantic, uv · Frontend: React, TypeScript, Vite, Tailwind · IA: Gemini e Groq (cadeia de fallback), embeddings do Gemini · Infra: Vercel, Render, Neon (Postgres), GitHub Actions
Precisa de uv e Node.js 20+. Uma chave grátis do Gemini é opcional: sem ela o jogo sobe, mas a narração cai num texto de reserva.
cd Backend
cp .env.example .env # cole GEMINI_API_KEY (e, se quiser, GROQ_API_KEY)
uv sync
uv run alembic upgrade head
uv run uvicorn app.main:app --reload --port 8000
cd Frontend
npm install
npm run dev
Abra http://localhost:5173. Use localhost, não 127.0.0.1: o cookie de sessão não sobrevive à troca, porque são sites diferentes para a política SameSite.
Com Docker: docker-compose up --build (precisa do Backend/.env).
cd Backend
uv run ruff check . # estilo
uv run mypy app evals # tipos
uv run pytest # testes
O CI roda essas etapas e reprova o PR se a cobertura de app/domain, app/services e evals cair abaixo de 60%. A suíte de avaliação (uv run python -m evals.run_eval) gasta cota de modelo, então só roda sob demanda.
Backend/
app/ routers, services, domain, infra (camadas, ver docs/arquitetura.md)
evals/ framework de avaliação: golden dataset, harness, métricas, juiz
data/ regras em JSON (raças, classes, monstros, armas) e a bíblia do mestre
migrations/ Alembic
tests/ pytest
Frontend/ React + TypeScript
docs/ ADRs, diário, relatórios, arquitetura, runbook
Para entender as decisões, comece por docs/arquitetura.md e depois pelos ADRs.
MIT. O código pode ser usado, copiado e modificado, mantendo o aviso de copyright. Os recursos de terceiros (trilha sonora, efeitos, sprites, retratos e ícones) mantêm as licenças de origem e não estão cobertos por ela; todos estão listados em docs/CREDITOS.md.
| Documentação como entrega | 45 ADRs com as decisões e as alternativas descartadas, mais de 50 entradas de diário e relatórios de avaliação. Veja docs/. |