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 2D, 3D et Jeux Discussion :

[Temps réél] Jeux web mmo


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut [Temps réél] Jeux web mmo
    bonjour,

    J'aimerai savoir quel est la méthode pour avoir du temps réél que l'on trouve dans les jeux sur internet tel que ogame, exile, xwar, ...

    Pour ceux qui ne connaissent pas ce sont des jeux dont les partie peuvent durer plusieurs années et on lance des actions elle s'exécute au bout de plusieurs heures,jours, ...
    Par exemple sur une page un joueur demande a une de ses flotte de se deplacer d'un point A a un point B et a ce point B il y aura un combat entre sa flotte et une autre flotte... comment faire pour que cette action soit exécuté a l'instant t ou la flotte arrive en B ? est ce qu'il faut qu'un thread tourne en permanence et analyse les actions pour les exécuter quand il le faut ? (c surement faisable en .net ou java mais en php j ai des doutes ...)

    Merci pour ceux qui me donneront leurs idées

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Je n'ai pas la réponse précisément mais je peux proposer une idée : quand une action est demandée (attaquer le bateau), tu en déduis les évènements qui en découlent ainsi que leur date. Tu postes cela à un gestionnaire d'évènements qui se réveille à chaque échéance pour signaler que c'est l'heure.

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    hummm un scheduler en fait...

    vu que la techno est .net (cad le plus orienté evenemenciel) cela a de forte chance d'etre possible

    mais pour ce qui est de ce qui evolu tout le temps ? comme par exemple le nombre d'habitant qui s'augmente de 5% par jour par exemple ? comment rendre cette donnée "temps réél" ?

  4. #4
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    De facon générale, je pense qu'il y a plusieurs softs en action:
    - un serveur, lié à une base de données, qui gère les évènements et change les états d'elements de la bdd,
    - une partie cliente, qui se charge d'afficher et d'écrire des changements d'états d'elements dans la bdd.
    Ces 2 partie speuvent écrits dans 2 languages différents, vu que leur point de communication sera la bdd.

    Grosso modo, du moins, c'est la facon dont je gérais le tout personnellement.

  5. #5
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Et pour l'exemple de l'accroissement de la population tous les jours, il suffit de coder dans le gestionnaire de l'évènement "accroissement" le postage de l'évènement lui-même pour dans un jour.

    Après pour des autres évènements moins régulier il faut évidement prévoir la possibilité de débrayer le postage automatique.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    J'ajoute que certains hébergeurs (c'est le cas de online.net) te permettent de créer des actions régulières, sous la forme de scripts PHP qui seront appelés à heure fixe.

    Toutefois, pas besoin de ça pour donner l'illusion qu'une action est exécutée a une date précise. Si une action concerne deux joueurs A et B et que le résultat de cette action doit être calculé pendant que les deux joueurs ne sont pas connectés, il suffit de déporter le calcul du résultat au moment ou l'un des deux joueur se connecte. Si l'un des joueurs ou les deux sont connectés au moment ou l'action doit être effectuée, il suffit de la calculer au moment sur le premier chargement de page (consécutif à l'action) effectué par l'un ou l'autre.

    Ca ne sert à rien de calculer quelque chose qui n'est pas utilisé - autant attendre le plus possible avant de faire le calcul.

    Maintenant, si tu as accès au serveur et si tu peux y placer tes programmes, cela peut aider : dans ce cas, tu peux effectivement créer un programme de monitoring qui va effectuer les actions à la date prévue. Pas besoin que ce programme ait une quelconque interaction avec le serveur HTTP - il lui suffit de pouvoir accéder à la base de donnée. Si tu ne peux pas poser un programme sur le serveur et si tu dispose d'une connection internet 24/24, tu peux toujours essayer de faire un programme qui tourne en tâche de fond sur ton PC (il se connecte à la base de donnée du serveur, effectue les calculs nécessaires et renvoie le résultat au serveur). Enfin, si ce n'est pas possible (accès au serveur de la BDD uniquement depuis le serveur HTTP), tu peux écrire une série de services web (des scripts PHP qui renvoie des fichiers XML; pas compliqué) pour effectuer ces tâches, et écrire un programme sur ton PC qui s'interface avec ces services web).

    Enfin bref : il y a des tonnes de possibilités pour obtenir le résultat souhaité

  7. #7
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    merci pour toutes vos réponses.

    @valefor : non la problématique n'est pas la même qu'un scheduler pour un accroissement progressif, je ne vais pas augmenter la population tout les soir a minuit de x % il faut que cela se fasse au cours du temps.

    Je pense que je vais proceder avec 2 methodes :

    un système de scheduler.
    Hélas je n'aurai pas de possibilités de rajouter un service windows ou autre sur le serveur (hebergement partagé) et il est hors de question d'avoir une appli qui tourne sur ma machine pour aller demander au serveur de faire des mise a jour des données (berrrkkkk ) autant tout mettre direct sur mon pc a ce compte la ce que je ne veux pas faire car pas envie qu'il tourne tout le temps.
    En tout cas je pourrais au moins instancier un thread qui va faire sa sauce de son coté dans une boucle infini.

    un systeme mise a jour à l'acces en lecture.
    A chaque fois que l'on accède a un objet je vais mettre un bout de code qui vérifie sa dernière date de mise a jour et si elle est trop ancienne le met a jour (pas de mise a jour a chaque accès c trop gourmand en perf)

    Bon me reste plus que certain truc plus chiant a gérer comme par exemple les recherche

    il commence sa recherche a t0 et elle doit finir a t1, entre temps il a créer des scientifique qui lui permet de finir a t2 moins lointain que t1 donc dans ce cas la si je stock juste la date de depart et la date de fin ca ne suffira pas, il faut que je stock le % d'avancement ... va falloir que réfléchisse encore un peu

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Points : 26
    Points
    26
    Par défaut
    Juste une petite remarquer:

    Si tu as la date de départ et la date d'arrivé normal, ou le temps que ça prendra pour y arrivé tu as déja le %...

    t1 - t0 = tempsRequis
    t1 - tempsActuel = tempsPasser
    Si ((tempsRestant=tempsRequis - tempsPasser) > 0) {
    tempsRestant=tempsRestant-tempsRestant*PourcentagePlusVite
    } Sinon {
    fini
    }

    Et voila!

    P.S.: D'après moi tu ne devrais pas soustraire du temps du TOTAL de temps à faire car cela affectera le temps passé à exécuté l'action sans la technologie. Si la technologie permet d'aller 2 fois plus vite et que l'avancement est à la moitier il ne finira pas instantanément mais fera la moitié de la moitié restante étant donné qu'il vas 2 fois plus vite.

    Donc en gros il sauverais 25% du travail et non pas 50% car le premier 50% ne devrait pas être affecté étant donné qu'il est au passé.

  9. #9
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    +1

    C'est fait sans aucun scheduler. C'est uniquement à la connexion qu'il te fait les calculs qu'il faut suivant le temps que tu as passé hors connexion. Même si tu as créé des scientifiques, il ne les assigne pas automatiquement et attends que le joueur le fasse. Dans ce cas là, il a déjà fait les calculs de la période passée.

Discussions similaires

  1. [jeux web][rpg] mélange de style de jeux
    Par estacado dans le forum Projets
    Réponses: 3
    Dernier message: 02/01/2007, 13h57
  2. Et les jeux web?
    Par peel_retrogames dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 17/10/2006, 05h07
  3. Jeux web : quel langage ?
    Par Rémiz dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 16/08/2005, 16h50

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