¿Cómo puedo crear Fog of War graduado?

14

Estoy creando un juego 2D RTS de arriba hacia abajo con fines educativos. Actualmente, solo estoy copiando el diseño / ideas de Starcraft. He decidido que probablemente también debería implementar Fog Of War.

Mis expectativas:

  • Las áreas exploradas actualmente (las unidades están allí) deben iluminarse.
  • Las áreas exploradas previamente (las unidades estaban allí) deberían ser más oscuras, pero mostrar qué cosas estaban allí cuando su unidad estaba allí.
  • Las áreas no exploradas (áreas en las que nunca han estado sus unidades) deberían ser completamente negras.
  • Debe haber un cambio de gradiente de cada tipo (p. Ej. Explorado a explorado previamente) Ver la imagen a continuación.

gradientes entre regiones de visibilidad

Solo los detalles aproximados: ¿Cómo haría esto?

Freesnöw
fuente

Respuestas:

11

Deberías agregar más información sobre cómo estás implementando el juego, pero aquí hay algunas sugerencias:

  • Mantenga un mapa de bits de todo el mapa, cada vez que se explore una nueva área, simplemente voltee los bits correspondientes a medida que se vuelvan visibles. Puedes hacer lo mismo para el área revelada.
  • Las unidades enemigas se dibujan solo si están en el área revelada. Deberá mantener un estado de "última vista" para los edificios en el área de FOW.
  • No necesita actualizar la visibilidad en cada cuadro, dependiendo de la velocidad máxima de su unidad, 5 o 10 fps deberían ser suficientes.
  • Suponiendo que está utilizando mosaicos cuadrados, solo necesitará 4 máscaras para obtener los resultados que necesita: uno para un mosaico 'sólido' (oscurecido), un gradiente 'codo' y uno 'esquina', y un 'borde recto' degradado. Puede obtener todos los demás utilizando rotaciones y diferentes transparencias.

Espero que ayude.

SkimFlux
fuente
Además, use un índice espacial para almacenar sus objetos de juego, de modo que pueda consultar rápidamente qué objetos son visibles para el jugador.
Kai