Soltar Pipa — soltarpipa.online
Projeto pessoal · multijogador em tempo real
- Servidor autoritativo em Go: toda a física de voo e o duelo entre linhas correm no servidor, e o navegador apenas desenha e envia os controlos, o que remove a superfície de batota no cliente.
- Protocolo binário próprio sobre WebSocket, little endian, com frame de referência gravado pelo Go e decodificado pelo teste do cliente em TypeScript: mudar um lado sem o outro quebra a build.
- Área de interesse que trata cada jogador como um segmento de reta, da mão até a pipa, em grade espacial de 48 m com raio de 120 m e histerese — 12 µs por jogador, sem alocação.
- Otimização guiada por perfil: varrimento ordenada no lugar da comparação de todos os pares (28 ms para ~1 ms por tick) e quickselect no lugar de ordenação na seleção de pipas por envio (16% para 2,4% da CPU do tick).
- Teste de carga próprio com 5.000 WebSockets simultâneos, sem falha de conexão nem expulsão; em produção a sala roda com 140 voadores a 15 fotogramas por segundo, limite definido pela banda do balanceador de 10 Mbps, e não pela CPU.
- Produção em Knative sobre Kubernetes, com dois serviços e dois domínios, imagens no GHCR e versionamento automatizado por release-please.
- Go
- TypeScript
- Three.js
- WebSocket
- Vite
- Docker
- Kubernetes
- Knative