Come posso creare una nebbia sfumata di guerra?


14

Sto creando un gioco 2D RTS dall'alto verso il basso per scopi didattici. Attualmente, sto davvero copiando il design / le idee di Starcraft. Ho deciso che probabilmente dovrei implementare anche Fog Of War.

Le mie aspettative:

  • Le aree attualmente esplorate (le unità sono presenti) dovrebbero essere illuminate.
  • Le aree esplorate in precedenza (le unità erano lì) dovrebbero essere più scure ma mostrare quali fossero le cose lì quando l'unità era lì.
  • Le aree non esplorate (aree in cui le tue unità non sono mai state) dovrebbero essere completamente nere.
  • Dovrebbe esserci una variazione gradiente da ciascun tipo (ad esempio esplorato a esplorato in precedenza) Vedi foto sotto.

gradienti tra le regioni di visibilità

Solo i dettagli approssimativi: come farei questo?

Risposte:


11

Dovresti aggiungere ulteriori informazioni su come stai implementando il gioco, ma qui ci sono alcuni suggerimenti:

  • Mantenere una bitmap dell'intera mappa, ogni volta che viene esplorata una nuova area, capovolgere i bit corrispondenti non appena diventano visibili. Puoi fare lo stesso per l'area rivelata.
  • Le unità nemiche vengono pescate solo se si trovano nell'area rivelata. Dovrai mantenere uno stato "ultimo accesso" per gli edifici nell'area FOW.
  • Non è necessario aggiornare la visibilità di ogni fotogramma: a seconda della velocità massima dell'unità, 5 o 10 fps dovrebbero essere sufficienti.
  • Supponendo che tu stia utilizzando tessere quadrate, avrai solo bisogno di 4 maschere per ottenere i risultati di cui hai bisogno: una per una tessera "solida" (oscurata), una sfumatura "gomito" e una "curva" e una "linea diritta" pendenza. Puoi ottenere tutti gli altri da questi usando rotazioni e trasparenze diverse.

Spero possa aiutare.


Inoltre, usa un indice spaziale per memorizzare gli oggetti di gioco, in modo da poter interrogare rapidamente quali oggetti sono visibili al giocatore.
— Kai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.