¿Datasnap será apropiado para hasta 8 juegos multijugador bidireccionales intensivos sin comunicación?

Estoy construyendo un pequeño multijugador que necesitará lo siguiente:

  • debe estar escrito en Delphi
  • debe admitir conexión a Internet (no solo LAN)
  • trabajar sobre HTTP
  • admitir algún cifrado de los paquetes (puede ser personalizado)
  • ser capaz de enviar comandos al servidor
  • ser capaz de recibir respuestas del servidor
  • ser capaz de conectar hasta 8 jugadores a un servidor
  • ser capaz de pasar objetos complejos (tal vez JSON serializados) a los servidores

¿Crees que el nuevo Delphi 2010 Datasnap se puede usar con éxito en este escenario o debo ir con el viejo TSocket simple?

preguntado el 02 de diciembre de 09 a las 19:12

3 Respuestas

DataSnap puede hacer todo lo que ha enumerado anteriormente:

  1. DataSnap está escrito en Delphi.
  2. Puede conectarse a través de HTTP a través de cualquier conexión, local, de red o remota.
  3. Funcionará a través de HTTP, incluido el soporte para tunelizar la conexión HTTP.
  4. Puede filtrar el flujo de datos como desee. El producto incluye un filtro de compresión. Daniele Teti ha escrito algunas muy buenos filtros de encriptación.
  5. Puede enviar comandos al servidor llamando a los métodos del servidor
  6. Puede recibir una respuesta del servidor a través de devoluciones de llamada del servidor
  7. Puede conectar fácilmente ocho personas a un servidor
  8. Puede pasar objetos JSON. Ese es el tipo predeterminado enviado entre el cliente y el servidor.

Entonces, para responder a su pregunta, sí, creo que el nuevo DataSnap de Delphi 2010 se puede usar en su escenario.

Respondido el 03 de diciembre de 09 a las 17:12

Tenga en cuenta que los "filtros muy agradables" anteriores no son seguros en absoluto, porque necesitaría una forma segura de intercambiar la clave de sesión. - usuario160694

Como dijo Nick, la respuesta es sí.

Bob Swart escribió un libro blanco y produjo algunos videos sobre la actualización DataSnap en Delphi 2010 que puede ayudarlo a comenzar.

Respondido el 02 de diciembre de 09 a las 23:12

Si su juego multijugador no envía muchos datos, HTTP y Datasnap pueden funcionar. Si necesita una comunicación rápida, usaría UDP y un protocolo binario personalizado. A menos que tenga que eludir un firewall de la empresa que detiene casi cualquier protocolo excepto HTTP, y a las empresas generalmente no les gusta que la gente juegue en sus horas de trabajo, un firewall bloquea la conexión entrante, no la saliente. Solo el servidor necesita puertos abiertos para permitir que los clientes se conecten. Y también evitaría JSON: si no necesita interoperabilidad, una serialización binaria es mucho más rápida.

Respondido el 03 de diciembre de 09 a las 08:12

¿Quiere decir que incluso usando el puerto 80 en la red empresarial, el firewall puede bloquear la comunicación (entrante)? - Señor de Gad D

Un cortafuegos administrado correctamente no permitirá la conexión entrante al puerto 80 sino a los servidores web permitidos (generalmente en una DMZ o similar). El cliente puede enviar solicitudes HTTP a servidores web externos en el puerto 80 y recibir una respuesta, pero un servidor dentro de la red no puede recibir solicitudes a menos que el firewall lo permita. - usuario160694

Tiene razón, AFAIK UDP no se puede enrutar fuera de la red local (a menos que haga un NAT complejo), mientras que HTTP/TCP sí lo es. Desde la perspectiva del rendimiento, nunca usaría DataSnap, pero aquí, el requisito es de hasta 8 clientes, por lo que en este caso, DataSnap lo manejará sin problemas. - Arnaud Bouchez

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.