14-02-2011, 12:31 PM
(14-02-2011, 11:15 AM)Argorate a écrit : Salut, je pense que c'est ce prendre la tete pour rien mais bon^^Je me suis peut-être mal exprimé, je ne remet pas en cause ma façon de coder, sans quoi il faudrait que je change de boulot :non:
pour la première méthode :
Citation :Inconvénients :Si tu juges que tu codes mal et/ou que tu n'as pas suffisamment d'expérience et/ou de rigueur pour ne pas que se soit un "bric à brac infâme", c'est a toi de juger de tes limites d'organisation, cependant ne généralise pas. Il est très facile de mettre de l'ordre avec des include au bon endroit et un peu de d'organisation.
* Très difficile à maintenir... Le code devient vite un bric à brac infâme.
De plus, ce sujet n'est ni un tutoriel ni de la propagande, il ne reflète que ma vision des choses, et les soucis que je rencontre, donc je ne généralise pas, très loin de la.
Citation :Peut être parce qu'il ne s'agit pas de mettre à jour seulement les informations concernant le joueur qui se connecte.Citation :* Moins il y a de joueurs, plus leur navigation sera pollué par l'exécution de ces scripts.Je ne comprends pas. Étant donner que tu met a jour uniquement le joueur qui se connecte, le nb de joueurs n'a rien avoir et le fait d'updater un joueur est justement transparent, a la différence d'un cron qui fais tout d'un coup et qui peut donc ralentir grandement le serveur durant la MAJ.
Envisageons un environnement dynamique dans lequel deux joueurs peuvent interagir indirectement, sans le vouloir.
Le moteur du jeu est supposé gérer ces interactions, mais également des interactions PNJ/PJ.
il ne s'agit pas simplement de dire "votre mine de cristal vous as rapporté x ressources".
Bien entendu, à moins d'arriver à des volumes d'informations monstrueux, cela ne devrait pas entraver la navigation outre mesure, a condition d'avoir suffisamment de connexion régulière, sans quoi la somme d'évènements liés aux actions des IA sera trop importante.
Citation :Citation :* Ne permet pas d'implanter certains type d'évènements généré par l' "IA" du jeu à desAh bon? pourquoi? qu'es ce qui t'empêche de faire cela? tu as un exemple? je ne vois pas trop^^
moments très précis.
Donc pour ma part je pense que la solution la plus transparente et la plus facile a mettre en place c'est la mise a jour du joueur quand il se connecte (ou quand un autre joueur connecté fais une action sur lui).
Qu'es ce tu en penses?
Le jeu dans lequel j'envisage de me lancer serait une simulation.
En gros commerce, combat, construction, des concepts récurrents.
L'univers sera entièrement soumis aux actions des joueurs, mais également de leur homologues PNJ, car le jeu contiendrait des "IA" occupant le même rôle que les joueurs, afin de dynamiser l'univers.
L'IA "a" pourrait faire demi-tour car l'IA "b" vient de détruire le dépôt de vente vers lequel elle allait.
L'IA "c" interceptera l'IA "b" car celle ci changera finalement d'itinéraire.
L'IA "d", opportuniste profitera du combat pour ramasser les ressources encore récupérable après la bataille.
Lorsqu'un joueur se connecte, si personne ne c'est connecté depuis x heures, celui-ci sera dont en charge du script qui va générer toute la vie artificielle et les évènements depuis la dernière connexion en date.
Admettons que le jeu contiennent quelques centaines de joueurs IA, cela constitue une somme de calcul assez conséquente.
Calculer les trajets, les rencontres, les interactions, les transactions de chacun, les fluctuations de prix qui en découlent, chaque action que peut entreprendre l'IA peut générer des réactions des autres PNJ.
Comme par exemple pour l'exemple précédent, comment gérer les changements d'attitude des IA en fonctions de leur actions?
Un processus qui qui gèrerait ces interactions à intervalle court et régulier serait une très bonne alternative.
Admettons maintenant cette structure simpliste pour le jeu:
* Chaque évènement est simplement représenté en base de donnée par un script à lancé, ses paramètres et l'heure précise de lancement.
Le traitement des informations serait géré de la sorte : Un script met le jeu à jour en exécutant les scripts de la pile par ordre d'heure d'exécution, jusqu'ici rien d'incohérent.
Seulement, l'exécution d'un évènement pourra modifier les évènements suivant.
Donc après chaque exécution de script, il faudra vérifier ses conséquences sur les autres évènements de la pile.
Malheureusement, ces interactions ne peuvent pas être anticipés, car elles dépendent d'élément extérieurs : les joueurs, et doivent être calculés après chaque évènement.
Dans une simulation sans joueurs, aucun soucis, dans un jeu sans IA, aucun soucis, mais lorsque les deux se côtoient, il faut relancer un script de mise à jour du comportement de l'IA après chaque modification de ses variables d'environnement pour que les comportements restent cohérent.
Alors ce n'est que mo inquiétude, mais je me dis que lorsqu'un joueur se connectera après 6 ou 7 heures sans connexion, qu'il lancera un script devant calculer le comportement d'un bon gros paquet d'IA sur tout ce temps, ca risque de poser un gros problème...
Du haut de ma modeste expérience de développeur, je ne vient que pour vos conseils, peut-être que j'appréhende mal mon idée de la gestion des évènements des IA et que le vrai problème est ici, éclairez moi
De mes lectures, un Daemon semblait être un must have, une combinaison de cron + script déclenché par les utilisateurs pourrait peut-être faire l'affaire.
Paye ton pavé :rip:
@niahoo : Je compte prendre un serveur dédié, donc je peux envisager pas mal de choses, les hébergements mutualisés sont effet très restrictifs.