2

Pitch: Nebula Dominion, estratégia espacial em tempo real que roda no navegador (PC e celular)

Olá, TabNews! Quero apresentar o Nebula Dominion, um jogo de estratégia espacial em tempo real, gratuito, que roda no navegador do PC e do celular: nada para baixar, nada para comprar e nenhuma vantagem paga. É um projeto independente feito na Itália, e o jogo está em 11 idiomas, incluindo o português do Brasil.

O jogo em poucas linhas

Você desenvolve planetas (minas e energia continuam produzindo mesmo quando você está offline), pesquisa tecnologias, constrói naves e defesas e comanda frotas: ataque, espionagem, transporte, colonização, coleta de destroços e expedições. Há alianças com chat, pactos, guerras e torneios, e as batalhas podem ser revistas em 3D. O universo é rápido: economia x300, pesquisa x20, construção x200, frotas x4.

Algumas escolhas técnicas

  • PHP 8.3 puro, sem framework e sem dependências do Composer, com MySQL 8.4 e Redis, tudo em Docker Compose (nginx, PHP-FPM e Caddy para o HTTPS) em um único VPS.
  • Recursos calculados sob demanda: o planeta guarda a hora da última atualização, e a produção é somada só quando alguém abre a página ou quando uma ação precisa dos números. Nada roda a cada segundo para cada planeta.
  • Um worker em segundo plano (PHP CLI) termina as filas de construção, faz as frotas viajarem, resolve os combates no servidor e recalcula os rankings. Vários workers podem rodar ao mesmo tempo sem se atrapalhar.
  • Tradução automática do chat sem travar a página: quem escreve não espera; o texto entra em uma fila, é traduzido por um LibreTranslate que roda no próprio servidor e aparece sozinho quando fica pronto. Até lá, quem lê vê o original.
  • 3D com three.js para planetas, luas e o replay das batalhas, e o site é um PWA com service worker.
  • Testes: uma suíte própria com mais de 460 arquivos de teste, que roda em SQLite, e um verificador que confere se as 11 línguas têm as mesmas chaves, os mesmos placeholders e as mesmas tags HTML antes de cada versão.

O que deu mais trabalho até agora

  • Deixar a mesma interface confortável numa tela de 320 px e num monitor grande, com as mesmas funções no PC, no Android e no iPhone.
  • Atualizar a página ao vivo (frotas chegando, filas terminando) sem fazer a tela pular e sem perder o texto que o jogador está digitando.
  • Manter 11 idiomas sincronizados a cada versão.

Sendo honesto

O jogo é novo e está procurando jogadores; alguns comandantes são controlados pelo próprio jogo para o universo não ficar vazio.

Site: https://nebuladominion.com
Discord: https://discord.gg/j4ZTtRDz6q

Qualquer feedback é muito bem-vindo, principalmente sobre a primeira hora de jogo e o uso no celular. Obrigado!

Carregando publicação patrocinada...
1

Com recurso calculado sob demanda, o caso que costuma dar bug nesse tipo de jogo é o ataque: o planeta alvo tem que ser atualizado até o segundo da chegada da frota antes do combate, senão o saque sai com a produção velha. Como o combate roda no worker, imagino que ele já faz essa atualização antes.

Sobre vários workers rodando juntos, se a fila de eventos tá no MySQL, o SELECT ... FOR UPDATE SKIP LOCKED (tem desde o 8.0) ajuda bastante. Cada worker trava um lote de eventos vencidos e os outros pulam essas linhas sem ficar esperando. Foi assim que vocês fizeram ou usaram o Redis pra isso?

0