Criei um site onde é possível jogar jogos clássicos de MAME pela web.
Parece que há muitos sites onde dá para jogar simplesmente pelo navegador, mas não encontrei nenhum que oferecesse suporte fluido a jogo em rede na web,
então desenvolvi este com foco em jogo em rede.
Por enquanto, quando um usuário faz upload de uma ROM de MAME, o administrador verifica se há algum problema com a ROM e, se aprovada, ela fica visível para os usuários.
Se o jogo oferecer suporte a 1P e 2P, implementei para que seja possível jogar em rede independentemente do tipo de jogo.
Backend: FastAPI, Radis, postgresql, wss, likvekit
Frontend: react + vite, tailwindCss
No início, ao jogar em rede, eu abria um emulador separado na web para cada jogador e transmitia apenas as entradas de tecla dos usuários, mas surgiram problemas graves de sincronização. Apenas as teclas eram transmitidas entre as partes, e questões como configuração de personagens e diferenças no tempo de carregamento do emulador simplesmente impediam sincronizar tudo para que o jogo avançasse corretamente. Então pensei em outra abordagem: ao iniciar uma partida em rede, transmitir a tela inteira para o navegador dos participantes. Pensei no LiveKit e, nesse estado, deixei apenas as entradas de tecla sendo trocadas via WebSocket.
Só então a sincronização entre os jogadores foi resolvida perfeitamente, e passou a ser possível jogar em rede sem problemas, seja em jogos de tiro ou de luta.
O problema, claro, é o tráfego de rede.
Para que seja algo leve de experimentar, deixei sem outros recursos além da partida em si.
Agradeço se puderem dar uma olhada e me dizer pontos de melhoria.
Ainda não há comentários.