Dies ist eine Designfrage ... Ich bin sicher, dass dies allgemeiner sein könnte, aber ich habe es schwer damit. Ich wundere mich über Design für Spielobjekt-Interaktionen - hier ist mein Beispiel (2D-Puzzle-Plattform).
Angenommen, der Spieler versucht, ein Level zu überwinden. Es gibt viele Lichter, die in verschiedene Richtungen gerichtet werden können. Hier ist ein Beispiel, wie diese Lichtobjekte interagieren könnten ...
- One Light projiziert eine Plattform, mit der der Spieler eine Lücke überqueren kann
- Ein Licht verringert die Reibungskoeffizienten von allem, was es berührt, ein anderes erhöht sie
- Ein Licht hebt die Effekte aller Lichter auf, wodurch die Plattform verschwindet, während dieses Licht eingeschaltet ist, und hebt die Reibungsmodifikatoren auf
- Etc...
Wie kann dieses Problem am besten gelöst werden, wenn eine Komponentenarchitektur verwendet wird? Komponenten für jedes Hauptobjekt sind offensichtlich und bieten eine saubere Möglichkeit, ihre Auswirkungen auf die Umwelt zu definieren. Eine Klasse, um Interaktion "aufzulösen" (scheint, als könnte das schnell zu einem Chaos werden)? Verwenden Sie das Dekorationsmuster, um kombinierte Objekte für diejenigen zu erstellen, die zu einem bestimmten Zeitpunkt interagieren? Eine Datenstruktur, die sich dazu anbietet?
Auch das Anschließen von Audio an diese Interaktionen? Das Anschließen von Audio an das System scheint genauso zu sein wie das Anschließen einer anderen Eigenschaft, z. B. der Sichtbarkeit oder der Bewegung / Kollision des Players.
Wenn weitere Komponenten hinzugefügt werden, wäre es natürlich schön, wenn es ein robustes System gäbe, das neue mit nur geringen Änderungen handhaben könnte, aber ich bin nicht mit der Vorgehensweise beim Entwerfen vertraut.
Sonstige Informationen: Die von mir verwendete Engine ist eine XNA-Engine namens IceCream .