Lesen mehrerer anderer Fragen und Antworten zur Verwendung eines komponentenbasierten Systems zum Definieren von Elementen Ich möchte eines für die Elemente und Zaubersprüche in einem in PHP geschriebenen Webspiel verwenden. Ich bin nur bei der Implementierung festgefahren.
Ich werde ein in dieser Reihe vorgeschlagenes DB-Schema verwenden (Teil 5 beschreibt das Schema).
http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-1/
Dies bedeutet, dass ich eine Elementtabelle mit allgemeinen Elementeigenschaften habe, eine Tabelle, in der alle Komponenten für ein Element aufgelistet sind, und schließlich Datensätze in jeder Komponententabelle, aus der das Element besteht.
Angenommen, ich kann die ersten beiden zusammen in einer einzigen Abfrage auswählen, werde ich dennoch N Abfragen für jeden Komponententyp durchführen. Ich bin damit einverstanden, weil ich die Daten in Memcache zwischenspeichern und dort zuerst überprüfen kann, bevor ich irgendwelche Abfragen mache. Ich muss die Elemente bei jeder Anforderung aufbauen, in der sie verwendet werden, damit die Implementierung schlank sein muss, auch wenn sie aus dem Memcache abgerufen werden.
Aber genau dort bin ich zuversichtlich, ein Komponentensystem für meine Artikel zu implementieren. Ich denke, ich müsste Attribute und Verhaltensweisen von jeder verwendeten Komponente in den Container bringen. Ich bin mir einfach nicht sicher, wie ich das effektiv machen soll, und schreibe nicht viel spezialisierten Code, um mit jeder Komponente umzugehen.
Beispielsweise muss eine AttackComponent möglicherweise wissen, wie Ziele innerhalb eines Kampfkontexts gefiltert werden, und möglicherweise auch ein Angriffsverhalten bereitstellen. Derselbe Gegenstand kann auch eine UsableComponent haben, die es ermöglicht, den Gegenstand zu verwenden und einen Effekt auf eine andere Gruppe von Zielen anzuwenden, die unterschiedlich aus demselben Kampfkontext gefiltert wurden. Dann ist nicht jeder Teil eines Elements ein aktiver Teil. Eine AttributeBonusComponent muss möglicherweise nur aktiviert werden, wenn sich das Element in einem ausgerüsteten Zustand befindet oder wenn die Seite mit den Artikeldetails angezeigt wird.
Wie soll ich letztendlich alle Komponenten zusammen in den Container bringen, damit ich die richtige Liste der Ziele erhalte, wenn ich einen Gegenstand als Waffe verwende? Wissen Sie, wann eine Waffe auch als Gegenstand verwendet werden kann? Oder um die Boni, die der Gegenstand bietet, auf ein Charakterobjekt anzuwenden?
Ich habe das Gefühl, dass ich zu weit in das Kaninchenloch gegangen bin und die einfache Lösung vor mir nicht erfassen kann. (Wenn das überhaupt Sinn macht.)
Wenn ich von hier aus die beste Antwort umsetzen würde, hätte ich das Gefühl, viele der gleichen Fragen zu haben.
Modellieren mehrerer "Verwendungen" (z. B. Waffe) für verwendbares Inventar / Objekt / Gegenstände (z. B. Katana) in einer relationalen Datenbank