Bastidores: um servidor de jogo sem NENHUMA dependência
Se você já botou o pé no dev web, conhece a piada: a pasta `node_modules` de um projeto moderno pesa mais do que uma foto da galáxia. Centenas de bibliotecas externas empilhadas, das quais ninguém sabe realmente o que todas fazem. Desenvolvendo nosso jogo em Node.js, pegamos o caminho oposto — e é um dos nossos orgulhos de dev: o servidor de Dovion roda sem NENHUMA dependência externa. Zero. Nem uma única biblioteca de terceiros no runtime.
Concretamente, o que isso quer dizer?
Quando um estúdio monta um servidor de jogo online, o reflexo é montar blocos prontos: uma biblioteca para WebSockets (a conexão em tempo real entre seu navegador e o servidor), outra para servir arquivos, outra para isso, outra para aquilo. É rápido no começo.
A gente escreveu tudo à mão. Inclusive o trecho mais intimidador: o próprio servidor WebSocket, ou seja, o protocolo que faz transitar em tempo real as posições dos navios, os tiros e os eventos entre o servidor e cada jogador. É o tipo de componente que 99% dos projetos importam sem pensar duas vezes. Preferimos entendê-lo até a última linha.
Por que se impor isso?
Não é (só) masoquismo. Essa escolha tem vantagens muito concretas:
- Confiabilidade. Cada dependência é um risco: uma atualização que quebra tudo, uma falha de segurança descoberta em um terceiro, um projeto abandonado pelo autor. Zero dependência = zero surpresa vinda de fora. Nosso servidor de hoje vai funcionar igual daqui a cinco anos.
- Leveza. Sem camadas intermediárias: o código faz exatamente o que pedimos, nada mais. Para um servidor que deve simular salas inteiras em tempo real — contamos o porquê em os bastidores do servidor autoritário — cada milissegundo conta.
- Controle total. Quando um bug aparece às 2 da manhã, ele está necessariamente NO NOSSO código. Sem precisar vasculhar as entranhas de uma biblioteca escrita por outra pessoa. Podemos consertar tudo, porque construímos tudo.
- Deploy trivial. Instalar o servidor é copiar os arquivos e iniciá-lo. Sem instalação de pacotes, sem versões incompatíveis, sem ritual mágico.
O plano B para redes bloqueadas
Um exemplo concreto do que esse controle possibilita: certas redes — escolas, empresas — bloqueiam conexões WebSocket. Na maioria dos jogos, isso se traduz em uma tela de carregamento girando em falso. Como controlamos toda a nossa pilha de rede, pudemos construir um transporte de fallback via HTTP/SSE: se o WebSocket estiver bloqueado, o jogo muda automaticamente para essa rota alternativa, e você joga mesmo assim. Esse tipo de proteção é muito mais difícil de implementar quando a camada de rede é uma caixa-preta importada.
As desvantagens (porque existem)
Sendo honestos, essa filosofia tem um custo: o tempo. Escrever você mesmo o que outros importam em uma linha representa semanas a mais de trabalho, especificações técnicas para ler, casos complicados para tratar. É um luxo de projeto apaixonado e pequeno; uma equipe com deadlines comerciais provavelmente não poderia se dar a esse luxo. Não pretendemos que seja O método certo para todo mundo — é o nosso, e combina com nossa escala.
Essa filosofia do feito à mão vai além do servidor: o próprio mundo do jogo é desenhado pelo código, sem arquivos de imagem, como explicamos em os bastidores do visual estilo Ghibli. Resultado global: um jogo leve, que carrega rápido e roda até em máquinas modestas — a prova em Dovion em PC básico.
Todo esse trabalho invisível tem um único objetivo: que você clique e funcione. Verifique você mesmo: Jogar Dovion gratuitamente.