Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.07.2014, 13:28

Suche Ratschlag zu meinen Gedankengängen rund um den SceneGraph.

Guten Tag.

Ich möchte gerne ein paar Fragen zu meinen Gedankengängen stellen, die mit der Entwicklung eines kleinen 2D-Spiels einhergehen.


Wir gehen vom folgenden Ausgangspunkt aus:
Die Karte des Spiels liegt im .xml-Format aus dem Tiled-Editor vor. Es handelt sich hierbei um die isometrische-Ansicht.
Es existiert ein Map-Parser, der die verschiedenen Layer zusammenstellt um diese später zeichnen zu können.

Für den Anfang hat mir das gereicht, jedoch würde ich jetzt gerne auch z.B. bewegende Entities zur Laufzeit erstellen.
Da ich keinen Wirrwar haben möchte, wollte ich das ganze intern hierarchisch abbilden.
Hierfür habe ich mir dann die Möglichkeiten eines SceneGraphs angeschaut. (Für interessierte: Scene Graph Resources )

Mir gefällt die Idee des SceneGraphs als strukturgebende Hilfe sehr gut.
Nun habe ich mir überlegt, die Map komplett im SceneGraph abzubilden.

Wenn ich das ganze richtig verstanden habe, übernimmt der SceneGraph auf keinen(!) Fall die Aufgabe des Darstellen.
Was ist jedoch, wenn man im SceneGraph für z.B. das Entity alle nötigen Informationen für das spätere Darstellen speichert?
z.B. Position, Typ etc...
Will man das ganze Zeichnen, könnte man quasi eine Message an den Receiver der Komponente für das Darstellen schicken, die die nötigen Informationen übergibt.
So hat man einerseits die Struktur der Karte intern abgebildet und von der eigentlichen Logik für das Darstellen getrennt.


Macht diese Herangehensweise Sinn? Oder gibt es eine, gerade für diesen Zweck "einfachere" Lösung?
Ich muss an dieser Stelle zugeben, mir war dieses Pattern vorher zwar ein Begriff, bin damit noch nie in Berührung gekommen. Mein Kopf drückt nach dem stundenlangen Lesen relativ gut :crazy: .
Sollte ich irgendetwas nicht ausreichend erklärt bzw. Informationen ausgelassen haben, bitte ich dies kurz anzumerken. Werde dies dann ausbessern.

Vielen Dank fürs Zeit nehmen :).

2

13.07.2014, 13:51

Zitat

Was ist jedoch, wenn man im SceneGraph für z.B. das Entity alle nötigen Informationen für das spätere Darstellen speichert?


Pro:
+ für den Entwickler deutlich angenehmer und strukturierter
+ möglicherweise schnellerer zugriff aufgrund der Rekursion

Con:
- teilweise hoher Implementierungs-Aufwand, um rendundante Informationen zu vermeiden, wenn man für bestimmte bereiche kein SceneGraph nutzen möchte
- die dynamische Generierung des Scene Graph kann auch seine Zeit in anspruch nehmen und alles zu prebaken wird auf dauer nicht flexibel genug sein


Dass man das Management der Daten vom Drawing selbst so weit wie möglich trennen sollte, versteht sich ja von selbst ;)
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

3

13.07.2014, 14:17

Vielen Dank für die schnelle Antwort.
Gibt es eigentlich in diesem Zusammenhang weitere nützliche Patterns, die mir helfen könnten?

Werbeanzeige