2011-10-04 56 views
7

Tengo que implementar un simple juego de cliente-servidor en Java. Desafortunadamente, recién estoy comenzando con la programación de la red y tengo algunos problemas para elegir una solución adecuada.Juego cliente-servidor en Java con applets

Supongamos que estoy creando un juego de ajedrez donde dos clientes pueden conectarse al servidor, autenticarse con su nombre de usuario y contraseñas y jugar. Los clientes deben programarse como applets (clientes ligeros), pero no sé qué debería usar como servidor.

Es decir, he leído sobre varias posibilidades diferentes, como RMI, sockets, servlets, pero aún no sé cuál encaja con mis necesidades. Estoy un poco confundido porque no entiendo completamente cómo se llevará a cabo la comunicación.

¿Debo crear un servidor ejecutable que se ejecute todo el tiempo en el servidor y espere a los reproductores? Esto me parece una manera extraña. ¿O hay alguna forma más sencilla de hacerlo, por ejemplo, ¿Puedo hacer un servlet y ponerlo en el servidor Tomcat para que el servidor se ejecute solo si hay algún jugador? ¿Podría ese servlet comunicarse con applets (clientes) y viceversa? *

Estaría muy agradecido por algunos consejos.

Respuesta

3

puedo hacer que un servlet y lo puso en el servidor Tomcat para que el servidor se ejecute sólo si hay jugadores

ejemplo

El Tomcat correría de todos modos, de lo contrario los jugadores no podían conectarse a eso.

Lo que puedes hacer es proporcionar un servidor que comience una nueva instancia de juego cuando los jugadores se conecten. El servidor en sí debería ejecutarse siempre.

En términos de tecnología, te sugiero que uses lo que sea que te sientas cómodo. No le importa el rendimiento, pero intente y comience.

Así que si ya tiene un poco de conocimiento con una tecnología de comunicación, intente y use eso. Solo tenga en cuenta las limitaciones y las tenga en cuenta (por ejemplo, formatos de mensajes, comunicación push/pull, etc.).

0

Si está buscando un framework de aplicaciones de netwrok en Java, puede considerar leer acerca de Apache MINA. La documentación afirma que "ayuda a los usuarios a desarrollar fácilmente aplicaciones de red de alto rendimiento y alta escalabilidad". y tiene soporte para varios transportes como TCP/IP y UDP/IP a través de Java NIO. Resumen de características se puede ver here.

Mi experiencia personal con MINA es hasta ahora buena y utilizada en diversos proyectos. Una implementación se asemeja a su caso, no es un juego mulitplayer, pero involucra múltiples applets conectando un servidor. Encontré a MINA muy bueno en el manejo de múltiples sesiones. Lo hace muy bien. Además, es muy fácil de escalar y mantener el código. Fácil de agregar filtros y definir protocolos.

No hay. de buena tutorial available to jump start y la configuración inicial es muy fácil de hacer.

Sin embargo, como cualquier proyecto emergente de código abierto, también tiene sus problemas. Es decir: la comunidad en línea es pequeña y la documentación, aunque mejora rápidamente, es muy limitada.

Oficial user guide cubre la mayoría de los conceptos básicos y es un buen punto de partida si desea saber más.

0

Depende del tipo de juego que estés buscando.Los applets suelen ser una buena opción para presentar animaciones (completamente en Java) y accesibles desde un navegador. Los ejemplos del mundo real se desviarían hacia Flash para la presentación del cliente.

Si su juego es un juego de turno (ajedrez, cartas, etc.), puede implementar su lógica en forma de servlets o servicios web o ajax, con el uso adecuado de tablas o bases de datos para almacenar sesiones en vivo en el servidor . Si su juego está más involucrado en términos de experiencia del usuario (tome un ejemplo del tipo Need For Speed, por ejemplo), entonces crear un servidor personalizado tiene más sentido.

Cuestiones relacionadas