Estoy programando un juego basado en fichas y tengo algunas fichas básicas (hierba, tierra, etc.), pero no puedo entender cómo hacer una buena generación de mapas aleatorios, porque cuando hago una selección realmente aleatoria, si la ficha debería ser hierba / tierra, entiendo esto:
Entiendo por qué sucede esto, pero lo que quiero es crear algunas áreas continuas aleatorias de césped o tierra. Algo que tendría más sentido, como este:
Respuestas:
Lo que podrías hacer es generar aleatoriamente un mapa de Voronoi como este:
center points
(ver los puntos negros) y decidir al azar si son hierba o tierra.center point
de tierra o césped.Si lo que hizo anteriormente es "lanzar una moneda" por cada ficha (ruido), generar un diagrama de Voronoi proporcionará un resultado mucho mejor.
Podría mejorar esto dividiendo el
center points
enislands
un algoritmo que:centers points
y los designa comoleaders
.fuente
center points
. Luego decida si son hierba o tierra. Ahora pase sobre la matriz y decida si cada mosaico está más cerca de un punto de tierra o de hierba. Tal vez dime qué parte desafiante?Podría usar el ruido perlin, que normalmente se usa para la generación de mapas de altura. Ruido de Perlin en los juegos
Entonces podría usar las alturas como asesor, qué tan alta es la probabilidad de que ocurra hierba / tierra en una región del mapa.
Ejemplo (valores de ruido de Perlin de 0-256): si el valor es superior a 200, la probabilidad de que se coloque hierba es del 80% (suciedad del 20%). Si el valor está entre 100 y 200, la probabilidad de que se coloque el césped es del 50% (la suciedad también es del 50%). Si el valor es inferior a 100, la probabilidad de que se coloque hierba es del 20% (suciedad del 80%).
fuente
http://gamedevelopment.tutsplus.com/tutorials/generate-random-cave-levels-using-cellular-automata--gamedev-9664
Aquí está mi versión del método de autómata celular. Comience rellenando la cuadrícula de forma aleatoria y luego ejecute estas reglas de autómatas cullulares un par de veces
y termina pareciendo una cueva
el índice se puede convertir a la posición x & y y volver con este código
Acabo de devolver una lista de bools porque utilizo esta lista para muchas cosas: cuevas, árboles, flores, césped, niebla, agua, incluso puede combinar varias listas de diferentes maneras aquí, primero elimino todas las cuevas más pequeñas y luego unimos dos listas aleatorias
fuente
Selecciona un punto en el mapa. Coloque el tipo de mosaico deseado con un valor base como 40. Mantenga un registro de dónde colocó su mosaico recién deseado. Agregue el punto de partida a una lista.
Para cada punto de esta lista, visita a todos los vecinos. Mientras tenga suficiente energía (comenzada en 40), agregue un mosaico deseado y agréguelo a la lista para ser visitado. Dale a la nueva ficha menos potencia, determinada por ti. Más fácil = reducción aleatoria. Después de visitar el mosaico de la lista, elimínelo. Comience de nuevo visitando cualquier mosaico no visitado pero creado.
fuente