2010-10-25 16 views
3

J'ai un jeu avec un terrain généré de manière infinie. J'utilise le bruit 1/f pour la hauteur (je pense que c'est du bruit Perlin?). De toute façon ça a l'air sympa, mais ce n'est pas très jouable car il n'y a pas vraiment de zones plates. Le simple fait de diminuer l'amplitude ne fonctionnera pas puisque je veux toujours une grande variation de hauteur. Est-ce que quelqu'un sait d'un filtre que je peux appliquer à la carte de hauteur pour encourager les zones plates tout en gardant une large gamme de hauteurs?Hauteur de jeu jouable

Ecrit en C#

EDIT: Je me suis rendu compte que ce que je veux est pour des pentes raides à devenir plus raide, et pour des gradients plats pour devenir plus plat. Le terrain n'a pas besoin d'être réaliste, juste "amusant" pour un FPS.

Répondre

2

Je crois que vous devez utiliser une fonction de lissage pour vous débarrasser de l'irrégularité du terrain, si cela semble être votre problème.

Je ne parcourait cette page, mais il peut être un guide décent: http://www.float4x4.net/index.php/2010/06/generating-realistic-and-playable-terrain-height-maps/

+0

Ça a l'air génial! J'essaye de l'implémenter mais l'étape d'érosion ne semble pas fonctionner correctement sur ma heightmap, je pourrais juste avoir de mauvais params? Je vais jouer avec un peu plus – Hannesh

+0

Le lien me rediriger vers une annonce étrange. :( – Alaanor

0

Vous pouvez ensuite filtrer par median filter. ça va aplatir votre surface. Mais cela détruira les montagnes. C'est bien pour les zones relativement plates comme les creux et les plateaux. Si vous voulez des montagnes pointues (avec des différences de hauteur rapides et grandes), vous devez appliquer ce filtre sélectivement.

2

Vous ne savez pas si cela vous aiderait, mais vous pourriez faire en sorte qu'une gamme de votre fonction soit transformée en une surface plane avec une forte probabilité. Par exemple, tous les résultats entre 0,1 et 0,3 ont une probabilité de 80% de fin comme une surface de 0,1. De cette façon, vous encouragez les surfaces planes mais gardez la grande variabilité que vous voulez.

+0

Cela a rendu le terrain très artificiel, j'ai eu beaucoup de surfaces planes, mais elles étaient toutes au même niveau. – Hannesh

0

Vous devriez chercher plus de matériaux especialy sur les textures procédurales et le bruit. Ces trois sont beaucoup liés. Vous devriez penser à utiliser plus d'une fonction de bruit avec différents paramètres et les combiner en utilisant différentes fonctions ou opérateurs.

Pour aider votre cas, vous pouvez utiliser une fonction pour générer du bruit haute fréquence, puis le multiplier par un bruit de basse fréquence. Cela se traduira par des pics où le bruit de basse fréquence est plus proche de 1 et les plats où il est proche de 0. Un certain type d'algorithme de lissage/érosion est cool aussi. Mais vous aurez encore besoin de beaucoup d'essais et d'erreurs et d'affiner vos paramètres pour obtenir au moins des résultats utilisables.

Certaines limites plus complexes peuvent nécessiter plus de 10 fonctions de bruit avec un mélange alpha ou un lissage et autres. Ne pensez pas que vous obtiendrez un terrain attrayant à partir d'un simple filtre.

2

Le bruit simple n'est pas suffisant pour générer un terrain d'aspect agréable. C'est juste l'une des étapes intermédiaires dans un processus plus compliqué. Vous devez simuler des phénomènes du monde réel: la température, l'érosion, les précipitations, ce genre de choses. C'est un processus lourd CPU, généralement, mais cela en vaut la peine. Voici quelques liens intéressants:

Dungeon League - lire tout cela. Des trucs géniaux.

articles du monde de génération sur The Chronicles of Doryen:

(Vous pouvez télécharger le générateur aussi, mais il est écrit en C++)

+0

Même si je pense que c'est une bonne idée, je ne pense pas que l'OP ait besoin d'une simulation aussi complexe, mais cela lui donnera une bonne idée du fonctionnement des choses. – Euphoric

1

Vous avez besoin d'un "générateur aléatoire de maître" qui décidera à quoi ressemblera une nouvelle zone, avec la fréquence de votre choix. Pour les montagnes, choisissez ce que vous avez déjà. Pour les appartements, choisissez moins de bruit.