Aquí hay un ejemplo de tal propagación de moco. La sustancia se extiende alrededor de la fuente (en este ejemplo, la fuente sería el edificio alienígena principal).
El juego es Starcraft, la sustancia púrpura se llama creep.
¿Cómo se lograría este tipo de propagación de sustancias en un entorno 2D de arriba hacia abajo? ¿Recalcular la progresión de la sustancia y regenerar el efecto sobre la marcha cada fotograma o más bien usar una gran colección de fichas o algo más?
2d
algorithm
graphic-effects
Nathan
fuente
fuente
Respuestas:
De acuerdo con su comentario en las otras respuestas, su problema no es el algoritmo de crecimiento progresivo, sino el algoritmo que elige qué mosaico de crecimiento utilizar.
Qué mosaico usar depende de si:
Eso significa que necesitará un total de 16 fichas. Puede abordarlos fácilmente con un campo de bits. Aquí hay un pseudocódigo que elegirá un mosaico diferente para cada constelación de fluencia posible:
Tenga en cuenta que siempre que cambie el estado de infección de un mosaico, todos los mosaicos adyacentes infectados deben ser reevaluados, porque su vecindario ahora ha cambiado.
Cómo diseñar los 16 gráficos de mosaico para que encajen bien es una (nueva) pregunta para un diseñador gráfico.
fuente
Hace un tiempo leí un artículo de estrategia que explicaba en detalle cómo se propaga el creep en Starcraft 2, estoy luchando por encontrarlo ahora, pero recuerdo que es bastante simple y funciona un poco así
La forma más fácil de rastrear a qué fichas se ha extendido el arrastramiento es probablemente solo una bandera para cada ficha: no intentes volver a calcularla cada turno.
El tiempo entre "ticks" se puede usar para controlar la velocidad de propagación de la fluencia, de forma alternativa, puede permitir que la fluencia se extienda a varias fichas cada "tick", o incluso aleatorizar el tiempo entre ticks.
El algoritmo anterior tiene el efecto de que la fluencia se propaga más rápido si está bloqueada por acantilados a ambos lados, sin embargo, en su lugar, puede elegir una ficha aleatoria dentro del rango de la fuente de la fluencia y luego solo extender la fluencia a esa loseta si no es un acantilado .
fuente