vor kurzem habe ich versucht, meine Hand bei der Programmierung eines Spiels in C#. Ich benutze XNA nicht dafür, da ich dachte, ich würde mehr lernen, wenn ich das Spiel von Grund auf neu codiere (obwohl ich eine Multimedia-Engine verwende).Game Programmierung - Kommunikation zwischen Spiel-Objekten in 2d
Ich versuche ein 2D-RPG-Spiel zu entwerfen - ein bisschen ehrgeizig, weiß ich, aber ich verstehe zumindest die grundlegenden Teile des Spiels (dh den Code der "Kesselplatte") ziemlich gut und ich ' Ich habe einen Teil erreicht, von wo ich nicht weiß, wohin ich gehen soll.
Im 2D-Spiel kommen Sie durch das Spiel, indem Sie verschiedene Bereiche durchwandern. Sobald Sie auf eine "Portalkachel" treffen, werden Sie zum nächsten Bereich usw. transportiert.
Ich habe Probleme zu verstehen, wie dieses Bereichsobjekt eingerichtet werden soll. Das war meine erste Idee: Jedes Gebiet hat ein paar verschiedene Sammlungsstrukturen (zum Beispiel ein Sichtbarkeitsquadtree, ein Kollisionsquadtree, eine AI-Entity List usw.). Wenn ich also eine feindliche Entität in das Spiel einfügen würde, würde sie in den Sichtbarkeitsquadtree, den Kollisionsquadtree (weil Sie mit Entitäten kollidieren können) und die AI-Entitätsliste gesetzt werden. Wenn der Bereich eine Aktualisierungsanforderung empfängt, weist er jede dieser Strukturen an, sich selbst zu aktualisieren, was wiederum den Entitäten mitteilt, sich selbst zu aktualisieren. Alles gut, so weit.
Meine Frage ist: Was ist, wenn dieser Feind mit anderen Objekten kommunizieren muss? Zum Beispiel muss es vielleicht wissen, ob der Spieler in einem bestimmten Bereich davon war. Oder ob es vom Spieler getroffen wurde. Oder wo sich alle kollidierbaren Objekte in dem Bereich befinden (so könnte Pfad gefunden werden).
Die erste (und schlechte) Lösung für dieses Problem wäre einfach, jeder Entität einen Verweis auf jede Sammlung zu übergeben. Aber das fördert offensichtlich eng gekoppelte Objekte, was nicht gut ist.
Die zweite Lösung, die ich entwickelte, war, dass jede Entität den Bereich über Nachrichtenstrukturen abfragen konnte. So könnte ein Feind sagen: "Gebt mir eine Liste jeder Entität in X Entfernung von meiner Position" und der Bereich würde eine Antwort zurückgeben. Dies würde jedoch zunehmend schwieriger werden, da ich mehr und mehr Möglichkeiten in diesem Bereich programmieren müsste ("Gib mir eine Liste von Entitäten, die nicht in meiner Nähe sind", "Gib mir eine Liste aller Entitäten mit niedrigerer Gesundheit als X "usw.).
Was ich suche ist eine zeitgetestete Lösung für dieses Problem der Kommunikation zwischen Objekten und im Grunde, wie man einen Bereich einrichtet. Ich nehme an, es würde auch eine Art Nachrichtensystem benötigen, obwohl ich mir nicht sicher bin.
Danke fürs Lesen.
Wall of Text ist beängstigend – Chad