Generation de structure



  • Bonjour, je ne poste pas dans support car c'est plus une discussion,

    En fait j'aimerai savoir quel méthode vous utilisez pour génerer vos structures dans la map sans que ce soit dégueulasse?
    je cherche à faire spawn différentes structures ayant ces dimensions:

    16x30x7
    60x30x40
    40x20x25

    Je voudrais qu'elle spawn n'importe ou dans le monde réel, enfin sur du sol et pas dans le vide, au dessus de l'eau ou autre,
    quel méthode me conseillez vous?
    quel méthode utilisez vous?
    comment générez vous votre structure, depuis un worldGenerator comme un minerai?

    Cordialement,
    Grég



  • il faudrait deplacer ce topic dans Forge>Discussions générales


  • Administrateurs

    En effet ^^



  • Coucou

    Pour les grosses generations (très grosses générations), le mieux c'est d'exécuter la génération dans un Thread indépendant (pour pas avoir un gros freeze)

    Sinon, tu crées une classe qui implementes **IWorldGenerator **qui te servira à générer ta structure, tu l'enregitres via le GameRegistry (voir ligne 52), et tu ajoutes une condition au début de la fonction generate
    EX:
    WorldGenElficStaffChest.java

    Tu crées une classe qui hérite de WorldGenerator , et tu fais comme en vanilla, tu generes lors de la decoraction d'un biom
    (à savoir, il faut que tu crées un nouveau biom et que tu **Overide **  la fonction decorate(). Attention, la generation se fait dans le thread principal dans ce cas là)

    Sinon, (si tu es tres chaud), si tu crées une nouvel dimension et que tu veux optimiser, tu places tes blocks directement dans le tableau des block des chunks.
    • L'avantage ? ta structure n'est pas géneré directement lors de la création d'un chunk, le fichier map est ouvert une fois pour tout les blocks placés. A contrarion, les différentes fonctions setBlock() OUVRENT les fichiers de map, et enregistres les informations sur le block placé (c'est laggy, le fichier est ouvert/fermé à chaque block placé)
    • Le soucis, c'est compliqué (et encore plus pour les generations > à 16x16
    (je parle du tableau blocks[] qui se balade de fonctions en fonctions dans la génération des chunks)

    (DAT pavé, sorry j'ai tellement manipuler ça que je m'en suis senti obligé :p)

    EDIT: Mais dans la majeur parti des cas: implements IWorldGenerator reste la meilleur solution


  • Administrateurs

    Merci toss pour ton partage, j'avais jamais pensé à utiliser au thread et je n'avais jamais compris pourquoi le génération faisait tellement laggué alors que mc génère des structures sans problème, maintenant j'ai la réponse c'est juste une histoire d'accès au fichier de la map 😄



  • D'accord merci de ta réponse toss!!