Jak mogę stworzyć gradientową Mgłę Wojny?

14

Tworzę odgórną grę 2D RTS do celów edukacyjnych. Obecnie tak naprawdę kopiuję projekt / pomysły Starcraft. Zdecydowałem, że powinienem również wdrożyć Fog Of War.

Moje oczekiwania:

  • Obszary aktualnie badane (tam są jednostki) powinny być podświetlone.
  • Obszary wcześniej zbadane (jednostki tam były ) powinny być ciemniejsze, ale pokaż, jakie rzeczy były tam, kiedy była tam twoja jednostka.
  • Obszary niezbadane (obszary, w których nigdy nie były Twoje jednostki) powinny być całkowicie czarne.
  • Powinna nastąpić zmiana gradientu dla każdego typu (np. Eksplorowana do poprzedniej eksplorowanej) Patrz zdjęcie poniżej.

gradienty między regionami widoczności

Dokładne szczegóły: jak mam to zrobić?

Freesnöw
źródło

Odpowiedzi:

11

Powinieneś dodać więcej informacji o tym, jak wdrażasz grę, ale oto kilka sugestii:

  • Zachowaj mapę bitową całej mapy, za każdym razem, gdy eksplorowany jest nowy obszar, po prostu odwróć odpowiednie fragmenty, gdy staną się widoczne. Możesz zrobić to samo dla ujawnionego obszaru.
  • Wrogie jednostki losowane są tylko wtedy, gdy znajdują się w odsłoniętym obszarze. Musisz zachować stan „ostatnio widziany” dla budynków w obszarze FOW.
  • Nie musisz aktualizować widoczności co klatkę - w zależności od maksymalnej prędkości jednostki, 5 lub 10 klatek na sekundę powinno wystarczyć.
  • Zakładając, że używasz kwadratowych kafelków, potrzebujesz tylko 4 masek, aby uzyskać potrzebne wyniki: jedna dla „solidnej” (zaciemnionej) płytki, jedna gradient „łokieć” i jeden „narożny” oraz jedna „prosta krawędź” gradient. Możesz uzyskać wszystkie inne z nich za pomocą rotacji i różnych folii.

Mam nadzieję, że to pomaga.

SkimFlux
źródło
Ponadto użyj indeksu przestrzennego do przechowywania obiektów gry, abyś mógł szybko sprawdzić, które obiekty są widoczne dla gracza.
Kai,