Project Plateau
Project Plateau는 네 개의 유리판과 하나의 살아있는 계곡, 캠프로 돌아가는 길을 의미
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Bullet hell de sobrevivência em pixel art moderna, para navegador. Você é Ômega. Seu poder é ilimitado. Sua vida, não.
Jogar · Mecânicas · Arquitetura · Documentação · Roadmap
Zona de Teste 7, 03:14 da manhã. Um reator experimental falha com um pesquisador dentro. O corpo dele se desfaz e se reconstrói como Ômega, uma consciência que manipula a matéria à vontade.
O exército chega primeiro. Depois os blindados, a força aérea, o serviço secreto. Quando nada disso funciona, entram em cena sociedades secretas, alienígenas e os maiores super-heróis do mundo.
Ao contrário do bullet hell clássico, aqui você não é frágil: tem ataques infinitos, 1000 de essência, regeneração e poderes que apagam inimigos da existência. A tensão vem do volume. Inimigos, projéteis e o dano de cada golpe crescem sem teto até derrubar até um deus. Uma partida dura de 3 a 15 minutos, e o objetivo é bater o recorde.
| Poder | Efeito | |
|---|---|---|
| 🔆 | Rajadas de energia | Automáticas e infinitas, ~12 disparos por segundo |
| 🌟 | Raio Cósmico | Feixe de 480 px que atravessa tudo e queima projéteis |
| ⚪ | Apagar da existência | Remove inimigos próximos sem deixar rastro. Vale pontos em dobro |
| 💫 | Teleporte | Salto até a mira, com explosão na chegada |
| 🔥 | Aura de contato | Desintegra quem chega perto |
| ⏸️ | Parar o Tempo · Clones Quânticos · Chuva de Estrelas · Escudo de Fase | Desbloqueáveis pelas evoluções |
Exército → Blindados → Força Aérea → Serviço Secreto → Mísseis guiados → Maçons → Invasão alienígena → Tudo ao mesmo tempo
E a cada ~55 s, um herói: Capitão Égide · Valquíria Volt · Titã Carmesim · Sentinela Estelar.
| Desktop | Celular | ||
|---|---|---|---|
WASD / setas | Flutuar | Arrastar à esquerda | Joystick virtual |
| Mouse | Mirar | Mira automática | |
| Segurar clique | Raio Cósmico | RAIO (segurar) | Raio Cósmico |
Espaço | Apagar | APAGAR | Apagar |
Shift / botão direito | Teleporte | TELEPORTE | Salto na direção do movimento |
Q | Parar o Tempo | PARAR TEMPO | Parar o Tempo |
1 2 3 | Escolher evolução | Tocar na carta | Escolher evolução |
P · M | Pausar · Som |
Requer Node 22.18+.
git clone https://github.com/Le-Jr/singularidade.git
cd singularidade
npm install
npm run dev # → http://localhost:5173
| Comando | O que faz |
|---|---|
npm run dev | Servidor de desenvolvimento com recarga automática |
npm run build | Checa os tipos e gera dist/, pronto para qualquer hospedagem estática (itch.io, GitHub Pages, Netlify) |
npm run preview | Serve o dist/ localmente |
npm test | Testes da simulação (Vitest) |
npm run sim -- 20 | Relatório de balanceamento: um bot joga 20 partidas com semente, sem navegador |
npm run playtest | Com o dev rodando, joga no Chromium sem janela e salva capturas em .playtest/ |
A regra principal: a lógica do jogo não conhece o Phaser. Tudo o que decide o resultado de uma partida fica em src/sim/, em TypeScript puro, com timestep fixo de 60 Hz e sorteios com semente. A mesma semente com as mesmas entradas reproduz a mesma partida, e a simulação roda no Node para testes e balanceamento.
flowchart LR
C["🎮 Controls<br/><sub>teclado · mouse · toque</sub>"] -- SimInput --> S["🧠 Sim.step(1/60)<br/><sub>src/sim · TypeScript puro</sub>"]
S -- muta --> G[("GameState")]
G -- lê --> V["🎨 WorldView<br/><sub>Phaser 4 · WebGL</sub>"]
S -- SimEvent --> E["GameScene"]
E --> A["🔊 Synth<br/><sub>Web Audio</sub>"]
E --> H["📟 HUD<br/><sub>DOM</sub>"]
src/
├── main.ts inicialização do Phaser e escala 16:9
├── scenes/ GameScene: fluxo da partida e loop de timestep fixo
├── sim/ regras do jogo, sem Phaser e sem DOM
│ └── data/ tabelas de inimigos, chefes e evoluções
├── render/ pixel art em código, texturas geradas, desenho do mundo
├── input/ teclado, mouse, joystick virtual, botões do celular
├── audio/ sintetizador de efeitos sonoros
└── ui/ HUD, telas e recorde
tests/ testes da simulação
tools/ balance.ts · playtest.ts
legacy/ a versão original em JavaScript puro, arquivo único
Os detalhes ficam em docs/08-architecture.md.
O repositório não tem nenhum arquivo de imagem ou áudio do jogo. Cada sprite é uma grade de caracteres com paleta:
soldier: {
rows: ['..gggg..', '.gGGGGg.', '..ssss..', '..skks..', '.gggggg.', /* … */],
pal: { g: '#4f6b2f', G: '#6d8b3c', s: '#e0b48a', k: '#22201c' },
},
As texturas (sprites, silhuetas de dano, projéteis com gradiente, chão, brilho, vinheta) são geradas na inicialização. Os sons são sintetizados em tempo real com osciladores e ruído filtrado da Web Audio API. A resolução interna é 400×225, ampliada sem suavização, com brilho aditivo, centenas de partículas, tremor de tela e filtros de câmera.
| Documento | Conteúdo | |
|---|---|---|
| 🌌 | Visão geral | Conceito, história, protagonista, loop de jogo |
| 🎮 | Controles | Teclado, mouse e celular |
| ⚡ | Poderes | Poderes iniciais e desbloqueáveis, com números |
| 💀 | Inimigos | Os 7 tipos, atributos e padrões de tiro |
| 🦸 | Chefes | Os 4 super-heróis e seus ataques |
| 🧬 | Evoluções | As 11 cartas e builds sugeridas |
| 📈 | Dificuldade e pontuação | Curvas de escala, ascensão, recorde |
| 🧠 | Architecture | Código, loop, modelo de dados (em inglês) |
| 🎨 | Arte e áudio | Direção visual, paleta, sprites e sons |
| 🗺️ | Changelog e roadmap | Versões e próximos passos |
O projeto traz skills em .claude/skills/ que o Claude Code carrega sozinho quando a tarefa pede:
| Skill | Para quê |
|---|---|
singularidade-dev | Arquitetura, regras do código, diferenças do Phaser 4, como testar e quais docs atualizar |
game-content | Receitas para criar inimigos, chefes, evoluções, poderes e fases de ameaça |
pixel-art-and-sfx | Formato dos sprites, paleta, efeitos visuais e receitas de som |
balance-tuning | Onde fica cada número da dificuldade e como medir mudanças com npm run sim |