BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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.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/. |