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)?
networking
multiplayer
server
java
Bart van Heukelom
fonte
fonte
Respostas:
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 :)
fonte
Em relação aos seus pontos de suporte a uma solução personalizada:
Como se trata de um jogo "simples, baseado em turnos", é improvável que o desempenho seja um problema.
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.
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.
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ê.
fonte
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.
fonte
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 .
fonte
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.
fonte
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/
fonte