Pergunta

Eu estou planejando construir um pequeno jogo multiplayer que pode ser executado como um applet java ou um arquivo flash no navegador da web. Eu não fiz qualquer servidor programação antes, então eu estou querendo saber que tipo de arquitetura de servidor que eu deveria ter.

Vai ser fácil para mim criar perl / php arquivos no servidor, o que os java / flash contatos código para atualizar a posição do jogador / ações, etc. Mas eu estou pensando se eu deveria ter um host dedicado , qual sistema operacional para uso, qual banco de dados, etc. Além disso, a quantidade de largura de banda utilizada e escalabilidade é uma consideração.

Outra opção poderia estar usando um sistema de nuvem de hospedagem (em oposição a um servidor dedicado), para que eles iriam cuidar de adicionar máquinas adicionais como o jogo cresce. Enquanto cada servidor correu o núcleo perl / php arquivos de atualização do banco de dados, ele deve funcionar bem.

No entanto, outra opção poderia estar usando Google app engine.

Qualquer pensamento sobre a arquitetura de servidor, escolha OS / banco de dados, e se o meu método de usar perl / php / python scripts para programação do lado do servidor é uma boa, será apreciada!

Foi útil?

Solução

Você precisa esclarecer mais sobre o jogo, e pensar mais sobre a arquitetura ao invés de detalhes específicos de implementação.

A principal questão é se o jogo vai ser em tempo real, baseado em turnos, ou longo atraso com base (por exemplo, xadrez e-mail). Outra questão é se ou não você está indo para estar congelando o estado para os carregamentos posteriores.

Eu recomendo descobrir antecipadamente se ou não todos os jogadores no mesmo jogo vai ser hospedado no mesmo servidor (por exemplo, 1000 de 4 jogos disputados jogador comparação com 4 partidas de 1000 jogadores cada). Se possível, vá com o primeiro e vara de todos os que estão no mesmo jogo sob o mesmo servidor. Você terá um tempo duro o suficiente sincronizar vários clientes a um servidor, em vez de ter vários servidores contra o qual os jogadores são sincronizados. Caso contrário, a definição de consistência é problemático.

Se possível, tenha cada cliente comunicar com o servidor e, em seguida, o servidor distribuição de atualizações para os clientes. Desta forma, você tem um "estado oficial", e pode fazer uma variedade de resoluções de conflitos, fantasmas, etc. Peer to Peer dá melhor desempenho em jogos mais rápidos (por exemplo, FPSs), mas introduz toneladas de problemas.

Não consigo para a vida de me ver qualquer razão convincente para fazer isso e Perl ou PHP. Seu jogo não é baseado na web, por que escrevê-lo em uma linguagem orientada a web? Use o bom J2EE velho para o servidor, e trocar dados com seus clientes via XML e AJAX. Se possível, executar um aplicativo Java real sobre clientes, em vez de servlets. Você pode então beneficiar do uso de JMS, que terá uma enorme carga fora de sua volta ao abstrair muitos dos detalhes de comunicação para você.

Outras dicas

Para a sua arquitetura de servidor, você pode ter um olhar para Três Anéis código . Eles escreveram uma série de jogos muito escaláveis ??em Java (ambos cliente e do lado do servidor).

Eu também iria desencorajar de utilizar PHP, também HTTP is not a melhor idéia, uma vez que é apátrida e falador. Eu estava trabalhando há algum tempo na companhia atualmente desenvolvendo jogo multiplayer realmente enorme. O back-end é JVM simples (sendo conectado através tomcat por vários clientes e a partir de telemóveis uma por cliente). Então eu sei que os menos dados que você transferir os buffers menores que você precisa no servidor -> mais clientes em uma máquina e também um pouco mais rápido respostas. Considere também a segurança, https é muito caro, especialmente se você precisa para gráficos de transferência e sons. protocolo Binnary de seu próprio com o recipiente cliente não-navegador faria o melhor (boa escolha é o protocolo comutável para o tempo de depuração de desenvolvimento). Talvez parece complicado, mas não é.
@Sarah boa dica, graças também;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top