Je travaille actuellement sur un jeu de plateforme 2D basé sur des tuiles similaire à Terraria à certains égards, bien que je rencontre des difficultés avec la génération de terrain. J'ai fait quelques bases, bien qu'elles ne soient pas utiles.
J'ai essayé quelques techniques différentes comme Perlin Noise et j'ai lu quelques autres telles que Midpoint Déplacement, bien que je ne sois pas sûr de ce qui serait le mieux, ou une combinaison de différentes techniques pour générer différentes zones. (Tels que le déplacement médian pour la forme générale du terrain et le bruit Perlin pour les grottes.)
J'ai trouvé une excellente explication de la façon dont je pourrais le superposer avec la bibliothèque de bruit accidentel , bien qu'il soit en C ++, et je ne connais pas assez de C ++ pour le compiler dans une DLL que je peux utiliser à partir de C #. J'ai essayé de copier ceci en C #, bien que je ne sache pas comment fusionner deux effets ensemble (le gradient pour la base générale, puis la fractale pour les détails).
Actuellement, j'utilise une fractale plasma et les résultats sont extrêmement variés. Par exemple, il peut générer un terrain où il n'y a pratiquement pas de surface, ou il peut générer un terrain où il n'y a aucune surface.
Un exemple de carte correcte serait mieux avec quelques améliorations supplémentaires. (Le noir est solide, le blanc est l'air):
Et un exemple d'une terrible carte. (Le noir est solide, le blanc est l'air):
Fondamentalement, ce que je demande, quelle serait une meilleure façon de générer le terrain, ou de le forcer à s'assurer qu'il y a une superficie raisonnable, avec un temps de génération aussi rapide que possible. Ou, alternativement, comment je serais en mesure d'obtenir le même résultat que la bibliothèque de bruit accidentel, mais en C #.
Tout exemple serait très apprécié.
la source
Réponses:
J'essaierais de m'en tenir au bruit Perlin, mais en y ajoutant un poids basé sur la hauteur, pour assurer une certaine densité moyenne à certaines altitudes. Pour citer une partie du billet de Notch sur la génération de terrain Minecraft :
Essentiellement, vous prenez une petite tranche de terrain Minecraft. Générez donc du bruit Perlin 2D, mais pondérez-le de sorte que tout ce qui est au-dessus d'un certain point soit susceptible d'être de l' air, et quoi que ce soit en dessous d' un certain point est susceptible d'être la terre.
Cela vous donnera un bon terrain au sol, avec quelques surplombs et caractéristiques intéressantes, ainsi que des grottes et des îles flottantes. (Si vous ne voulez pas d'îles flottantes, vous pouvez les tester et les supprimer manuellement.) Cette méthode ne vous donnera pas des choses comme des tunnels, vous aurez donc besoin d'une méthode pour les ajouter après la génération du terrain, comme un marche aléatoire .
la source