Servidor Multijogador
O retransmissor multijogador do En Parlant~ é um servidor WebSocket leve, escrito em Rust utilizando Axum e socketioxide. Liga dois jogadores para partidas de xadrez em tempo real através de Socket.IO, sem armazenamento persistente e com requisitos mínimos de recursos.
O código-fonte do servidor de retransmissão encontra-se no repositório en-parlant-relay.
Porquê Alojar Localmente
Seção intitulada “Porquê Alojar Localmente”O servidor de retransmissão predefinido funciona de imediato, mas existem boas razões para executar o seu próprio:
- Privacidade — todo o tráfego de jogo permanece na sua infraestrutura
- Menor latência — implante mais perto dos seus jogadores para uma transmissão de jogadas mais rápida
- Independência — sem dependência da disponibilidade ou funcionamento do servidor de retransmissão predefinido
Opções de Implantação
Seção intitulada “Opções de Implantação”Fly.io (Recomendado)
Seção intitulada “Fly.io (Recomendado)”O repositório do retransmissor inclui um ficheiro de configuração fly.toml, o que torna o Fly.io o caminho de implantação mais fácil. O plano gratuito do Fly.io é adequado para uso pessoal.
-
Instale a CLI do Fly:
Terminal window curl -L https://fly.io/install.sh | sh -
Registe-se ou inicie sessão:
Terminal window fly auth signup# orfly auth login -
Clone o retransmissor e implante:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relayfly launchfly deploy
O Fly.io compilará o binário Rust, implantá-lo-á e fornecer-lhe-á um URL público como your-app-name.fly.dev.
Auto-alojado
Seção intitulada “Auto-alojado”Compile o retransmissor a partir do código-fonte e execute-o em qualquer máquina com uma toolchain Rust.
-
Clone e compile:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relaycargo build --release -
Execute o servidor:
Terminal window ./target/release/en-parlant-relayO servidor escuta na porta 3210 por predefinição.
-
Para uso em produção, execute-o atrás de um proxy reverso (nginx, Caddy ou similar) para gerir a terminação TLS. O retransmissor em si comunica em WebSocket simples — o seu proxy adiciona a camada de encriptação
wss://.
O servidor é muito leve. Mantém as salas de jogo em memória, reencaminha jogadas entre dois jogadores e não faz mais nada. Um VPS pequeno ou até um Raspberry Pi consegue geri-lo confortavelmente.
Configurar o En Parlant~
Seção intitulada “Configurar o En Parlant~”Quando o seu retransmissor estiver em execução, aponte o En Parlant~ para ele:
- Abra as Definições no En Parlant~
- Encontre a definição do URL do servidor de retransmissão multijogador
- Introduza o endpoint WebSocket do seu servidor:
- Para Fly.io:
wss://your-app-name.fly.dev - Para auto-alojado com proxy TLS:
wss://relay.yourdomain.com - Para desenvolvimento local:
ws://localhost:3210
- Para Fly.io:
É tudo. A aplicação utilizará o seu retransmissor para todos os jogos multijogador.
Detalhes do Servidor
Seção intitulada “Detalhes do Servidor”Alguns aspetos a saber sobre o funcionamento do retransmissor:
-
Códigos de sala — O servidor gera códigos de jogo de 6 caracteres utilizando um conjunto de caracteres não ambíguo. Caracteres visualmente semelhantes são excluídos (sem
0/O, sem1/I/L) para evitar confusão ao partilhar códigos verbalmente. -
Limpeza de salas — As salas são automaticamente removidas após 30 minutos de inatividade. Uma tarefa de limpeza é executada a cada 60 segundos para eliminar salas inativas.
-
Sem armazenamento persistente — Todo o estado reside em memória. Se o servidor reiniciar, as salas ativas são perdidas. Isto é intencional — o retransmissor é sem estado e trivialmente substituível.
-
Recursos mínimos — O servidor utiliza muito pouco CPU e memória. Apenas recebe eventos Socket.IO de um jogador e reencaminha-os para o outro. Não há lógica de jogo, nem validação de jogadas, nem base de dados.