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

Conception Web Discussion :

[Client/Serveur] Fonctionement des jeux en ligne ?


Sujet :

Conception Web

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Client/Serveur] Fonctionement des jeux en ligne ?
    Bonjour à tous !

    J'ai joué récemment à des jeux online basés sur des interfaces web (type Ogame ou LesRoyaumes, etc...).

    Je bosse dans le dév J2EE et je ne pense pas être trop neuneu :-S cependant, j'ai du mal à comprendre l'architecture de ce type de système ?

    Personnelement, je concevrait un batch qui tournerait à intervale régulier (c'est ainsi que travaillent les banques, où un grand nombre de paramètres externes influent sur chaque comptes).
    Mais ces jeux semblent vraiment être en temps réél, et dans ce cas, je ne vois pas comment un serveur pourrait réélement gérer simultanément autant de choses, sans être une usine à gaz...

    Quelqu'un a davantage de renseignements à ce sujet ? Ou un avis éclairé ?


    Merci,

    Vincent

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut Re: Fonctionement des jeux online ?
    Citation Envoyé par VincentVega
    je ne vois pas comment un serveur pourrait réélement gérer simultanément autant de choses, sans être une usine à gaz...
    qu'est ce que tu appelles "autant de choses" ?
    la plupart du temps, quand un joeur fait une action, cela modifie la base de données pour que les autres joeurs voyent le nouvel état du jeu et ainsi chaque joueur fait bouger le jeu

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je donne un exemple tiré de ogame.

    On peut lancer une attaque contre un ennemi. Voici ce que l'utilisateur voit :
    - On choisit la planète que l'on veut attaquer.
    - Cela déclenche un compte à rebours de quelques heures (qui correspond au temps que les vaisseaux spatiaux rejoignent la planète ennemie).
    - Lorsque le temps est écoulé, la bataille a lieu. L'utilisateur reçoit en temps réel des messages d'avancement (états des batailles).
    - Le résultat de la bataille rejaillit sur les ressources des 2 opposants.

    Et je ne vois pas trop comment coder cela ?


    Une idée qui m'est venue serait de calculer les résultats de la bataille dès le début (au moment de l'envoi des vaisseaux) et de jongler entre les dates de vie.

    Exemple :
    T = 0 : Ressources = X
    On lance une bataille, ce qui impliquera
    T = 100 : Ressources = X + Y

    Et lorsque l'utilisateur rafraîchit sa page :
    si T < 0 : rien
    si 0 < T < 100 : compte à rebours, messages pré-programmés selon le même système
    si T > 100 : bataille terminée

    J'imagine alors qu'il n'y a plus qu'un batch à développer pour effacer les lignes anciennes (ou pas, ce qui permet de garder un historique des actions).


    Qu'en pensez-vous ??


    Vincent

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par VincentVega
    Et lorsque l'utilisateur rafraîchit sa page :
    comme tu le dit c'est l'utilisateur qui rafraichis la page donc c'est lui qui déclenche la modification si T>100

  5. #5
    Membre averti

    Inscrit en
    Août 2005
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 220
    Points : 364
    Points
    364
    Par défaut Jeux online
    Effectivement, j'ai développé un jeu online et c'est le joueurs qui en rentrant sur une page ou en rafraichissant une page déclenche tout (y compris le nettoyage de la BDD et d'autres procédures de maintenance voire des procédures qui ne l'influence pas directement)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Euuuuh as-tu entendais parler des tâches crons ?
    C'est simplement des script qui sont lancés toutes les X minutes ou à telle heure. Cela sert énormément dans ce type de jeu.
    Exemple : toutes les heures je gagne X ressources. C'est un simple script qui met à jour la base de données.

    Car s'il fallait par exemple nettoyée la base et tout le bordel à chaque fois qu'un joueur tombe sur "une" page, le serveur ne supporterait pas.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Est-ce que la gestion avec une date nu suffit pas pour un petit jeu comme ogame, au lieu de faire tourner des tâches Crons sur le serveur, il suffit de calculer la dernière date de calcul des ressources, et lors de la prochaine connexion ou rechargement d'une page, calcul sur la date, il s'est écoulé X min, si tu es sensé gagner Y ressources / min le calcul est direct.
    Qu'en pensez-vous ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Beh ça, c'est chacun sa stratégie
    Mais l'objectif principal est de faire un jeu "léger" qui puisse supporter un grand nombre de joueurs.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    "et lors de la prochaine connexion ou rechargement d'une page, calcul sur la date"

    ca ok .... mais vous avez pas penser a si un joueur adverse venais a attaker la planete .... ^^
    ca changerais tout
    mais bon apres cela depend des objectifs du jeu , je pense notament aux satellites solaire.... (ca tien aussi compte de la production et justement une attake pourrai faire basculer cette derniere

    :p

  10. #10
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Moi, la question que je me suis posé la poremière fois que j'ai joué à Ogame, c'est de savoir : c'est quoi leur BDD ?!!!!

    MySQL ?!!!!

    Actuellement, Ogame c'est 45 mondes, composés de 10000 joueurs chacuns.... Ce doit être un peu chaud de gérer tous ca !!!!

    Et dire que c'est une boite allemande qui a fait ca...... Ils sont méga fort les allemands en PHP, et Open Source en générale !!!!
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  11. #11
    Membre éclairé
    Avatar de marabout
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Août 2006
    Messages
    650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Learning

    Informations forums :
    Inscription : Août 2006
    Messages : 650
    Points : 852
    Points
    852
    Par défaut
    Expérience:
    J'ai développé un jeu online qui a bien marché...

    Nous l'avons fait en asp avec SQL serveur.

    Le système était effectivement des requêtes faites par l'utilisateur à chaque connexion: cela faisait pas mal de requêtes sur le serveur mais il tenait très bien le coup, le problème fut le fichier log (nous avons du parametrer un backup toutes les heures de ce fichier pour ne pas qu'il explose ).

    Allègement: en utilisant un fichier "temporaire" (lié aux sessions) en xml, on peut baisser grandement le taux de requêtes tout en gardant le temps réel par joueur (mais les requêtes restent indispensables quand il s'agit de collaboration entre joueurs).

  12. #12
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    OUais, le XML est une bonne solution alternative pour les données "temps réel", ou bien pas trop importante.

    Et puis si "un serveur" ne suffit pas, il suffit de faire du clustering, et là les performances reppartent !!!!

    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

Discussions similaires

  1. [XL-2010] Selectionner une cellule vide en fonction des colonnes et lignes remplies
    Par h12enri dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/03/2013, 13h00
  2. Réponses: 6
    Dernier message: 15/01/2009, 16h59
  3. Réponses: 5
    Dernier message: 21/12/2007, 08h24
  4. client serveur avec des mailslots
    Par oclone dans le forum Développement
    Réponses: 3
    Dernier message: 26/12/2006, 17h29
  5. Réponses: 2
    Dernier message: 26/12/2006, 17h03

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