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

Développement Discussion :

architecture serveur multithread


Sujet :

Développement

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut architecture serveur multithread
    bonjour, toujours dans la réalisation d'un prototype de mmo, j'ai une petite question relative à l'architecture à utiliser.
    -l'architecture est multithread

    apres avoir reflechi un peu, je penche pour un type de conception particulier:

    -si on lui demande rien, le serveur n'envoit rien au client
    -toutes les 30 ms (temps estimé pour avoir une reactivité potable),
    le client envoit au serveur une chaine contenant les differentes actions en cours par exemple:
    attaque monstre_5:send_message "coucou c'est moi"

    et le serveur split la chaine (pour eviter les envoi multiples) et agit en .consequence:
    -attaque monstre_5 => deplacement vers le monstre
    -send_message "coucou c'est moi" => envoi du message

    et egalement les evenements non directement crés:
    -un pj s'approche, un autre joueur a envoyé un message...

    et renvoi au donc client les maj:
    x+5:y+3:pj_13245.x-10:pj_13245.y+6:msg"coucou c'est moi":msg"message du joueur) .....

    et donc le client affiche le resultat:
    -deplacement de notre perso de 5 vers x et de 3 vers y
    le joueur (id13245) se deplace aussi et l'affichage des 2 messages.


    ah oui j'ai oublié de préciser, mais dans cet exemple, le caractere ":" sert à delimiter les differents état/actions, en effet je pense qu'il sera moins lourd d'envoyer une chaine contenant toutes les actions a accomplir d'un coup plutot que de faire un send par action.


    Voila dites moi ce que vous pensez de mon idée de réalisation et/ou si vous voyez des ameliorations à y apporter, votre aide me sera précieuse.



    [edit] je rajoute une petite précision pour le code en lui même je pensais à une structure de ce style en pseudo code:

    server:
    boucle dans le thread correspondant au client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while(condition){
       recv(char)
       vector<string> actions = fonction_qui_split(char)
       for (i 0->action.size){
          if (action[i] == "deplacex") => deplacer
          elseif (action[i] == "vendre") =>action_de_vente()
          ....
       }
       send(resultat_client) //contient les action a effectuer coté client
                                    //et les nouvelles informations
    }
    et coté client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    deplace(x,y){
       add_action("x+",x)
    }
    
    attaquer_mob(mob_id){
       add_action("attaquer ", mob_id)
    }
    
    add_action(string, parametre){
       static action +=":" + string + parametre
    }
    boucle d'envoi des infos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while(playing){
       send(action)
       recv(resultat)
    
    //interpretation du resultat (de la meme maniere que le serveur)
    }
    voila c'est du pseudo code, le problème n'est pas la, je me demande juste si cette structure est viable

    je precise que coté serveur l'interface graphique est threadé et s'execute en paralelle pour eviter un jeu en sacade.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    personne n'a des idées la dessus?

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    développe un protocole de communication plus claire entre ton (tes) serveurs et et tes clients

Discussions similaires

  1. Arrêt d'un serveur multithread
    Par bambou dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 07/07/2010, 16h04
  2. conception serveur multithread
    Par nivose110 dans le forum Réseau
    Réponses: 12
    Dernier message: 17/07/2006, 16h43
  3. Question Serveur Multithread
    Par Mr_Chut dans le forum Réseau
    Réponses: 10
    Dernier message: 09/06/2006, 17h27
  4. Réponses: 5
    Dernier message: 11/01/2006, 07h58

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