Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Génération procédurale  (Lu 2267 fois)

0 Membres et 1 Invité sur ce sujet

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Génération procédurale
« le: Janvier 31, 2014, 09:55:51 pm »
Bonjour,

je projette de commencer à créer des jeux C++ via SFML 2.1
Mais je me demandais, n'ayant trouvé aucun tuto sur le Net, comment procéder à une génération procédurale du contenu. Je fait comment ?

Comment appliquer un Algorithme à SFML ? Comment l'utiliser via SFML et Box 2D ?

Et petit point important, j'ai 14 ans et connais le C++ (C et Java occasionnellement)
Ceci présente un avantage et un inconvénient :
+> J'ai une facilitée à comprendre l'informatique ce qui m'ouvre la voie vers des métiers poussé dans ce domaine
-> Je ne connais pas l'Algèbre, ne voyant pas cela à l'école

Donc si vous me fournissez un algorithme EN ALGEBRE (Car je comprend bien un algorithme appliqué en C++ sauf si il n'est pas du tout documenté et que les noms de variable sont manquants)
, expliquez ou passer un tuto pour savoir comment le comprendre :)

Voila, Merci d'avance de vos réponses ! :)

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Génération procédurale
« Réponse #1 le: Janvier 31, 2014, 10:14:30 pm »
La génération procédurale c'est le fait de baser ce qu'on fait sur des nombres générés pseudo-aléatoirement.

En C++ (avant C++11) quand tu génères un nombre avec rand(), tu dois appeler srand() et lui indiquer un nombre sur lequel se baser (une seed) pour générer une suite de nombres. Les nombres données par rand() dépendent de la seed donnée à srand().
Si tu appelles plusieurs fois ton programme avec à chaque fois la même seed, rand te donnera à chaque fois la même suite de nombres.
Une fois que tu as cette suite de nombres, faut t'en servir dans ton jeu et là c'est comme tu veux. :p

Pour te donner un exemple, imaginons que tu veuilles générer le sol d'un jeu en 2D vue de coté. (genre le premier Super Mario Bros. sur NES) Disons que tu veuilles commencer avec un bloc à la hauteur 0, puis faire une suite de bosses et de creux entre une hauteur de 5 et -5 blocs tous les 10 blocs.
Tu files une seed à ton générateur de nombres.
Tu tires un nombre pseudo aléatoire entre -5 et 5, disons que ça te donnes un 3. Tu vas mettre entre la position 0 et 10 des blocs qui vont de la hauteur 0 à la hauteur 3.
Ensuite tu tires un nouveau nombre, ça te file -2. Tu vas mettre entre la position 10 et 20 des blocs qui vont de la hauteur 3 à la hauteur -2.
Et ansi de suite.

Et voilà c'est tout, t'as créé quelque chose à partir d'un simple chiffre. Et si 2 personnes donnent le même chiffre ils auront la même chose.
Ensuite c'est à toi de faire ce que tu veux de ces chiffres.

Commence par apprendre à utiliser SFML. Puis lance toi dans un truc tout con, comme l'exemple que j'ai donné au dessus. Modifie le, ajoute plus de règles, plus d'objets, etc. histoire de bien comprendre ce que tu fais. Parce que ta question de base "Comment appliquer un Algorithme à SFML ?" veut pas dire grand chose.
« Modifié: Janvier 31, 2014, 10:17:15 pm par G. »

MyPix

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
    • E-mail
Re : Génération procédurale
« Réponse #2 le: Février 01, 2014, 09:55:34 am »
 ;) Je vais commencer pas re-créer un Super Mario Bros, ça pourrais être asser bien pour apprendre SFML

Mais je comprend pas très bien ton example ^^
Je dois appeler Srand avec un seed que le joueur pourrais donner par exemple, ensuite Je tire une suite de nombre (Je la place dans un Tableau ?) et puis je prend chiffre par chiffre et après je place les blocs jusque en haut en fonction de ce chiffre ?
En gros plein d'algorithmes ^^
- Un qui va générer la hauteur des bosses et des creux via un seed
- Un qui va dire à quelle distance je dois placer mes blocs
- Un qui va placer les blocs comme il doit

 

anything