IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Jeu (pong ?) en XNA et en LIGNE ! Besoin d'aide pour le fonctionnement


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut Jeu (pong ?) en XNA et en LIGNE ! Besoin d'aide pour le fonctionnement
    Bonsoir a tous !

    Voilà, j'aimerais créer (pour m'entraîner et découvrir un peu XNA) un Pong en ligne.

    J'ai plusieurs concepts dans ma tête et je sais le faire en local (contre un PC)

    Maintenant, j'aimerais passer à l'étape suivante qui consiste à faire jouer un ami (pas forcement en LAN) contre moi.

    En quelque sorte, qu'on se retrouve dans une sorte de room et qu'on puisse jouer l'un contre l'autre sans être sur le même réseau.

    Alors voilà ma question, auriez-vous, sous la main ou autre, des tutos ou de l'aide pour m'expliquer quel est le meilleur moyen de faire communiquer deux joueurs entre eux (ou plus) et surtout pouvoir envoyer des infos, comme par exemple, faire un chat, envoyer la position de la raquette, etc.

    Je n'ai jamais fait quelque chose en ligne, donc je n'ai aucune idée de comment le flux d'info fonctionne.

    C'est pourquoi je m'adresse a vous !

    Merci de votre aide !

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    (pas exhaustif)

    sur ip tu peux envoyer des octets, vers une ip et un port
    dans la couche de base tu as le choix entre du tcp (réception ordonnée et sure) ou de l'udp (l'inverse, mais plus rapide, genre pour du streaming vidéo)
    après par dessus il y a des surcouches comme de l'udp avec les avantages du tcp (rudp peut etre, je sais plus, mais c'est une surcouche logiciel de l'udp)

    le tcp est le plus courant pour des échanges sûr (en cas de perte de paquet, celui est renvoyé, et c'est géré nativement)
    en .net il y a la classe socket
    elle est pas spécialement pratique car très orientée bas niveau, donc ils ont fait aussi tcplistener (serveur) et tcpclient (client ^^)
    c'est un peu plus simple à comprendre mais sans plus
    une fois la connexion établie tu peux envoyer des octets

    des octets certes, mais l'octet est à la base de tout
    bitconverter permet d'obtenir les octets d'un int32 par exemple, pour un string, ca dépend de l'encodage (ascii, utf8 ...) et il y a system.text.encoding qui permet la transformation string<=>bytes

    il y a quinze ans on se fabriquait donc un protocole de communication pour dire que pour faire telle chose on envoyait tels octets (ou tel string), avec des paramètres si nécessaires
    http est un protocole sur du tcp/ip par exemple
    on voit écrit en clair GET machin ... et en cas de variables il y a un content-length qui dit à celui qui recoit la trame combien d'octets il doit lire ensuite
    les normes de diagloques sont souvent basés sur des début de trame, fin de trame et/ou envoi du contenu


    après il y a eut des tas de surcouches, WCF est la plus récente en .net
    là tout le protocole de dialogue est encapsulé, tu exposes une interface, tu demandes la connexion et récupère une instance
    et quand tu appelles une fonction sur l'instance côté client, c'est le serveur qui va exécuter le code de son instance à lui, et retourner la réponse à l'appelant, donc c'est très transparent dans le code client
    comme toutes les surcouches il peut y avoir des inconvénients
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    et si tu veux regarder un truc, c'est cette librairie : lidgren...

    https://code.google.com/p/lidgren-network/

    Souvent utilisée dans les jeux...

    Après, les jeux en ligne fonctionnent très souvent sur le système :

    Serveur <=> Client...

    Avec connexion en TCP ou UDP si on peut perdre des paquets...

    après, qui dit réseau, dit parfois lag.. donc, pas mal de jeux utilisent des technos d'envoie d'une coordonnée et d'un vecteur de direction, accelération, etc.. comme ça,
    même si on perds des trames réseaux, on n'est pas complètement perdu et surtout on connait la trajectoire de l'objet envoyé...

    Franchement, des exemples des serveurs en TCP / UDP avec TCPListener et autres se trouvent "à la pelle" sur le net et en .Net
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    j'ai oublié de préciser qu'avec le ping de l'adsl tu peux oublier pong
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Besoin d'aide pour faire fonctionner un script Perl pour un photomaton sous Linux.
    Par loran42o dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 29/05/2013, 09h31
  2. [Débutant] Besoin d'aide pour modifier un jeu
    Par stoff66 dans le forum Assembleur
    Réponses: 9
    Dernier message: 31/08/2006, 18h24
  3. Besoin d'aide pour traduire ces quelques lignes
    Par sircus dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2006, 15h11
  4. Besoin d'aide pour faire fonctionner un Script d'upload d'images
    Par PaoOo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 15/06/2006, 21h24
  5. Besoin d'aide pour un projet de jeu en ligne
    Par FLEO dans le forum Projets
    Réponses: 1
    Dernier message: 21/10/2005, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo