Quão difícil é construir um jogo multiplayer performante em tempo real em dispositivos móveis neste momento?
Estou bastante certo que o Android e o iOS permitem que você use o UDP de uma forma ou de outra. Seria um pouco estranho se eles't implementassem um protocolo padrão de linha base como esse.
Logue no UDP em vez de TCP/Websockets. Embora ambos TCP e Websockets sejam extremamente úteis, nenhum deles é uma boa escolha para multiplayer. O TCP tentará reenviar dados se os dados forem perdidos, o que pode ser muito prejudicial para a comunicação em tempo real. WebSockets fica em cima do TCP, então ele não resolve't resolve o problema. Em um cenário em tempo real você é melhor projetar ao redor de pacotes possivelmente perdidos ao invés de tentar reenviar informações.
Minha pergunta é: como você está fazendo sua comunicação? Em qualquer caso, independentemente de você estar conectado por cabo ou usando uma rede móvel, é melhor reduzir a quantidade de dados que você está enviando. Há muito material sobre como conseguir isso, mas aqui estão algumas noções básicas
ul><Don't envie dados de posição a menos que's necessários para coisas como correções Se você precisa enviar dados de posição a uma taxa consistente, procure suavizar para reduzir a freqüência de envio de dados de posição. Você realmente precisa ser preciso? Se um servidor decidir quem ganha, ser extremamente preciso pode não ser absolutamente necessário. Você pode aproximar algumas coisas, reduzindo a quantidade de dados que estão sendo transferidos.Acções de envio. Então se eu pular, eu devo dizer à outra máquina que eu pulei. Se as coisas estiverem bem configuradas, o efeito deve ser idênticoli>Você está hospedando um jogo em um servidor, ou um dos clientes age como um servidor? Talvez valha a pena procurar usar um dos clientes como servidor (hospedado em um dos dispositivos) se o número de jogadores for muito pequeno.Conexões chupam no celular porque eu estou me movendo e os sinais das torres não são confiáveis. It's imprevisível e a latência pode subir pelo telhado. Você pode limitar a conexão a apenas estar em wifi? It's não é perfeito, mas melhora a estabilidade geral.Como I'já disse antes, você realmente precisa ser preciso?>br>> Como você já disse, você tem um corredor sem fim. A menos que você esteja fazendo um atirador multiplayer, it's realmente não é muito necessário para ser exato. Na realidade, os jogos online são uma ilusão de jogo suave. Não há necessidade de precisão absoluta, desde que o utilizador interprete uma experiência de jogo suave. As coisas não são decididas na máquina local normalmente, mas sim pelo anfitrião do jogo de qualquer forma.
No cenário perfeito, temos uma latência absolutamente mínima e sem perda de pacotes. Mas quando nós não't, o que fazemos? Nós trapaceamos. It'é incrível a quantidade de interpolação e predicação que acontece nos bastidores, para que as coisas apareçam suaves. It'é um caos total no servidor quando cada jogador tem uma latência diferente, perda de pacotes, quedas na conexão, etc.
Em outras palavras, don'não tenha medo de enganar o jogador para que ele pense que as coisas estão indo bem, desde que as regras do jogo ainda sejam seguidas. Se o jogador estiver com 5 no x da sua posição real (na minha tela), talvez isso não seja muito ruim. Talvez estar 100ms atrás não seja muito ruim. Você pode decidir se essas discrepâncias são aceitáveis desde que as coisas ainda façam sentido, as coisas sejam justas e o jogo ainda faça parecer que é's sendo jogado em tempo real.
Artigos semelhantes
- Qual é o teu maior objectivo na vida neste momento? Qual é o seu maior objectivo na vida neste momento?
- Como dizer correctamente 'cc'ed neste email', 'cc'ed neste email' ou 'cc'ed neste email'
- Como construir um jogo multiplayer em tempo real para celular
- O que é mais difícil, o desenvolvimento de aplicações web ou móveis? O que é mais difícil, web ou desenvolvimento de aplicações móveis?