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

Réseau et multijoueurs Discussion :

[Conception] Air Hockey multijoueur


Sujet :

Réseau et multijoueurs

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [Conception] Air Hockey multijoueur
    Bonjour,

    Je me suis lancé dans la réalisation d'un Air Hockey en réseau en langage C# + winform.

    Actuellement j'ai tout mon système de lobby qui est opérationnel. C'est à dire que les joueurs se connectent en TCP à un "serveur central", créent des salles, bavardent et quand tous les joueurs d'une salle sont prêts la partie peut se lancer.
    A partir de là, les joueurs se connectent automatiquement en UDP chez le joueur ayant créé la salle d'attente. Il peut y avoir de 2 à 6 joueurs.

    Et du coup je bloque un peu quant au fait que j'ai un client qui est également serveur. Est-ce que je lance le serveur et le client sur des threads séparés ou bien il y a moyen de se débrouiller dans la boucle de jeu pour faire quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(IsServer)
    {
    //Server stuff
    }
    En gros j'ai du mal à voir l'architecture de la chose, combien de threads je devrais faire (pour les clients : un thread d'écoute/écriture, deux threads distincts, seulement le thread principal...), si je dois essayer de fusionner au maximum le client/serveur ou au contraire faire en sorte que l'hébergeur soit un client comme un autre. Bref j'aimerais beaucoup avoir des retours d'expérience, des conseils/suggestions.

    Ci-dessous les activités que je pense nécessaire pour mon client/serveur :
    Boucle de jeu serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Server loop
    repeat {
    Reçoit input des joueurs
    applique la logique du jeu et met à jour l'état du jeu
    envoie les modifications aux joueurs
    }
    Boucle de jeu client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Client loop
    repeat {
        reçoit les inputs du client et du serveur
    On applique la logique du jeu pour mettre l'état du jeu à jour
        Envoie de la mise à jour au serveur
        output sons + graphismes
    }
    Je vais logiquement devoir m'attaquer au dead reckoning et à de la prédiction également, mais ce n'est pas ma priorité pour le moment.

    J'espère avoir réussi à m'expliquer à peu près clairement.

    Bonnes fêtes à tous et merci d'avance pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    tu peux faire comme tu indiques, un gros if(ishost), mais ça peut vite devenir lourdingue.
    Sinon, il n'y a normalement pas tant de différences que ça entre un host et un guest au final. Chacun a une partie qui stocke les infos du jeu (serveur) et qui les affiche (client).
    L'host lance LE serveur, et lance un client local qui s'y connecte.
    Les guest lancent uniquement le client et se connectent à l'host. Les guest peuvent aussi avoir un serveur local. Ca dépend de l'architecture global du projet.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Air-programming, un nouveau concept ?
    Par Sunchaser dans le forum La taverne du Club : Humour et divers
    Réponses: 11
    Dernier message: 13/07/2011, 15h02
  2. Réponses: 1
    Dernier message: 01/03/2008, 12h31
  3. Réponses: 8
    Dernier message: 30/11/2006, 18h01
  4. [Concept] Réplication
    Par melinda dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 31/03/2003, 17h29
  5. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16

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