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

C++ Discussion :

Algorithme générateur donjon


Sujet :

C++

  1. #1
    Membre habitué Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Points : 164
    Points
    164
    Par défaut Algorithme générateur donjon
    Bonjour à tout le monde

    je recherche à créé un algorithme pour faire des donjon à la pokémon donjon mystère

    voici quelque représentation de ses donjon:








    j'ai déjà coder un générateur de labyrinthe, mais la c'est autre chose.
    je sais globalement comment généré des pièce aléatoire, contrôler qu'elle ne se touche pas.
    Je ne sais pas comment géré les différent style de donjon,ni comment introduire une taille variable, ni par ou commencer.

    si quelqu'un pourrais me donnais une piste.

    merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    A priori, je commencerais en supposant que chaque donjon correspond à une grille de N lignes et M colonnes. Chaque celllule de cette grille peut être :
    • Un mur plein (M)
    • Un couloir (C)
    • Une pièce fermée (F)
    • Une pièce ouverte (O)


    Par exemple en me basant sur les images fournies :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    1)
    FFF
    CFF
     
    2)
    CFM
    OOO
    OOO
     
    3)
    MFFFM
    FCCCF
    MFCFM
    MMFMM
     
    4)
    FFM
    FFF
    CFC
    Donc en terme de code, c'est une matrice N*M d'objets Cell générés +ou- aléatoirement. Les 4 types M/C/F/O pourraient hériter de Cell et définir un comportement spécifique (des O adjacentes s'interconnectent, une O isolée se comporte comme une F, M et C n'ont pas de contenu, etc). Bien sûr il y aurait d'autres infos à intégrer à chaque cellule : son contenu, son mode d'interconnexion Nord/Sud/Est/Ouest, ...

    Tu as déjà une idée des "différents types de donjons" ?

  3. #3
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Pour peu que tu lises l'anglais, tu trouveras ton bonheur là: http://pcg.wikidot.com/

    Cherche aussi sur ce site dédié au développement de rogue-like (qui sont des monde généré de manière procédurale, comme dans ta question): http://roguebasin.roguelikedevelopme....php/Main_Page


    En fait généralement ça se passe en plusieurs passes:

    1. tu fais des rectangles éparpillés dans une espace, de tailles variables
    2. tu fais des rectangles qui sont plus minces et qui cherchent a intersecter deux rectengles
    3. tu remplis les rectangles

    etc.

  4. #4
    Membre habitué Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Points : 164
    Points
    164
    Par défaut
    dsl Klaim mais je ne parle pas anglais (ou très peux)
    j'ai essayer mais je n'est rien compris.

    merci cob59, je crois que je vais partir dans cette direction.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Sinon tu as l'option "Diablo-like".
    Tu possèdes des pièces préfabriquées et tu génères uniquement les chemins entre les différentes salles.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre habitué Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Points : 164
    Points
    164
    Par défaut
    Re bonjour a toue le monde.

    Je re ouvre le sujet car je bloque.

    Jusqu’à présent j'ai généré des pièces et est relier les pièces cote à cote entre elle. Pour sella j’ai donné une valeur à chaque pièce et 0 pour les murs, puis deux valeur différente de 0 on était relier
    ex:
    De mon donjon généré aléatoirement :
    10023
    45006
    00078
    9A00B
    J’obtiens :
    10022
    11002
    00022
    99002

    Le problème est que je ne sais pas comment relier les zones de salle entre elle.
    J’ai regardé autour de l'algorithme de Dijkstra, mais il ne supplique que pour deux point et suivent plusieurs itinéraires, je n’ose pas imaginer pour plusieurs intervalles de point sur un tableau de 100x100.

    Se que je recherche c'est déterminer les zones et trouver le plus cour chemin entre elle :
    10022 ou 10B22
    11A02 ou 11BB2
    0AA22 ou B0022
    99002 ou 99002

    Merci d'avance

  7. #7
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Franchement, ça serait beaucoup plus simple si tu te basais sur des données sous forme d'images.

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Dans mon message j'ai parlé de générer une matrice "+ou- aléatoirement" mais il y aurait beaucoup à dire là dessus.

    L'algo censé générer cette matrice dépend surtout du gameplay que tu souhaites mettre en oeuvre. Essaie déjà de tracer un graphe du genre de donjon que tu souhaites générer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Entrée
    |
    (Pièce1)
    |
    |__ (Pièce2)
    |
    |____(Pièce3)
    |  |
    |  |__(Pièce4)
    |
    Sortie
    Là on a plutôt un schéma "labyrinthique" : le chemin Entrée-Sortie est libre mais le joueur risque de s’égarer dans 1 ou plusieurs pièces.

    On peut cependant imaginer que l'entrée soit une pièce centrale d'où partent 4 couloirs pour activer 4 leviers, qui déverrouillent un 5ème couloir menant vers la sortie. Dans ce cas la topologie du graphe de ton donjon sera différente, ce dont ton générateur devra tenir compte.

    Cela dit, selon la complexité du type de donjon que tu souhaites générer, il faudra peut-être recourir à des algos. Et sur ce point, si tu ne comprends pas l'anglais, ça risque d'être un gros handicap.

    PS: Relis ton orthographe avant de poster, là on se crame carrément les rétines.

Discussions similaires

  1. Algorithme générateur de grille de mots croisés
    Par houssine91 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 23/07/2013, 00h38
  2. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  3. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18
  4. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  5. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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