Qué plataforma de servidor elegir [cerrado]

8

Voy a escribir un servidor para un multijugador en línea con estos requisitos:

  • Juego basado en turnos bastante simple (piense en un juego de cartas) que se juega completamente en el servidor (razones de seguridad)
  • Debe poder ejecutar múltiples juegos (mesas) con 4 jugadores por mesa, pero no se requiere un sistema de lobby (otro servidor se encarga de eso)
  • Puede soportar tantos jugadores a la vez como sea posible; Podría necesitar múltiples servidores
  • Chat entre jugadores
  • Conexión de socket a un cliente Flash / AIR
  • Debe poder comunicarse con otros servidores (para cuentas de jugador y demás)

Ahora, estoy considerando dos opciones:

  • Smartfox (o equivalente)
  • Una solución Java personalizada en algo como Tomcat

¿Por qué Smartfox?

  • Maneja múltiples salas y chatea de forma nativa
  • Presumiblemente tiene soluciones para problemas de juego multijugador bien conocidos.

¿Por qué personalizado?

  • Smartfox tiene muchas funciones innecesarias, malas para el rendimiento
  • Smartfox se comunica con un formato basado en XML, podría usar uno binario más eficiente.
  • No sé si ejecutar el modelo de juego completo en el servidor es conveniente con el mecanismo de extensión de Smartfox
  • Múltiples salas y chat son fáciles de reimplementar
  • Tomcat o un contenedor ligero es más fácil de implementar que Smartfox
  • Mejor soporte IDE para desarrollar en Tomcat (implementación automática, etc.)

¿Qué piensas? ¿Son correctas mis suposiciones? ¿Tienes algo que añadir? ¿Qué opción debo elegir (o tal vez una completamente diferente)?

Bart van Heukelom
fuente
Tal vez me estoy perdiendo algo, pero un "juego de cartas" es tan simple que podrías escribirlo desde cero en un tiempo trivial, y el rendimiento nunca debería ser un problema.
o0 '.

Respuestas:

3

Definitivamente iría con una solución personalizada: aunque puede perder algo de tiempo a corto plazo, definitivamente se escalará mejor si lo necesita, además la experiencia que obtenga será reutilizable de forma masiva para sus próximos juegos. BlazeDs suena como una herramienta excelente para sus necesidades, pero reescribir un servidor de juegos Java desde cero no es un gran esfuerzo, utilizando, por ejemplo, Netty y Protobuf :)

Axelle Ziegler
fuente
¿Qué es 'Netty and Protobuf'?
Quazi Irfan
2
Netty , Protobuf (de los Googles)
Richard Marskell - Drackir
5

Con respecto a sus puntos en apoyo de una solución personalizada:

Smartfox tiene muchas funciones innecesarias, malas para el rendimiento

Como esto es para un juego "simple, basado en turnos", es poco probable que el rendimiento sea un problema.

Smartfox se comunica con un formato basado en XML, podría usar uno binario más eficiente.

Nuevamente, para los juegos simples basados ​​en turnos, la facilidad de desarrollo puede tener prioridad sobre la eficiencia del formato, por lo que, a menos que desee desarrollar un formato binario eficiente, no lo haga.

Múltiples salas y chat son fáciles de reimplementar

Esta no es una buena razón para elegir implementar esta funcionalidad por su cuenta. Es algo que es reconfortante saber si decides seguir este camino.

Tomcat o un contenedor liviano es más fácil de implementar que Smartfox. Mejor soporte IDE para desarrollar en Tomcat (implementación automática, etc.)

Debe sopesar cuánto tiempo ahorra desarrollando una solución personalizada e implementándola rápidamente, en lugar de utilizar una solución existente y posiblemente realizar una implementación más larga. Lo más probable es que el tiempo de desarrollo compensará los pequeños beneficios que brinda una implementación más rápida / fácil.

Para resumir: recomiendo usar una solución existente, si es posible. Es probable que te ahorre mucho tiempo. En cuanto a qué solución preexistente, depende de usted.

Janis Kirsteins
fuente
Con respecto a su punto de rendimiento: Sí, el juego es simple, pero tendrá que admitir medio millón de jugadores en el menor número de servidores posible (si el cliente lo desea)
Bart van Heukelom
¿Medio millón de jugadores simultáneos? Parece que el comentario de Google App Engine merece una reflexión adicional. Eso podrá escalar de prototipo a despliegue completo con nada más que una factura más grande.
drxzcl
@drxzcl tiene razón. El motor de aplicaciones de Google es ideal para juegos por turnos por razones de escalabilidad.
AturSams
3

Habiendo usado tanto SmartFox como ElectroServer bastante, siempre recomiendo ElectroServer. Hace todo lo mismo que SmartFox, pero es un poco más sólido e incluye soporte binario.

Iain
fuente
1
¿Qué quieres decir con soporte binario?
user3689
2

Recomiendo encarecidamente mirar el proyecto Google App Engine .

Tanto por alojamiento como por razones técnicas. Si su juego no es rápido, entonces ese debería ser un buen lugar para comenzar y funcionar, y tener el alcance para escalar.

El código puede estar en Python o Java.

Neptune's Pride está en Google App Engine. Vea una entrevista con el desarrollador aquí .

Kimau
fuente
3
Sin embargo, no parece que sea compatible con sockets, solo HTTP
Bart van Heukelom
2

Echa un vistazo al siguiente servidor de juegos pequeños . Es compatible con un protocolo binario. Nota: ¡escrito por mí! Tiene soporte TCP y UDP, usa jetlang para mensajes extremadamente rápidos en vm.

Abraham Menacherry
fuente
2

Realmente deberías buscar en Firebase, un servidor Java de código abierto para juegos de varios jugadores.

En comparación con Smartfox, Firebase utiliza un protocolo binario, no está repleto de funciones y tiene un alto rendimiento.

Si ejecuta su propio sistema, tendrá que ocuparse de todo, desde el manejo de los sockets hasta el manejo de la concurrencia. Con Firebase, tienes garantizada una acción a la vez, por habitación.

Nota : Firebase adquirió Google y ya no tiene la opción de código abierto.

Compruébalo: http://www.cubeia.org/

Perezoso
fuente