Visual Programming Framework
Über dieses Projekt
Ich nutzte das XNode Package um ein Editor Tool zu schreiben, dass das Erstellen von neuen Fähigkeiten für einen Spiel einfacher machen sollte. Das erstellte Visual Programming Framework ermöglichte es mir und meinem Kollegen, schnell und sicher neue Angriffsarten und Fähigkeiten für Türme in ein Tower Defense Spiel hinzuzufügen.
Die Angriffe in dem Spiel konnten zum Teil relativ lange Verkettungen an Effekten haben. Zum Beispiel:
- Turm schießt Projektil auf Gegner
- Projektil trifft Gegner und verursacht Schaden
- Für jeden Gegner im Umkreis von 3 Einheiten um ursprünglichen Gegner wird ein neues Projektil abgefeuert
- Für jeden Gegner, der von den neuen Projektilen getroffen wird, wird Schaden zugefügt und der Gegner für 3 Sekunden verlangsamt
Da viele dieser Schritte in leicht abgewandelter Form für mehrere Fähigkeiten benötigt worden sind, stellte sich schnell heraus, dass wir bei der Implementierung von neuen Fähigkeiten oft duplizierten Code verwendeten und gerade die Implementierung von komplexen Fähigkeiten zum Teil verschiedene Klassen auf mehreren Entitäten benötigte.
Ich wollte schon länger einmal ein eigenes visuelles Programming Framework implementieren und sah hier eine gute Gelegenheit, damit unsere Probleme zu lösen, was auch erfolgreich war.
Hauptfunktionen
- Data Driven Design: Fähigkeiten können durch die Modellierung im Node basierten Framework als JSON-Dateien zur Laufzeit geladen werden, dies ermöglicht es schnell Änderungen zu testen ohne das Projekt neu bauen zu müssen.
- Modulares Design: Die Abstraktion von Code durch die Nodes, verhindert effektiv Code Duplikationen und erzwingt, dass nur vorgesehene Schnittstellen verwendet werden.
Herausforderungen
Das Portieren von Spiel relevantem Code in die Nodes hat erfordert, dass Schnittstellen zwischen Spielsystemen noch klarer definiert werden mussten und vorher verzahnte Logik, wie zum Beispiel für die Zielfindung der Türme in klare Module abgetrennt werden mussten. Zudem definiert der visuelle Graph Logik für mehrere Entitäten (Turm, Projektile, Effekte), diese Logik musste möglichst sauber an alle Entitäten auch wenn diese erst während der Ausführung entstehen übergeben werden.
Erkenntnisse
Es hatte viele Vorteile das visuelle Framework zu implementieren, da wir in kürzester Zeit komplexe mehrstufige Fähigkeiten für unser Spiel bauen konnten, die vorher lange Zeit für sich beansprucht hätten. Die starke Modularisierung die für das Implementieren von Nöten war, sorgte außerdem für eine robuste gut Wartbare Codebase. Es hat mir viel Spaß gemacht dieses System zu implementieren und die ersten Fähigkeiten damit zu entwerfen.