¿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?

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.