Insbesondere denke ich an C # und XNA und natürlich an Windows. Angenommen, ich habe das Hauptspiel, das ein normales XNA-Spiel ist, aber irgendwann möchte ich kurz auf ein Minispiel umsteigen, das ebenfalls in XNA implementiert wurde, aber völlig unabhängig von meinem Spiel ist.
Gibt es eine Möglichkeit, zwischen den beiden Spielen hin und her zu wechseln, während ich das gleiche Windows-Handle wieder verwende? Und vorzugsweise den alten Zustand im Speicher behalten, obwohl ich dieses persistente Schreiben auch in eine Datei implementieren könnte.
Und wenn ich zum ersten Spiel zurückkehre, gibt es eine Möglichkeit, auf den Wert zuzugreifen, der von der Hauptmethode des Minispiels zurückgegeben wird? Zum Beispiel 1 oder 0, je nachdem, ob der Spieler das Minispiel beendet hat oder nicht.
Andrew Russell schrieb:
Sie sollten Ihr Minispiel und Ihr Hauptspiel in separate Klassen innerhalb desselben Programms einteilen. Jede dieser Klassen sollte über Methoden zum Aktualisieren, Zeichnen, Initialisieren usw. verfügen. Sie sollten dann eine Art Master-Controller haben, der diese Methoden aufruft, um jeweils nur ein Spiel aktiv zu haben (dies könnte auch einfach in Ihrer Hauptspielklasse sein).
Danke für die Antwort. Ihr Vorschlag ist das, was ich in einer normalen Spielsituation tun würde - eine, in der ich alle Minispiele und deren Inhalte erstellen würde.
Dies ist jedoch kein Spiel, sondern ein Game-Maker-Tool zum Erstellen grafischer Abenteuer, und es ist der Endbenutzer, der möglicherweise das Bedürfnis verspürt, externe Minispiele als Reaktion auf bestimmte Spielereignisse anzuschließen.
Die ältere interne Engine, die ich ersetzen möchte, wurde in Flash erstellt und löste dieses Problem einfach durch Laden einer SWF in die Haupt-SWF. In den meisten Fällen hat es gut funktioniert. Ich versuche etwas Ähnliches zu machen, aber jetzt mit XNA.
Aber wenn ich Ihrem Zug oder Gedanken folge, könnte ich vielleicht eine separate Assembly erstellen, die eine Basisklasse oder eine gemeinsame Schnittstelle für alle Minispiele enthält, und sie als DLL kompilieren. Dann würde der Benutzer auf diese Bibliothek verweisen, die Schnittstelle implementieren und in seine eigene Bibliothek kompilieren, die zur Laufzeit von der Engine geladen und als separater Status innerhalb des Hauptspiels ausgeführt werden könnte. Vermisse ich einige versteckte Implikationen?