script mmorpg persistant ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : script mmorpg persistant ?

Re: script mmorpg persistant ?

par dryzd » 23 janv. 2011, 17:20

Merci pour l'info ;)

Re: script mmorpg persistant ?

par Open RPG » 22 janv. 2011, 17:12

Il y a aussi le projet OpenRPG sur www.openrpg.fr si tu as besoins.

Re: script mmorpg persistant ?

par steph580 » 07 mars 2010, 00:04

Re bonsoir !

(c'est foufounet je me suis rendue compte que j'avais un compte sur le forum... :mrgreen: )
Quel est l'usage de cette table todo ? Tu ferais une table avec les taches à effectuer ? Pourquoi ? Tu pourrais m'en dire un peu plus stp ?
Exacte, c'est une table qui sert a stocker les chose a effectuer, j'ai fait sa a la vite fait mais l'idée est la, quand tu affichera les mine tu testera si telle mine n'est pas en construction, si elle l'est tu affiche le temps restant etc... :)
Pourquoi une tâche cron ?
Sa dépend de ton choix tu peux le faire ou pas, si tu le fait sa simplifira les chose tu dit a ton cron d'updater le compte x, simple, mais si le compte est inactif pendent 3 jours, et que juste avant il a monté sa mine est quelle c'est fini pendent ces 3jours alors toutes la production qui aurait dû n'est pas, pour corriger sa il faudrait que tu soustrait le timestamp de fin de la tache par le timestamp actuelle tu obtient alors tous le l'aps de temps qui la mine na pas produit, tu ajoute en conséquence ! :)

Voila tout !

Re: script mmorpg persistant ?

par dryzd » 06 mars 2010, 23:39

Etape 1 : clique sur "developpez" qui envoie une requête au serveur (exemple table todo champs timestamp_debut, timestamp_fin, type_mine, niveau)
Quel est l'usage de cette table todo ? Tu ferais une table avec les taches à effectuer ? Pourquoi ? Tu pourrais m'en dire un peu plus stp ?
(peut (ou doit) étre effectuer avec un tache cron)
Pourquoi une tâche cron ?

Concernant les deux solutions.
Si je reformule, pour être sûr de suivre, la première solution est plus simple mais risque de faire des piques de consommation de ressources car si de nombreux utilisateurs sont connectés en même temps, ça fait plein de requêtes pour actualiser plein de pages et de données (avec risque de bugs). La mise à jour risque aussi d'être plus complexe car beaucoup de code éclaté.

Sinon, l'autre solution, a l'avantage de traiter au fur et à mesure la charge de travail, mais plus complexe à mettre en oeuvre au départ et besoin d'un serveur dédié (entre 50 et 100 € HT par mois).

C'est bien ça ?

Re: script mmorpg persistant ?

par Calimero » 06 mars 2010, 21:35

Est tu sur de toi ?

Je dirait plutôt que les étape sont celle ci

Etape 1 : clique sur "developpez" qui envoie une requête au serveur (exemple table todo champs timestamp_debut, timestamp_fin, type_mine, niveau)
Etape 2 : On a ensuite de l'actualisation en javascript simple de l'animation. Vide la table todo
Etape 3 : au bout d'un certain temps la construction est terminée. Javascript recharge la page, vide la table todo par rapport a la timestamp_fin et effectue la tache. (peut (ou doit) étre effectuer avec un tache cron)
Non, en effet je n'ai pas été jusqu'à analyser le javascript :) C'est peut-être plus proche de ce que tu dis. Mais l'un comme l'autre, c'est bien l'idée.

Re: script mmorpg persistant ?

par foufounet » 06 mars 2010, 20:50

Si j'ai bien compris, pascaltje et Calimero, vous semblez être assez d'accord finalement.

Si on prend le cas d'Ogame. Que ce passe-t-il lors de la construction d'une mine ?
Etape 1 : clique sur "developpez" qui envoie une requête au serveur
Etape 2 : On a ensuite de l'actualisation en Ajax de l'animation.
Etape 3 : au bout d'un certain temps la construction est terminée.
Etape 4 : envoie d'une requête au serveur pour dire que terminé ? Je pense que c'est incomplet car il doit y avoir aussi une vérification côté serveur.

C'est ça ? J'ai l'impression de rater beaucoup d'étapes.
Pour Ogame, c'est exactement ça.
Est tu sur de toi ?

Je dirait plutôt que les étape sont celle ci

Etape 1 : clique sur "developpez" qui envoie une requête au serveur (exemple table todo champs timestamp_debut, timestamp_fin, type_mine, niveau)
Etape 2 : On a ensuite de l'actualisation en javascript simple de l'animation. Vide la table todo
Etape 3 : au bout d'un certain temps la construction est terminée. Javascript recharge la page, vide la table todo par rapport a la timestamp_fin et effectue la tache. (peut (ou doit) étre effectuer avec un tache cron)

Re: script mmorpg persistant ?

par Calimero » 06 mars 2010, 17:37

Si j'ai bien compris, pascaltje et Calimero, vous semblez être assez d'accord finalement.

Si on prend le cas d'Ogame. Que ce passe-t-il lors de la construction d'une mine ?
Etape 1 : clique sur "developpez" qui envoie une requête au serveur
Etape 2 : On a ensuite de l'actualisation en Ajax de l'animation.
Etape 3 : au bout d'un certain temps la construction est terminée.
Etape 4 : envoie d'une requête au serveur pour dire que terminé ? Je pense que c'est incomplet car il doit y avoir aussi une vérification côté serveur.

C'est ça ? J'ai l'impression de rater beaucoup d'étapes.
Pour Ogame, c'est exactement ça.

Pascaltje et moi sommes d'accord sauf sur le modèle technique à te recommander. Ce sera à toi de trancher pour ton projet en fonction de ce qui colle le mieux ;)

La solution de pascaltje (qui a plus d'expérience dans les jeux web que moi) correspond à la solution 1 dont je te parlais en début de thread. Elle a l'avantage niveau simplicité de mise en oeuvre (niveau développement, on reste dans du web "classique") et aussi au niveau des exigences techniques moindres pour l'hébergement du jeu (dans 99% des cas, tu ne pourras pas faire tourner un démon sur un hébergement mutualisé, le serveur dédié est incontournable). En revanche elle t'impose de fractionner ton jeu en une multitude d'opérations simples, et aussi de fonctionner sur un mode "à la demande" (quand aucun joueur n'est connecté, ton jeu est inactif, il ne s'active qu'à la demande) et c'est à toi de voir si ça peut convenir ou pas.

La solution du démon a, elle, l'avantage de permettre des traitements beaucoup plus lourds faits en une seule fois, et une meilleure maitrise de la charge du serveur avec un grand nombre de joueurs connectés (toute la lourdeur des traitements du jeu est contenue dans une seule instance d'un seul programme, plus facile à gérer à terme niveau montée en charge notamment) mais les inconvénients inverses des avantages de l'autre solution (serveur dédié obligatoire, un peu plus dur niveau développement). Elle permet au jeu de réellement tourner 24h/24, que les joueurs soient connectés ou non, sans avoir de pirouette technique à réaliser pour ce faire.

Re: script mmorpg persistant ?

par dryzd » 06 mars 2010, 15:44

Si j'ai bien compris, pascaltje et Calimero, vous semblez être assez d'accord finalement.

Si on prend le cas d'Ogame. Que ce passe-t-il lors de la construction d'une mine ?
Etape 1 : clique sur "developpez" qui envoie une requête au serveur
Etape 2 : On a ensuite de l'actualisation en Ajax de l'animation.
Etape 3 : au bout d'un certain temps la construction est terminée.
Etape 4 : envoie d'une requête au serveur pour dire que terminé ? Je pense que c'est incomplet car il doit y avoir aussi une vérification côté serveur.

C'est ça ? J'ai l'impression de rater beaucoup d'étapes.

Re: script mmorpg persistant ?

par foufounet » 06 mars 2010, 13:50

Bonjour,

Pourquoi faire un script persistant ? Pourquoi ne pas simplement mettre a jour les infos quand elle sont consulter ?

@+

Re: script mmorpg persistant ?

par Calimero » 06 mars 2010, 13:47

@dryzd : la fréquence d'actualisation sur le serveur pourrait en fait être fixe ou ne pas l'être. C'est selon le travail à réaliser et aussi un choix de conception (je suis parti dans l'idée que ce travail serait important, avec beaucoup de traitements pour valider toutes les règles du jeu et tous les cas de figure possibles).

Au niveau client, il y aurait une actualisation ajax périodique avec une fréquence "raisonnable" (à quantifier suivant un tas de paramètres dont je t'ai parlé plus haut). Pour cela, une fréquence de l'ordre de la seconde étant, selon moi, clairement déraisonnable pour un MMORPG (pas impossible, mais très contraignant). Là aussi, il faut bien dissocier l'actualisation réelle, qui est une requête HTTP avec une réponse du serveur, avec une animation sur le client (cf Ogame qui joue très bien là-dessus). En fait selon les choix de conception l'actualisation peut même être évènementielle, comme dans une page web classique (cas d'Ogame), et non périodique, ce qui est idéal en terme de charge vu que tout se fait à la demande, et plus simple à mettre en oeuvre également. Cela va dépendre principalement de ce que tu veux qu'il se passe si le joueur reste passivement à regarder son écran, sans bouger la souris ni cliquer nulle part :)

Pour la transmission d'ordre entre démon et joueurs, cela revient à de la communication inter-process, et c'est moins compliqué que ça en a l'air (ça peut se résumer à la présence ou non d'enregistrements en base, ou toute autre utilisation astucieuse d'une techno de stockage compatible avec les contraintes).

Pour ta dernière question, ça dépend de trop de choses pour donner une réponse dans l'absolu de toute manière, pour moi c'est donc "faut voir" ;) Mais rien ne t'empêche de te fixer un objectif et de te donner, lors de la conception, les moyens de l'atteindre, effectivement.

Re: script mmorpg persistant ?

par pascaltje » 06 mars 2010, 13:39

pascaltje : Dans ta solution, comment exécuter le script au timestamp donné si la page n'est pas consultée ?
Je retourne la question :
A-t-on besoin d'exécuter le script au timestamp donné ?

Les intérêts bancaires sont calculés chaque année au premier janvier sur les sommes présentes l'année précédente, en utilisant un taux d'intérêt et la durée de présence des sommes d'argent.
Est-ce que toutes les sommes sont calculées au cent près le 1er janvier à 0h00 pour des milliers de comptes ?

Je ne crois pas.
On calcule l'info dans la journée, en utilisant la date "premier janvier à 0h00" et les infos sur l'argent du compte.

Pour les jeux, c'est pareil. On ne calcule pas en temps réel ou au moment exact du passage, mais "après", en se basant sur les données stockées : taux de production, timestamp.

Quand / après quoi calculer et mettre à jour les données ?
Lorsqu'il y a des événements déclencheurs, tels que les attaques, les dépenses de ressources, les changements de niveaux.

Si le joueur se connecte sur son compte après une de ces actions, alors on calcule et met à jour la base de données.
Si le joueur effectue une dépense, c'est un effet immédiat et on calcule en temps réel.

Voilà en gros le fonctionnement, qui permet de faire ce type de jeu sur un serveur pas trop cher pour commencer.

A+

Pascal

Re: script mmorpg persistant ?

par dryzd » 06 mars 2010, 13:31

Merci pour toutes ces infos !

Je suis parti sur la solution du flux continu après avoir réfléchi un temps à un système au tour par tour (sur des cycles de 10 mn ou une heure par exemple). Ca aurait l'avantage de ne pas trop charger le serveur même si le risque est un intérêt moindre pour les joueurs au début du jeu (quand il y a peu de choses à faire). Qu'en penses-tu ?

Vincent
En fait il faut vraiment dissocier les deux
Oui oui. On a un moteur (une page de script exécutée en boucle) en local sur le serveur qui actualise les données à une certaine fréquence. Et l'interface du joueur qui s'actualise indépendamment du moteur (au chargement d'une page par exemple).
(j'arrive pas à savoir exactement de quoi tu parles dans ce post par exemple)
Je parlai du côté client. Au lieu d'avoir des infos qui s'actualisent "en temps réel", on aurait un rafraichissement toutes les n minutes. Comme dans un jeu tour à tour.
on pousse le rafraichissement des pages des joueurs connectés concernés par la mise à jour).
Je n'ai encore jamais eu besoin de faire ça. Va falloir que je me renseigne ;)
Je pense qu'il n'est pas judicieux de fixer arbitrairement une durée de cycle en minutes avant d'avoir un prototype fonctionnel du démon et de constater la charge de travail d'une mise à jour d'un jeu de données "réaliste", qui va dépendre principalement de la complexité de tes règles de jeu et de la performance du code qui va les implémenter... Il faut tester avant tout ;)
Oui et non. Oui d'un point de vue méthodologique. Non d'un point de vue concept du jeu. Y'a un choix qui peut être fait à la conception du jeu où on prend une orientation visant le temps réel ou des cycles plus longs, me semble-t-il.

J'ai tout compris ?

Re: script mmorpg persistant ?

par dryzd » 06 mars 2010, 13:01

pascaltje : Dans ta solution, comment exécuter le script au timestamp donné si la page n'est pas consultée ?

Si débat il peut y avoir, je suis preneur ;)

Re: script mmorpg persistant ?

par Calimero » 06 mars 2010, 12:47

Pas de script qui tourne en boucle, faut arrêter avec cette légende urbaine.

Ce qui se fait dans les jeux web amateurs, c'est stocker un timestamp représentant la date / heure de résolution de l'action.
Il n'y a pas de mise à jour à chaque seconde en continu mais plutôt des mises à jour ciblées sur des événements (dépense d'une ressource, passage de niveau, attaque...).

A+

Pascal
:? C'est toi le pro, là-dessus, pascal, mais je ne sais pas si le modèle que tu préconises, qui est beaucoup plus simple à concevoir au demeurant mais impose d'architecturer tout le jeu en fonction, conviendrait pour un jeu PvP tour-par-tour aux règles complexes (type civilization, dans l'idée) ou pour un MMORPG comme ici.

Mais c'est ptet pas le meilleur endroit pour en discuter :)

Re: script mmorpg persistant ?

par pascaltje » 06 mars 2010, 12:41

Pas de script qui tourne en boucle, faut arrêter avec cette légende urbaine.

Ce qui se fait dans les jeux web amateurs, c'est stocker un timestamp représentant la date / heure de résolution de l'action.
Il n'y a pas de mise à jour à chaque seconde en continu mais plutôt des mises à jour ciblées sur des événements (dépense d'une ressource, passage de niveau, attaque...).

A+

Pascal