Actualmente estoy trabajando con Phaser, haciendo un juego generado por procedimientos. Quería usar un poco de arte de RPG maker en mi juego (como referencia, estoy usando el RTP). Me topé con este artículo , que analiza cómo funcionan los mosaicos automáticos. También me topé con esta respuesta que enlaza con otro artículo que explica el mosaico automático.
Aquí está la cosa, no tengo idea de cómo implementar algo como esto. Estoy seguro de que tendría que hacer un seguimiento de qué conjuntos de fichas se pueden conectar a qué otros conjuntos de fichas (es decir, algunas fichas tienen hierba en el exterior y arena en el interior, por lo que en este ejemplo tendría que tener en cuenta que "hierba "los azulejos eran los azulejos exteriores).
Hice un generador de mapas (ver aquí ), y quería hacer conexiones perfectas entre mis áreas de mosaico. Por ejemplo, las áreas marrones serían áreas "densas" (bosques, cuevas, etc.). Las áreas púrpuras serían pisos de piedra, y el área verde es la hierba. Hay un conjunto de fichas que funciona muy bien para cosas como esta:
Por lo tanto, me gustaría usar la hierba superior izquierda y el tercer juego de baldosas, piedra, que se conecta a la hierba.
¿Qué tipo de cosas debería tener en cuenta al implementar el mosaico automático usando este tipo de conjuntos de mosaicos, y hay algún algoritmo que pueda considerar para implementar?
fuente
Respuestas:
He implementado esto (usando el RTP) de una manera simple (pero bastante tediosa).
Tomé una lista de todos los vecinos para la celda actual, y con muchas
if
declaraciones dibujé el mosaico como 4 mosaicos más pequeños / cuartos.Para mí, este método conduce a algunos errores apenas visibles, pero se pueden resolver probando algunos casos extremos y corrigiendo en consecuencia.
Si observa las imágenes de origen y la imagen resultante en el creador de juegos de rol, debería poder hacer esto (quizás con algo de prueba y error) con
if
declaraciones, identificando cuál es el caso actual para el cuarto de mosaico dado y dibujando en consecuencia .Este método puede mejorarse aún más y hacerse menos tedioso con las máscaras de bits (como se menciona por jzx).
Respondiendo tu comentario:
Al renderizar solo cuartos de mosaico, las posibilidades disminuyen dramáticamente.
No debería tener que manejar mosaicos en mosaicos, ya que deberían estar en diferentes capas alfabéticamente mezcladas o coloreadas entre sí.
Además, no veo por qué necesitaría vecinos incorporados, pero eso podría manejarse por separado en el cálculo de vecinos, tal vez utilizando algún tipo de mapa (lista de pares que se combinan).
El mapa suele ser estático y las imágenes son de baja resolución, por lo que no debe preocuparse por el rendimiento.
fuente