7
votes

Datasnap sera-t-il approprié pour un jeu multijoueur bi-directionnel intensif à la non-communication?

Je construis une petite multipliette qui aura besoin de ce qui suit:

  • Il doit être écrit à Delphi
  • doit prendre en charge la connexion Internet (non seulement LAN)
  • Travailler sur http
  • Support du cryptage des paquets (il peut être personnalisé)
  • être capable d'envoyer des commandes au serveur
  • être capable de recevoir des réponses du serveur
  • être capable de connecter jusqu'à 8 joueurs à un serveur
  • Soyez capable de passer des objets complexes (peut-être JSON Serialized) sur les serveurs

    Pensez-vous que le nouveau Delphi 2010 DataSnap peut être utilisé avec succès dans ce scénario ou devrais-je aller avec le vieux tsocket uni?


0 commentaires

3 Réponses :


10
votes

DataSnap peut faire tout ce que vous avez énumérés ci-dessus:

  1. DataSnap est écrit à Delphi.
  2. Il peut se connecter via http via n'importe quelle connexion, local, réseau ou à distance.
  3. Il fonctionnera sur HTTP, y compris la prise en charge de la tunneling de la connexion HTTP
  4. Vous pouvez filtrer le flux de données, mais vous le souhaitez. Le produit comprend un filtre de compression. Daniele Teti a écrit des Très belles filtres de chiffrement .
  5. Vous pouvez envoyer des commandes au serveur en appelant les méthodes de serveur
  6. Vous pouvez recevoir une réponse du serveur via Callbacks Server
  7. Vous pouvez facilement connecter huit personnes à un serveur
  8. Vous pouvez passer des objets JSON. C'est le type par défaut envoyé entre client et serveur.

    Donc pour répondre à votre question, oui, je pense que le nouveau Delphi 2010 DataSnap peut être utilisé dans votre scénario.


1 commentaires

Attention à ce que les "très belles filtres" ci-dessus ne soient pas sécurisés, car vous auriez besoin d'un moyen sûr d'échanger la clé de session.



3
votes

Comme Nick dit, la réponse est oui.

Bob Swart a écrit un livre blanc et produit des vidéos sur la mise à jour Datasnap dans Delphi 2010 qui peut vous aider à démarrer.


0 commentaires

1
votes

Si votre jeu multijoueur n'envoie pas beaucoup de données HTTP et Datasnap peut fonctionner. Si vous avez besoin d'une communication rapide, j'utiliserais un protocole binaire UDP et personnalisé. Sauf si vous devez contourner un pare-feu d'entreprise qui arrête presque tout protocole, mais HTTP - et les entreprises n'aiment généralement pas les personnes qui jouent dans leurs heures de travail - un pare-feu bloque la connexion entrante, pas en cours. Juste le serveur a besoin de ports ouverts pour permettre aux clients de se connecter. Et j'éviterais également Json - si vous n'avez pas besoin d'interopérabilité, une sérialisation binaire est beaucoup plus rapide.


3 commentaires

Vous voulez dire que même utiliser le port 80 du réseau d'entreprise, le pare-feu peut bloquer la communication (être entrant)?


Un pare-feu géré correctement ne permettra pas de connecter une connexion entrante au port 80 mais pour les serveurs Web autorisés (généralement dans un DMZ ou similaire). Le client peut envoyer une requête HTTP aux serveurs Web extérieurs du port 80 et recevoir une réponse, mais un serveur à l'intérieur du NWTWork ne peut pas recevoir de demande à moins que le pare-feu le permet.


Vous avez raison, Afaik UDP n'est pas routable en dehors du réseau local (à moins que vous ne fassiez du complexe NAT), alors que http / TCP est. Pour la perspective de performance, je n'utiliserais jamais datasnap - mais ici, l'exigence est jusqu'à 8 clients. Dans ce cas, DataSnap le gérera de manière transparente.