Wie kann ich Nebel des Krieges mit Farbverlauf erstellen?

14

Ich erstelle ein Top-Down-2D-RTS-Spiel für Bildungszwecke. Momentan kopiere ich wirklich nur das Design / die Ideen von Starcraft. Ich habe beschlossen, dass ich wahrscheinlich auch Fog Of War implementieren soll.

Meine Erwartungen:

  • Derzeit erkundete Gebiete (Einheiten sind dort) sollten beleuchtet sein.
  • Bereiche, die zuvor erkundet wurden (Einheiten waren dort), sollten dunkler sein, aber zeigen, welche Dinge waren als Ihre Einheit dort war.
  • Bereiche, die nicht erkundet wurden (Bereiche, in denen sich Ihre Einheiten noch nie befanden), sollten vollständig schwarz sein.
  • Es sollte eine Gradientenänderung von jedem Typ geben (z. B. erkundet zu zuvor erkundet). Siehe Bild unten.

Farbverläufe zwischen Sichtbarkeitsbereichen

Nur die groben Details: Wie würde ich das machen?

Freesnöw
quelle

Antworten:

11

Sie sollten weitere Informationen über die Implementierung des Spiels hinzufügen, aber hier sind einige Vorschläge:

  • Behalten Sie eine Bitmap der gesamten Karte bei. Jedes Mal, wenn ein neuer Bereich erkundet wird, drehen Sie die entsprechenden Bits um, sobald sie sichtbar werden. Sie können dasselbe für den angezeigten Bereich tun.
  • Feindliche Einheiten werden nur gezogen, wenn sie sich im aufgedeckten Bereich befinden. Sie müssen für Gebäude im FOW-Bereich einen Status "Zuletzt gesehen" beibehalten.
  • Sie müssen die Sichtbarkeit nicht für jeden Frame aktualisieren - je nach maximaler Geschwindigkeit der Einheit sollten 5 oder 10 Bilder pro Sekunde ausreichen.
  • Angenommen, Sie verwenden quadratische Kacheln, dann benötigen Sie nur 4 Masken, um die gewünschten Ergebnisse zu erzielen: eine für eine 'durchgezogene' (verdunkelte) Kachel, einen 'Ellbogen'- und einen' Eck'-Farbverlauf und eine 'gerade Kante'. Gradient. Sie können alle anderen mit Hilfe von Rotationen und verschiedenen Transparenzen abrufen.

Ich hoffe, das hilft.

SkimFlux
quelle
Verwenden Sie außerdem einen räumlichen Index zum Speichern Ihrer Spielobjekte, damit Sie schnell abfragen können, welche Objekte für den Spieler sichtbar sind.
Kai