Sobre o projeto
Stellar Abyss é um protótipo de combate espacial 3D orientado para desktop e executado no navegador, construído com Babylon.js, TypeScript e Vite. Naves, ambiente, universo e áudio são descritos como originais e procedurais — o README afirma explicitamente que o projeto não utiliza naves, personagens, logotipos, músicas ou efeitos sonoros protegidos de franquias existentes.
**História e configuração**
O jogo é estruturado em um cenário original de space-opera: um navegador exilado da Order of the Threshold segue um sinal até o Náris Belt, onde uma força militar anônima guarda a passagem para casa. No início, o jogador escolhe entre duas naves, a Arthur Comet e a Gael Ray. Um voo de reconhecimento escala para batalhas contra esquadrões de caças e, eventualmente, contra o Obelisk, uma grande nave capital.
**Controles e combate**
O voo é controlado pelo mouse, com a distância do centro da tela controlando a intensidade da curva; retornar o mouse ao centro faz a nave voar em linha reta e o pointer lock não é utilizado. As teclas do teclado cobrem a velocidade de cruzeiro (W/S), rolagem (A/D), strafe (Q/E), pulso de laser duplo (botão esquerdo do mouse), canhão de plasma após desbloqueio (botão direito do mouse), ruptura de energia após desbloqueio (R), boost com recarga (Left Shift), uma esquiva com invulnerabilidade breve e cooldown de três segundos (Espaço), seleção e ciclo de alvos (F, Tab), pausa (Esc), mudo (M) e um alternador de diagnósticos (F3). O plasma causa dano em área e a ruptura de energia é um torpedo rápido com cooldown de oito segundos. A missão pausa automaticamente quando a janela perde o foco.
**Estrutura da missão**
Seis estágios progridem desde o reconhecimento e interceptação de batedores, passando por patrulhas maiores e caças de assalto, até o desbloqueio do canhão de plasma, enfrentamento de caças de elite e desbloqueio da ruptura de energia, redução de reforços e, finalmente, o desmantelamento do Obelisk subsistema por subsistema — torres de defesa, geradores de escudo, motores iônicos e reator — seguido por uma reação em cadeia e a conclusão da missão.
**Regras e feedback**
Os escudos regeneram cinco segundos após sofrerem dano, enquanto a integridade do casco não regenera. Destruir um caça restaura sete pontos de escudo. Asteroides e a nave capital causam dano de colisão que não é morte instantânea. Uma opção de Test Flight avança o tempo da missão em 4×, mantendo inalterados o movimento, armas, dano e cooldowns.
**Interface e localização**
O jogo inicia em inglês e oferece um seletor EN / PT-BR no menu e na tela de pausa, com a escolha persistida no navegador. Nomes próprios do cenário permanecem não traduzidos.
**Execução e build**
O desenvolvimento local requer Node.js 22.12+ ou Node.js 24; o fluxo documentado é `npm install` e depois `npm run dev`, servindo em `http://127.0.0.1:5173`. Adicionar `?renderer=webgl&debug` força o WebGL2 e ativa os diagnósticos. Um build de produção pode ser servido com `npm run build` e `npm run preview`. Um workflow do GitHub Actions em `.github/workflows/deploy.yml` constrói e publica `dist/` no GitHub Pages quando o `main` é enviado, e o README observa que o workflow solicita apenas as permissões de leitura, escrita de Pages e identidade de implantação exigidas pelo GitHub Pages.
**Arquitetura**
O código é organizado em módulos, incluindo core (engine, loop, input, assets), player (voo e saúde), enemies (IA e formações), weapons (projéteis em pool e colisão), world (ambiente espacial), effects, audio, progression, boss e ui. Constantes de gameplay ficam em `src/config.ts`; testes de combate e progressão estão em `tests/` e um smoke test de navegador está em `scripts/`. `AssetManager.ship()` cria modelos primitivos temporários, e `AssetManager.loadModel(url, parent)` carrega glTF/GLB para substituição visual futura. Os modelos enfrentam o eixo +Z local e nenhum modelo externo é necessário para jogar. O WebGPU é tentado primeiro com fallback automático para WebGL2.
**Verificação**
As verificações documentadas são `npm test`, `npm run build`, `npm run dev` e `node scripts/browser-smoke.mjs`. O smoke test requer um servidor local e Chrome, cobrindo inicialização, aceleração, boost, direção enquanto dispara, abates reais, pausa, retomada, reinício e erros de navegador, gravando capturas de tela em caminhos temporários. O README afirma que seis testes de lógica passam e que a validação Chrome/WebGL2 confirmou disparos, direção enquanto dispara, três abates com pontuação, pausa, retomada, reinício e ausência de erros de runtime, com um build de produção aprovado; também observa que o WebGPU e a jogabilidade completa da batalha da nave capital não foram validados neste ambiente.
**Status e limitações**
O protótipo possui uma missão completa com estados de vitória, derrota e reinício. Naves e áudio são descritos como placeholders procedurais funcionais. Texturas artísticas, LODs, controles de toque e controles de gamepad ainda não foram implementados, e o bundle principal tem cerca de 6,3 MB, ou 1,38 MB gzip, com otimização de carregamento pendente. O alvo declarado é 60 FPS em um desktop razoável, com WebGL2 como caminho de diagnóstico de referência e fallbacks locais para Google Fonts. Os diagnósticos podem exibir FPS, posição, velocidade, inimigos ativos, projéteis, meshes ativas e tempo de missão.
**Contribuição**
Contribuições são aceitas via fork-and-pull-request contra `jeffotoni/deathstar`; o README pede que os contribuidores não enviem branches de funcionalidades para o repositório oficial, utilizem Conventional Commits, mantenham refatorações não relacionadas fora de um PR e expliquem o resultado visível para o jogador junto com comandos de validação e uma captura de tela ou gravação para mudanças visuais ou de gameplay. Também recomenda proteger a branch `main`, manter as permissões de Actions como somente leitura por padrão, evitar segredos em código de fork não confiável, não commitar credenciais ou saída de build gerada, e reportar vulnerabilidades privadamente conforme `SECURITY.md`.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.