J'essaie de créer un générateur de cartes pour un jeu de cartes 2D (similaire à des jeux comme Civilization - J'aimerais pouvoir créer de petites îles, de grands continents, etc.). J'ai trouvé un article qui fait à peu près ce que je veux, mais il est écrit en flash. On dirait qu'il ya une fonction pratique pour générer une image bitmap de bruit de Perlin:Questions de base sur l'utilisation de Perlin Noise pour la génération de cartes de tuiles
class BitmapData
function perlinNoise(
baseX:Number,
baseY:Number,
numOctaves:uint,
randomSeed:int,
stitch:Boolean,
fractalNoise:Boolean,
channelOptions:uint = 7,
grayScale:Boolean = false,
offsets:Array = null):
Ceci est utilisé dans l'article (mais j'utilise java). Donc maintenant je suis coincé à essayer d'implémenter le bruit perlin moi-même (en trouvant fondamentalement une mise en œuvre pure de Java et copiez/collez-le).
Je suis juste essayer de comprendre le principe de base derrière l'utilisation de bruit de Perlin - ma compréhension de base:
- définir la taille de la carte que vous voulez (dans mon cas environ 100 x 50 tuiles).
- Initialiser un objet bruit Perlin (paramétrage de paramètres comme la fréquence, etc. - pas très sûr de la façon dont ces paramètres affectent des choses comme la taille de l'île, etc, mais mettre de côté pour le moment).
- Effectuez une itération sur chaque pavé de ma carte et demandez une valeur à l'objet de bruit Perlin. La valeur retournée peut être interprétée comme une valeur de hauteur que je devine.
- Affectez maintenant un type de tuile basé sur la valeur de hauteur.
Le code d'itération pourrait ressembler à:
for (int x = 0; x < 100; x++) {
for (int y = 0; y < 50; y++) {
int height = perlin.getValue(x, y);
if (height < 5); // this tile is water
else if (height < 20); // this tile is shore
else if (height < 40); // this tile is hill
else // this tile is mountain
}
}
Est-ce généralement correct? Ce serait au moins un point de départ.
L'article (écrit en flash) qui fait ce que je cherche: http://www.nolithius.com/game-development/world-generation-breakdown
classe flash BitmapData qui a commodément une fonction de bruit Perlin construit en: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#perlinNoise()
Merci