Qual plataforma de servidor escolher [fechada]

8

Vou escrever um servidor para um multiplayer online com estes requisitos:

  • Jogo baseado em turnos bastante simples (pense em um jogo de cartas) que é jogado inteiramente no servidor (razões de segurança)
  • Deve ser capaz de executar vários jogos (mesas) com 4 jogadores por mesa, mas nenhum sistema de lobby é necessário (outro servidor cuida disso)
  • Pode suportar o maior número possível de jogadores ao mesmo tempo; Pode precisar de vários servidores
  • Conversar entre jogadores
  • Conexão de soquete com um cliente Flash / AIR
  • Deve ser capaz de se comunicar com outros servidores (para contas de jogadores e outros)

Agora, estou considerando duas opções:

  • Smartfox (ou equivalente)
  • Uma solução Java personalizada em algo como o Tomcat

Porquê Smartfox?

  • Ele lida com várias salas e conversa nativamente
  • Presumivelmente, possui soluções para problemas conhecidos de jogos multiplayer

Por que personalizado?

  • O Smartfox possui muitas funções desnecessárias, ruins para o desempenho
  • Smartfox se comunica com um formato baseado em XML, eu poderia usar um formato binário mais eficiente.
  • Não sei se a execução de todo o modelo de jogo no servidor é conveniente com o mecanismo de extensão da Smartfox
  • Várias salas e bate-papo são fáceis de reimplementar
  • O Tomcat ou um contêiner leve é ​​mais fácil de implantar do que o Smartfox
  • Melhor suporte de IDE para desenvolvimento no Tomcat (implantação automática, etc.)

O que você acha? Minhas suposições estão corretas? Você tem algo a acrescentar? Que opção devo escolher (ou talvez uma totalmente diferente)?

Bart van Heukelom
fonte
Talvez esteja faltando alguma coisa, mas um "jogo de cartas" é tão simples que você pode escrevê-lo do zero em um período trivial e o desempenho nunca deve ser um problema.
o0 '.

Respostas:

3

Definitivamente, eu escolheria uma solução personalizada: mesmo que você perca algum tempo no curto prazo, ela será dimensionada melhor se você precisar, além da experiência adquirida, que será massivamente reutilizável para os próximos jogos. O BlazeDs parece uma excelente ferramenta para suas necessidades, mas reescrever um servidor de jogos Java a partir do zero não é um grande esforço, usando, por exemplo, Netty e Protobuf :)

Axelle Ziegler
fonte
O que é 'Netty and Protobuf'?
Quazi Irfan 6/03/12
2
Netty , Protobuf (dos Googles)
Richard Marskell - Drackir 6/12/12
5

Em relação aos seus pontos de suporte a uma solução personalizada:

O Smartfox possui muitas funções desnecessárias, ruins para o desempenho

Como se trata de um jogo "simples, baseado em turnos", é improvável que o desempenho seja um problema.

Smartfox se comunica com um formato baseado em XML, eu poderia usar um formato binário mais eficiente.

Novamente, para jogos simples baseados em turnos, a facilidade de desenvolvimento pode facilmente ter prioridade sobre a eficiência do formato, portanto, a menos que você deseje desenvolver um formato binário eficiente - não.

Várias salas e bate-papo são fáceis de reimplementar

Esse não é um bom motivo para optar por implementar essa funcionalidade por conta própria. É apenas algo que é reconfortante saber, se você decidir seguir esse caminho.

O Tomcat ou um contêiner leve é ​​mais fácil de implantar do que o Smartfox. Melhor suporte de IDE para desenvolvimento no Tomcat (implantação automática, etc.)

Você precisa pesar quanto tempo economiza desenvolvendo uma solução personalizada e implantando-a rapidamente, em vez de usar uma solução existente e possivelmente fazendo uma implantação mais longa. As chances são de que o tempo de desenvolvimento compensará os pequenos benefícios que a implantação mais rápida / fácil oferece.

Para resumir - eu recomendo usar uma solução existente, se possível. É provável que você economize muito tempo. Quanto a qual solução pré-existente, é com você.

Janis Kirsteins
fonte
Em relação a seu ponto de desempenho: Sim, o jogo é simples, mas terão de apoiar meio milhão de jogadores no menor número de servidores quanto possível (se o cliente tiver o seu desejo)
Bart van Heukelom
Meio milhão de jogadores simultâneos? Parece que o comentário do Google App Engine vale mais uma reflexão. Isso poderá ser escalado desde o protótipo até a implantação completa, com nada além de uma conta maior.
precisa saber é o seguinte
@drxzcl Está certo. O Google App Engine é ótimo para jogos baseados em turnos por motivos de escalabilidade.
AturSams 3/15
3

Depois de usar o SmartFox e o ElectroServer amplamente, eu sempre recomendo o ElectroServer. Ele faz as mesmas coisas que o SmartFox, mas é um pouco mais sólido e inclui suporte binário.

Iain
fonte
11
o que você quer dizer com suporte binário?
User1991
2

Eu recomendo fortemente olhar o projeto do Google App Engine .

Por razões técnicas e de hospedagem. Se o seu jogo não for rápido, então esse deve ser um bom lugar para começar, começar a funcionar e ter o escopo para escalar.

O código pode estar em Python ou Java.

O orgulho de Netuno está no Google App Engine. Veja uma entrevista com o desenvolvedor aqui .

Kimau
fonte
3
Não parece que ele suporta soquetes porém, única HTTP
Bart van Heukelom
2

Dê uma olhada no seguinte servidor de jogos netty . Ele suporta um protocolo binário. Nota: Escrito por mim! Possui suporte a TCP e UDP, usa jetlang para ser extremamente rápido em mensagens vm.

Abraham Menacherry
fonte
2

Você realmente deve procurar no Firebase, um servidor de jogos multiplayer Java de código aberto.

Comparado ao Smartfox, o Firebase usa um protocolo binário, não está cheio de recursos e tem alto desempenho.

Se você criar seu próprio sistema, terá que cuidar de tudo, desde o manuseio de soquetes até o manuseio de simultaneidade. Com o Firebase, você garante uma ação de cada vez, por quarto.

Nota : o Firebase adquirido pelo Google e não possui mais a opção de código aberto.

Confira: http://www.cubeia.org/

Preguiçoso
fonte