| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
SUBMUNDO é um simulador persistente de estratégia e gestão criminal, pensado para Web e com interface mobile-first. O jogador não controla uma única personagem: controla uma organização inteira, o seu Quartel-General, equipas, operacionais, frota, armamento, imóveis, dinheiro, influência, risco policial e operações em tempo real.
O mapa é o centro da experiência. O mundo nasce à volta do Quartel-General escolhido pelo jogador em território português, as oportunidades surgem dinamicamente, as equipas deslocam-se pelo mapa, as operações evoluem por fases e a economia continua a produzir consequências enquanto a organização cresce.
Projeto ficcional. SUBMUNDO é uma obra original de estratégia/gestão inspirada apenas no género de sandbox criminal. Não reutiliza personagens, missões, mapas, arte, áudio ou texto de outras propriedades intelectuais.
| Componente | Estado |
|---|---|
| GitHub Pages | Frontend publicado automaticamente |
| URL | https://pulsebreakpt.github.io/LusoraeCrime/ |
| Build | React/CRACO via GitHub Actions |
| Rotas SPA | Preparadas para o subdiretório /LusoraeCrime |
| Entrada no Pages | Google quando configurado + modo convidado local |
| Sistema de autenticação | Implementado; sessão persistente no backend e save local no modo convidado |
| Backend completo | FastAPI + MongoDB, destinado à stack Docker/VPS |
| Deploy de produção | Docker Compose + Caddy + HTTPS automático |
| Modo atual | Single-player local + backend persistente com camada social/multiplayer opt-in |
Compatibilidade de deployment: o caminho LusoraeCrime que ainda aparece no URL do GitHub Pages é apenas o identificador legado do repositório/deploy atual; a marca do produto é exclusivamente SUBMUNDO.
O ecrã público de entrada é parte da experiência atual: permite jogar como convidado no próprio dispositivo e apresenta Google Sign-In quando o respetivo client ID está configurado.
O loop principal combina gestão, planeamento e execução:
O motor usa um modelo de progressão persistente e data-driven: o conteúdo vive sobretudo em game_data.py, economy_constants.py, city_data.py, quests_data.py e mastermind_data.py.
| Sistema | Conteúdo atual |
|---|---|
| Tipos de operações | 67 |
| Especializações de operacionais | 24 |
| Atributos de operacionais | 9 |
| Raridades | 4 |
| Patentes/ranks | 7 |
| Talentos | 10 |
| Fontes de recrutamento | 6 |
| Cursos de formação | 10 |
| Especializações de equipa | 4 |
| Modelos de veículos | 11 |
| Modelos de armas | 9 |
| Tipos de imóveis | 12 |
| Quests/missões definidas | 120 |
| Capítulos principais | 12 |
| Zonas geradas à volta do QG | até ~16 |
| Níveis de procurado | 0–5 estrelas |
| Ranks de reputação de rua | 6 |
| Alvos Mastermind | 7 |
| Ranks Mastermind | 10 |
| Mercadorias Mastermind | 8 |
Assalto, Roubo de Veículo, Cobrança, Transporte Ilegal, Contrabando, Hack, Lavagem de Dinheiro, Infiltração, Ataque a Território, Operação VIP, Missão Especial, Entrega Expressa, Vigilância Digital, Assalto Armado, Suborno a Oficial, Rota Internacional, Ciberataque Bancário, Roubo de Joalharia, Assalto a Licorista, Roubo de Carga, Assalto a Casa de Penhores, Assalto a Carro Blindado, Emboscada a Rival, Assalto a Casino, Sequestro Relâmpago, Assalto a Museu, Guerra de Território, Entrega Local, Recolha de Mercadoria, Transporte de Armas, Rota Costeira, Contrabando de Tabaco, Frota Fantasma, Rota da Alfândega, Carga Diplomática, Rede de Distribuição, Porto Franco, Phishing Bancário, Clonagem de Cartões, Hack de Semáforos, Fraude de Criptomoedas, Invasão de Servidor, Ciberespionagem, Ataque DDoS, Roubo de Dados, Sabotagem Industrial, Guerra Cibernética, Proteção de Comércio, Boato de Rua, Suborno a Funcionário, Chantagem a Político, Lavagem via Casino, Infiltração em Sindicato, Acordo com Autarca, Campanha de Difamação, Controlo da Imprensa, Golpe de Estado Local, Roubo de Obra de Arte, Operação Encoberta, Resgate de Refém, Leilão Clandestino, Venda de Armamento, Fuga da Prisão, Assassínio por Contrato, Golpe ao Banco Central, Tráfico de Influência Internacional e Operação Fantasma.
Uma conta nova começa sem Quartel-General. O jogador escolhe o primeiro QG diretamente no mapa.
A validação é feita no servidor:
Depois da colocação:
Existem quatro especializações base de equipa:
| Especialização | Foco |
|---|---|
| Crew de Assalto | Assaltos, roubos e confronto |
| Rede Logística | Transporte, entregas e contrabando |
| Célula Técnica | Hacking, infiltração e vigilância |
| Unidade de Influência | Cobranças, lavagem e operações sociais |
O sistema operacional inclui:
O motor mantém um piso de chance e risco residual: nenhuma operação é garantida a 100%.
Assaltante, Motorista, Hacker, Mecânico, Informador, Médico Clandestino, Lavador de Dinheiro, Advogado, Negociador, Segurança, Contrabandista, Falsificador, Espião, Gestor de Empresa, Franco-Atirador, Arrombador, Piloto de Fuga, Estafeta, Engenheiro Social, Criptógrafo, Relações Públicas, Chantagista, Químico e Recrutador.
Força, Inteligência, Discrição, Condução, Tiro, Hack, Negociação, Sangue-frio e Resistência.
Cada operacional pode ser afetado por:
A organização pode sofrer roubo interno, fuga de informação, sabotagem ou abandono quando o risco de traição cresce.
Fontes: Rua, Bares, Empresas, Prisões, Mercado Negro e Contactos.
Cursos: Combate, Condução Evasiva, Hacking, Discrição, Negociação, Primeiros Socorros, Logística, Gestão, Liderança e Treino Físico.
| Veículo | Nível | Preço base | Velocidade | Lugares | Discrição |
|---|---|---|---|---|---|
| Sedan Usado | 1 | 6 000 € | 9 | 4 | 75 |
| Moto Rápida | 1 | 12 000 € | 15 | 2 | 70 |
| Carrinha de Entregas | 1 | 9 000 € | 10 | 3 | 85 |
| Van Reforçada | 2 | 18 000 € | 12 | 6 | 80 |
| Berlina Blindada | 2 | 22 000 € | 13 | 4 | 45 |
| Buggy Todo-o-Terreno | 2 | 20 000 € | 16 | 2 | 25 |
| Desportivo | 3 | 30 000 € | 19 | 2 | 15 |
| SUV Blindado | 4 | 45 000 € | 14 | 5 | 35 |
| Limousine | 4 | 50 000 € | 11 | 6 | 5 |
| Supercarro | 5 | 65 000 € | 26 | 2 | 8 |
| Carro Furtivo | 5 | 55 000 € | 20 | 2 | 95 |
A frota tem:
| Arma | Nível | Preço base | Perfil |
|---|---|---|---|
| Faca/Taser | 1 | 1 200 € | Silenciosa |
| Pistola | 1 | 2 800 € | Equilibrada |
| Espingarda | 2 | 5 000 € | Assalto |
| Submetralhadora | 3 | 10 000 € | Assalto |
| Pistola Silenciada | 3 | 8 000 € | Silenciosa |
| Caçadeira de Canos Serrados | 3 | 6 500 € | Assalto |
| Rifle de Assalto | 4 | 18 000 € | Assalto especial |
| Rifle de Precisão | 5 | 32 000 € | Técnica/especial |
| Metralhadora Ligeira | 6 | 45 000 € | Assalto pesado |
O modelo de armas considera:
| Imóvel | Nível mín. | Função principal |
|---|---|---|
| Esconderijo | 1 | Aumenta capacidade de operacionais |
| Garagem | 1 | Aumenta capacidade de veículos |
| Empresa de Fachada | 2 | Lavagem automática |
| Armazém | 2 | Bónus em logística |
| Posto de Vigilância | 2 | Bónus em operações técnicas |
| Escritório de Advocacia | 2 | Bónus em influência |
| Laboratório | 3 | Produção passiva de dinheiro sujo + calor |
| Oficina | 3 | Desconto em reparações |
| Arsenal | 3 | Bónus em assalto |
| Casa de Câmbio | 3 | Aumenta lavagem automática |
| Porto Clandestino | 4 | Bónus global de recompensas |
| Centro Logístico | 4 | Grande aumento de capacidade da frota |
O jogo trabalha com duas moedas operacionais:
Valores de arranque definidos atualmente no motor:
Outros sistemas:
O fecho económico acontece todas as segundas-feiras às 20:00, Europe/Lisbon. Cobra salários brutos, TSU patronal, a fração semanal dos custos fixos da frota, manutenção imobiliária e defesa territorial. Combustível e reparações continuam a ser custos variáveis. Os valores são centralizados em backend/economy_constants.py.
A organização tem agora 100 níveis. Os níveis 1–10 preservam os thresholds históricos para manter compatibilidade com saves existentes; os níveis 11–100 usam uma curva progressiva própria.
O conteúdo deixa de ficar concentrado no early game: operações, veículos, armas, imóveis, recrutamento, território, prestige, especializações, QG e Mastermind distribuem desbloqueios ao longo da carreira. Marcos estruturais incluem território no 20/45/75, contactos no 75, infraestrutura soberana no 85 e o capstone Império SUBMUNDO no nível 100.
O frontend mostra o próximo desbloqueio relevante e revela módulos avançados progressivamente para reduzir carga visual no início.
Existem 102 definições de quests:
| Tipo | Quantidade |
|---|---|
| Principais | 39 |
| Diárias | 29 |
| Semanais | 15 |
| Dinâmicas | 8 |
| Eventos | 7 |
| Decisões | 4 |
A história principal está organizada em 6 capítulos:
O sistema suporta:
O núcleo urbano está integrado no estado do jogador e influencia diretamente operações, economia e competição. A simulação usa o horário de Lisboa e janelas globais partilhadas, para que clima e acontecimentos sejam previsíveis e não um bónus escondido lançado por missão.
A Cidade Viva não substitui a preparação das equipas: os seus multiplicadores são deliberadamente limitados e ficam visíveis no preview do despacho.
O sistema Mastermind representa operações de grande escala com planeamento em várias fases.
Dez estatutos: Planeador, Coordenador, Arquiteto, Mastermind, Estratega, Diretor, Soberano, Arquiteto Nacional, Lenda e SUBMUNDO.
Também inclui:
O frontend funciona como um cockpit tático sobre o mapa.
Os painéis principais suportam atalhos numéricos 1–9.
A loja usa dinheiro do jogo e inclui:
Não existe dependência de pagamentos reais no fluxo documentado do projeto.
A camada policial é uma simulação própria integrada no mapa e nas missões.
A configuração atual inclui centros PSP em várias cidades portuguesas, entre elas Lisboa, Porto, Braga, Coimbra, Faro, Setúbal, Aveiro, Viseu, Leiria, Évora, Santarém, Funchal e Ponta Delgada.
As operações podem ser acompanhadas numa Câmara da Operação.
O sistema interior é executado no frontend e inclui:
Existe painel para administradores/moderadores com:
Moderadores têm acesso de leitura às áreas previstas; mutações administrativas exigem role de administrador.
Rotas e páginas para:
A aceitação do disclaimer é auditada no backend com versão e registo temporal.
┌────────────────────────────────────────────────────────────────┐
│ Browser / Mobile Web │
│ React 19 · CRACO · Tailwind · React Router · Leaflet │
└──────────────────────────────┬─────────────────────────────────┘
│ HTTPS / REST
▼
┌────────────────────────────────────────────────────────────────┐
│ FastAPI │
│ Auth · Game · Organization · City · Mastermind · Admin · Legal│
│ Engine · Economy Director · Quests · World · City · Live Ops │
└──────────────────────────────┬─────────────────────────────────┘
│ Motor/PyMongo
▼
┌────────────────────────────────────────────────────────────────┐
│ MongoDB 7 │
│ users · players · teams · employees · vehicles · missions ... │
└────────────────────────────────────────────────────────────────┘
Produção:
Internet → Caddy → React estático
└→ /api/* → FastAPI → MongoDB
O backend usa um tick lazy: o estado avança durante leituras/ações relevantes em vez de depender de um game loop permanente para tudo. Entre outras coisas, o motor trata de spawn, expiração, progresso de missões, calor, RH, economia e eventos persistentes.
O tick é serializado por jogador através de uma lease atómica, para que polling concorrente em várias tabs/dispositivos não duplique rendimento, salários, raids ou automações. A recuperação offline usa uma janela única de 28 dias tanto para produção como para custos fixos. Rotas resolvidas no despacho ficam persistidas e são tratadas como geometria canónica da missão.
A progressão 1–100 usa um contrato de desbloqueios versionado: alterar preços ou recompensas não desloca silenciosamente conteúdo entre níveis. Operações, quests, Mastermind e temporadas passam ainda pelo economy_director.py, que aplica guardrails globais contra multiplicadores ou farms que escapem ao balanceamento normal.
| Rota | Função |
|---|---|
| / | Jogo protegido |
| /auth | Login/registo; oculto na build pública atual |
| /termos | Termos |
| /privacidade | Privacidade |
| /rgpd | RGPD |
| /changelog | Histórico de versões |
| /painel | Administração/moderação |
| /dev/loading | Preview de desenvolvimento |
| /dev/operation | Preview de operação |
O BrowserRouter usa process.env.PUBLIC_URL, permitindo funcionar corretamente em /LusoraeCrime no GitHub Pages.
A API é organizada por domínio.
Autenticação — /api/authEstado e operações
Equipas e RH
Frota
Armamento
Imóveis e QG
Economia, quests e loja
Todas as mutações deste router aceitam request_id e usam recibos idempotentes com TTL para impedir cobrança duplicada em retries de rede.
Mastermind — /api/game/mastermindCria backend/.env com valores teus:
MONGO_URL=mongodb://localhost:27017
DB_NAME=submundo
JWT_SECRET=trocar-por-um-segredo-forte
CORS_ORIGINS=http://localhost:3000
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=trocar-esta-passwordDepois:
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn server:app --host 0.0.0.0 --port 8001 --reloadcd frontend
yarn install
REACT_APP_BACKEND_URL=http://localhost:8001 yarn startPara mostrar a autenticação localmente, não definas REACT_APP_AUTH_UI_ENABLED=false.
O workflow .github/workflows/pages.yml:
A pasta deploy/ contém:
Topologia:
Internet :80/:443
│
▼
Caddy
├── / → React
└── /api/* → FastAPI
│
▼
MongoDB
O Caddy trata de HTTPS automático e serve a SPA; o MongoDB não é exposto diretamente à Internet na configuração Docker fornecida.
Consulta deploy/HOSTINGER.md para o guia operacional completo.
O projeto já inclui várias medidas:
Nunca colocar segredos, passwords, JWT secrets ou credenciais reais no README ou no código versionado.
SUBMUNDO/
├── .github/
│ └── workflows/
│ └── pages.yml
├── backend/
│ ├── auth.py
│ ├── server.py
│ ├── engine.py
│ ├── game_data.py
│ ├── economy_constants.py
│ ├── economic_simulator.py
│ ├── routes_game.py
│ ├── routes_city.py
│ ├── routes_organization.py
│ ├── organization_systems.py
│ ├── organization_intelligence.py
│ ├── organization_automation.py
│ ├── organization_events.py
│ ├── economy_director.py
│ ├── routes_mastermind.py
│ ├── routes_admin.py
│ ├── routes_legal.py
│ ├── quests.py
│ ├── quests_data.py
│ ├── city_data.py
│ ├── mastermind_data.py
│ ├── live_ops.py
│ ├── live_phrases.py
│ ├── world_gen.py
│ ├── geo.py
│ ├── geocode.py
│ └── data/
├── frontend/
│ ├── public/
│ └── src/
│ ├── components/
│ │ ├── game/
│ │ ├── legal/
│ │ └── ui/
│ ├── context/
│ ├── hooks/
│ ├── lib/
│ │ └── interior/
│ └── pages/
├── deploy/
│ ├── docker-compose.yml
│ ├── Caddyfile
│ ├── HOSTINGER.md
│ ├── backend/
│ ├── frontend/
│ └── scripts/
├── docs/
│ ├── GENERAL_IMPROVEMENTS_25.md
│ └── MASTERMIND_HEISTS_25.md
├── memory/
│ └── PRD.md
└── README.md
O repositório inclui:
Os relatórios versionados refletem execuções passadas; devem ser novamente executados após alterações relevantes antes de serem tratados como estado atual.
A identidade visual definida no projeto segue um tactical command-center HUD:
O changelog público do backend mantém a série formal:
A documentação técnica também contém pacotes posteriores, incluindo:
Por isso, o número mostrado no changelog público e as versões dos pacotes de funcionalidades não devem ser interpretados como uma única versão SemVer global até existir uma política de release unificada.
O projeto está preparado para distribuição Android através de Capacitor 8, com package ID legado pt.lusorae.crime (mantido para compatibilidade de atualização na Google Play), target/compile SDK 36, minSdk 24 e pipeline GitHub Actions que gera um Android App Bundle de validação.
A ativação efetiva do Google Sign-In requer configurar o Web OAuth Client ID e o Android OAuth Client no mesmo projeto Google Cloud, incluindo o SHA-1 do certificado de assinatura da Play Store.
Itens ainda documentados como evolução possível:
Neste momento o repositório não contém um ficheiro LICENSE. Não assumas que o código pode ser redistribuído, sublicenciado ou reutilizado fora dos termos definidos pelo proprietário do repositório.
SUBMUNDO
Um império não se controla com um gatilho. Controla-se com informação, logística, dinheiro e decisões.
| Back | FazBrowse Home | New Git URL |