Ich habe untersucht, wie die XNA Content-Pipeline für ein Spiel, an dem ich arbeite, angemessen verwendet werden kann. Es fiel mir jedoch schwer, meinen Kopf darum zu wickeln, und ich bin mir nicht sicher, wie ich am besten vorgehen soll.
Das konkrete Beispiel ist, ich habe ein 2-D-RPG-Spiel von oben nach unten. Ich möchte ein Dienstprogramm (wahrscheinlich Windows Forms) erstellen, mit dem ich Karten einfach erstellen und bearbeiten kann. Jede Karte besteht aus einer oder mehreren Grafikebenen, wobei jede Ebene ein N x N-Raster von Kacheln enthält. Jede Kachel beginnt wiederum als Bitmap.
Angesichts der obigen Informationen sehe ich einige Möglichkeiten, um fortzufahren:
- Speichern Sie die Karteninformationen in einer XML-Datei, die mit dem Content Pipeline XML Loader kompatibel ist. Jede Kachel wird als Zeichenfolgenreferenz auf das entsprechende Texturelement gespeichert. Textur-Assets werden im Spielprojekt hinzugefügt.
- Speichern Sie die Karteninformationen in einer XML-Datei, die mit dem Content Pipeline XML Loader kompatibel ist. Jede Kachel wird als Pfad zu den entsprechenden .bmp / .png-Dateien gespeichert.
Nun gibt es Dinge, die ich an beiden Ansätzen wirklich nicht mag. Das Hauptproblem bei Ansatz 1 besteht darin, dass die Kartenerstellung und die Erstellung des .xnb-Textur-Assets vollständig getrennt sind. Die XML-Map-Datei wird vom Dienstprogramm erstellt, während das Textur-Asset meinem Inhalt in meinem Spiel hinzugefügt wird. Dies wird zu einem Problem, bei dem versucht wird, sicherzustellen, dass die XML-Zuordnungsdatei und alle Textur-Assets im Projekt synchron bleiben.
Ansatz zwei würde es mir ermöglichen, alle entsprechenden Bilddateien neben den Kartendateien mit dem Kartendienstprogramm zu speichern. Es scheint jedoch, dass ich so etwas nicht tun sollte. Außerdem müsste ich beim Laden der Karten intelligenter sein, damit ich nicht für jede Kachel schnell das gleiche Bild von der Disc lade.
Meine Frage lautet also: Wenn Sie ein Dienstprogramm zur Inhaltsgenerierung (wie einen Karteneditor) hinzufügen möchten, wie können Sie am besten sicherstellen, dass der benutzerdefinierte Inhalt (Kartendatei) mit den Textur-Assets synchron bleibt. Denken Sie auch daran, dass ich in meinem Karteneditor die Fähigkeit benötigen würde, die Textur-Assets zu laden und anzuzeigen.
Jede Eingabe wird sehr geschätzt.