Aller au contenu

Conservation des mobs


Meowcate
 Partager

Messages recommandés

A la fois suggestion et question, ma demande est simple : est-il possible d'enregistrer les mobs ?

 

Le problème des sauvegardes horaires est le reboot. Car une fois rechargée, il semblerait que les mobs soient réinitialisés.

C'est en tout cas ce qui m'est arrivé hier matin dans la conception d'un poulailler dans l'intention de me faire un petit stock d'oeufs, ayant besoin de concevoir des gâteaux à en remplir un dispenseur. Seulement, soit c'est courir après une poule en attendant un oeuf hypothétique (quand il y a peu de monde d'ailleurs), soit c'est 3pa à l'achat dans la gare, ouch...

C'est pourtant ce que j'ai fait, achat au total de 27 oeufs. Quelques uns pour des tests à la base, et d'autres après des tests concluants pour mettre des premières poules dans ledit poulailler. Tout est mis en place, oh joie oh bonheur... puis sauvegarde, reboot... et plus de poules. Caramba, 81pa partis en fumée et l'espoir de mes oeufs futurs avec :(

 

Faut-il donc songer à un moyen de garder les mobs en mémoire durant le reboot ou dois-je abandonner l'idée de poulailler ?

Lien vers le commentaire
Partager sur d’autres sites

J'avais essayé de faire la même chose que toi (construction d'un poulailler) et m'étais heurté aux mêmes difficultés, ce qui me laisse penser que le serveur par défaut gère le spawn/despawn des mobs de manière un peu archaïque.

Après peut-être existe il un mod coté serveur pour corriger cela ?

Lien vers le commentaire
Partager sur d’autres sites

Euh, ça me paraît difficilement faisable de conserver en mémoire les mobs... A moins que les saves se fassent sans reboot du serveur, ce qui me paraît infaisable, sinon ce serait déjà fait... Après c'est vrai que dans ton cas c'est embêtant, la prochaine fois tu testera juste après une save, tu sera bien plus tranquille... ^^

 

Il existe peut-être un plugin... Mais il risque de consommer pas mal de mémoire, et du coup on augmenterait le problème du lag. De la même façon qu'une sauvegarde sans reboot je pense.

Lien vers le commentaire
Partager sur d’autres sites

@Eyce : il y a longtemps, dans une galaxie lointaine, très lointaine, les saves se faisaient sans reboot, mais le problème est que le codage magnifique de Minecraft rendait le jeu injouable au bout de quelques heures avec énormément de lag, le reboot du serveur empêche ces problèmes il me semble.

Lien vers le commentaire
Partager sur d’autres sites

Le problème vient du serveur Minecraft qui fait des fuites mémoires à mort. Sans reboot toutes les heures, il planterait lamentablement au bout de quelques de ces heures...

 

(Ca vient peut être aussi du fait qu'il soit codé en Java mais ce n'est pas l'endroit pour lancer un troll langage j'imagine :lol: )

Lien vers le commentaire
Partager sur d’autres sites

@Wiagra : Je n'étais pas là il y a bien longtemps dans cette galaxie dont tu parles ;)

 

Et c'est ce que je disais, je pense aussi que le reboot efface volontairement des données mémoires, pour éviter une surcharge et un lag trop élevé. Vous remarquerez sans doute qu'après chaque reboot le serveur rame beaucoup moins.

En fait, les ressources consommées par le serveur ('ttention je parle pas de bouse, de stone etc...^^") proviennent outre des joueurs, des mobs et des mouvements de blocs dynamiques (lave, eau, impulsions redstone, minecarts, bateaux, tnt activée, feu, sable ou gravier qui tombe...). Un bloc de bouse tout bête ne consomme aucune mémoire (il est présent ou absent, c'est tout), mais un bloc dynamique "bouge", il est un objet à part entière, et donc a des propriétés complexes stockées en mémoire, ce qui ralentit le serveur.

 

En gros c'est comme votre PC. Il conserve la trace de tout ce que vous faites (big brother ouhouhou ! ^^") et la garde en mémoire. C'est d'ailleurs pour ça qu'il est conseillé d'éteindre son pc de temps en temps, pour virer cette mémoire provisoire et permettre à la machine de repartir de plus belle.

 

Bref, je ne sais pas si c'est Minecraft SMP qui est prévu comme ça à la base ou si ça vient de Bukkit (plugin BigBrother?) ou même de Minefield (je crois pas) mais en tout cas c'est sans aucun doute pour ça que les reboots sont nécessaires, et selon moi sauvegarder la dernière position des mobs avant la save me paraît difficile et très moyennement réalisable. (Il faudrait aussi sauvegarder les entités au sol, à savoir les blocs attendant d'être ramassés --> beaucoup trop lourd pour le serveur, si puissant soit-il)

 

Rappelons aussi qu'en terme de programmation, un bloc = un objet (même les blocs d'air), et donc comporte son onde de variables et de fonctions. Alors oui, ce sont des fonctions très simples. Mais comparez à d'autres jeux :

Dans Counter-strike : Les seuls objets sont quelques barils ça et là, les armes tombées au sol, et les joueurs (et bots), ce qui fait grosso modo sur une carte comme de-dust2 au maximum quoi... 200-300 objets, la plupart étant passifs (les barils "attendent" de recevoir une balle pour "fonctionner" i.e. faire des calculs i.e. bouger, tomber etc...).

Dans Wow (déjà bien plus gourmand niveau ressources) : Les objets sont les joueurs, les mobs, les pnj et les coffres. Astucieux système d'interaction entre objets que celui des MMO d'ailleurs : Par zone il existera tout au plus un petit millier d'objets. Avec des fonctions très simples, mais ça commence à faire beaucoup. Ce qui justifie que WoW est plus gourmand en mémoire que CS:S, bien qu'il soit moins beau (la qualité graphique n'a rien à voir avec la quantité de mémoire demandée à la RAM ou à la quantité de calculs demandés au processeur).

Dans Minecraft, et là ça se corse : Un chunk de 16*16*128 (largeur*longueur*hauteur) comporte 32768 objets, sans compter les joueurs et les mobs ! Ce qui fait environ (en moyenne) 32775 objets environ par chunk... Alors imaginez maintenant les calculs que doit faire le serveur sur une carte comme celle de Minefield, qui si je ne m'abuse doit faire 5000*5000.

Allez, je me sens matheux (aka utilisateur de la calculette Windows =° ) :

Tout ce tintouin ça fait 312 chunks de long et 312 de large, donc 97344 chunks en tout. Ce qui nous fait pas moins de 3.189.768.192 objets à prendre en compte, au minimum. Et on ne compte pas ni les joueurs ni les mobs. Outch, ça fait mal d'un coup ! =)

Trois milliards d'objets à calculer en temps réel, tu m'étonne qu'il y ait du lag. C'est 3 millions de fois plus que Wow ^^"

 

Bref, voilà un calcul totalement inutile, qui vient de démontrer l'utilité du core i7 ^^

 

Et bon, pour en revenir au sujet, je ne pense pas que ce soit une bonne idée de surcharger le serveur avec des sauvegardes d'entités =)

Surtout après avoir vu que ce serait faire empirer une situation de lag déjà existante et irrémédiable. Parce qu'avec le système actuel sont sauvegardés uniquement les blocs. Si en plus on sauvegarde les entités (je suis pas sûr que le SMP soit codé de façon à ce qu'on puisse save uniquement les mobs), à chaque fois qu'un joueur pète un bloc il crée une entité supplémentaire (eh oui le bloc qui flotte au niveau du sol c'est une entité, et l'air est un bloc!), z'imaginez le lag si on les sauvegardeait ?!? :shock::o:shock:

 

Edit : Ah et au fait, désolé pour le pavé imbuvable ^^"

Lien vers le commentaire
Partager sur d’autres sites

Peut-être aussi parce que Minecraft n'a pas été codé dans le but d'être exploité comme un MMORPG, ce qu'est en train de devenir Minefield depuis quelques temps (ce qui n'est pas un reproche).

 

Et... j'insiste, parce que j'avais un doute sur quelque chose, mais sans être sûr à cause de cette disparition de mob, mais : les objets lâchés au sol restent bien présents, j'ai laissé trainer une 40aine de blocs de dirt avant la déco pour être sûr.

Dès lors, tenant compte de la densité théorique des mobs sur chaque serveur (qui ne doit pas dépasser les 1 par chunk, et encore faut-il que lesdits chunks soient chargés), je renouvelle ma question initiale à trouver ce choix curieux et un brin improductif (les poules ça va : je peux les "générer", mais pour les vaches et moutons je me voyais déjà les entraîner peu à peu vers un enclos, ce serait bien du travail pour aucun résultat :( ).

Lien vers le commentaire
Partager sur d’autres sites

C'est vrai... Cela dit toutes les entités ne sont pas sauvegardées, j'ai déjà droppé des ressources avant une sauvegarde, et à mon retour, pouf ! disparues ! ^^"

 

Et si certaines entités sont sauvegardées, l'idée serait de ne plus le faire, c'est une surcharge énorme pour le serveur... Et le staff a bien précisé qu'il fallait éviter de laisser traîner des choses, justement dans ce but. M'enfin bref, là n'est pas le débat.

 

Ta question me fait me souvenir d'une chose : les loups.

Un ami avait apprivoisé des loups, et ils restaient. Cela vient sans doute du fait que ce soient justement des loups apprivoisés. Mais c'est vrai que dans une optique d'élevage ça pourrait être intéressant d'avoir des mobs "durables".

 

C'est vrai que si les entités sont sauvegardées, et que les mobs ne le sont pas, c'est assez incohérent...

Enfin l'inverse paraîtrait plus logique dans une optique de jeu MMO (qui certes n'est pas le but originel du jeu).

 

Peut-être un plugin Bukkit (ou une configuration du plugin de sauvegarde déjà installé) existe dans ce but. A voir.

Lien vers le commentaire
Partager sur d’autres sites

Bon, finalement ma suggestion doit venir d'un problème : après test, une poule que j'ai enfermé autour de dirt est bien restée après mon retour... Je n'explique pas du coup la disparition de mes poulets.

 

EDIT : et elle a disparu après ma reconnexion... au final, je suppose qu'il faut qu'au moins un joueur reste "à portée" du chunk pour conserver ce genre d'entité, ce qui est logique au fond (tout comme les plantes ne sont pas mises à jour en l'absence de joueur). Mais ce qui est dommage est qu'il semble que cette conservation soit très courte (de l'ordre de moins de 3 minutes apparemment). Autrement dit, après une sauvegarde, il faut se connecter immédiatement pour ne pas perdre ses animaux, mwai :s

 

L'idée serait peut-être d'investir plutôt dans un mob spawer au final.

Lien vers le commentaire
Partager sur d’autres sites

En sachant que les mob spawner ne font spawner que des cochons en SMP. Tout autre mob nécessite un changement de la map via MCedit, et donc une fermeture du serveur pendant environ 20min (à moins de voir dans quelques temps l'apparition d'un plugin permettant de pallier à ça).

 

Apparemment donc, toutes les entités disparaîtraient au bout de trois minutes, sous diverses conditions. Intéressant.

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
 Partager

×
×
  • Créer...