Criei um jogo multiplayer de pega-pega no navegador
Estava buscando ideias de novos projetos para o meu portfólio. E acabei esbarrando nesse video do Filipe e, uma das ideias que mais me chamou atenção foi a do jogo multiplayer. A ideia inicial era copiar o mesmo jogo, mas pensei:
“E se eu fizesse um jogo de pega-pega?”
- Regras simples
- Todo mundo já sabe jogar
- E, convenhamos, extremamente divertido
Foi o suficiente pra me convencer a começar.
Primeiros passos
Como sou dev web (React/Next.js no dia a dia), comecei pelo front: criei um canvas, coloquei um quadradinho se mexendo com WASD e pronto — tinha um "player".
Depois fui para o servidor: Node.js + Socket.io, porque é a combinação mais popular e bem documentada pra realtime. A primeira versão funcionava bem em localhost, mas quando testei com dois players, veio o primeiro bug: cada um só via a si mesmo se mexendo.
A solução foi mover a lógica de movimentação para o servidor e apenas transmitir os estados. A refatoração resolveu de cara, agora todo mundo via o mesmo jogo em tempo real.
Infra e Latência
Hora de testar de verdade.
- Frontend: deploy na Vercel (grátis, fácil e rápido)
- Backend: Render (também grátis, mas o servidor ficava em Oregon/EUA)
Resultado: ~200ms de delay em todas as interações. Impossível de jogar.
Foi aí que descobri o Partykit. Ele roda em cima das edges da Cloudflare, o que significa que o servidor nasce perto do jogador. Migrei toda a lógica de Node/Express para PartyKit e, para minha surpresa, deu certo de primeira. O delay praticamente sumiu.
O jogo em si
Ainda é um MVP, mas já dá pra brincar:
- Um player é o “pegador”, os outros correm
- Quando alguém é pego, os papéis se invertem
- Interface simples em Canvas
- Funciona bem pra jogar de bobeira, seja numa call do Discord ou enquanto outro jogo mais pesado carrega
→ Link pra testar: https://chaseio.vercel.app
→ Repositórios no Github:
Front: https://github.com/rafaelpzoucas/chase.io
Back: https://github.com/rafaelpzoucas/server-chase.io
Não precisa cadastro, não tem propaganda. É só abrir, enviar o link para os amigos e jogar.
Próximos passos
Agora quero:
- Polir a UI e as regras do jogo
- Criar experiência mobile
- Testar limites de jogadores por sala
- E claro, ouvir feedback da comunidade
- Pretendo refatorar o código. Na pressa de colocar o jogo funcionando, acabei deixando a organização de lado, então tem bastante espaço pra melhorar a estrutura.
Esse projeto nasceu como “exercício de portfólio”, mas acabou ficando mais divertido do que eu esperava. Se tiver curiosidade, entra aí, joga uma partida e me diz o que achou.
Fonte: https://chaseio.vercel.app