Diese Seite beginnt mit einer grundlegenden Implementierung.
Das meiste oben ist von diesem Artikel bei T = Machine inspiriert
Ich begann mit einer grundlegenden Implementierung, die von den beiden oben genannten Links inspiriert war. Ich bin mir ziemlich sicher, dass ich viel von der reinen Theorie der Komponentensysteme abgewichen bin, und es gibt zweifellos Fehler, aber es könnte sich als nützlich erweisen, wenn Sie nach einfachen Beispielen suchen.
Bricle (C # / XNA)
Momentan werden nur einige grundlegende Entities geladen , einige Events gehandhabt usw. Die wichtigsten Speicherorte, die Sie suchen, sind der Ordner Engine.EntitySystem und wahrscheinlich der PlayScreen, in dem Entities tatsächlich erstellt werden.
Es war relativ einfach, einen einfachen typbasierten Komponentenspeicher zu erstellen und diesen hinter einem allgemeinen EntityManager zu verstecken.
Die erste Herausforderung, der ich begegnet bin, bestand darin, dass einzelne Systeme möglicherweise mehrere Komponententypen erfordern (z. B. physische Komponenten und InputMoveable). Um die relationale Datenbanksprache zu verwenden, musste ich eine Möglichkeit finden, eine JOIN-Abfrage durchzuführen. Zu diesem Zweck habe ich einen anderen Auflistungstyp für Entitäten erstellt, die aus den Abfragen für übereinstimmende Komponententypen erstellt wurden. Jede Entitätsauflistung ist mit einem OnEntityCreate-Ereignis verknüpft und überprüft, ob sie übereinstimmt. Immer noch ein paar Bugs da.
Die zweite Herausforderung bestand darin, ein "Spielobjekt" zu erstellen - ich nannte sie Vorlagen. Hier bin ich nach Angaben von T = Machine wahrscheinlich nicht sehr rein, aber es scheint zu funktionieren. Vorlagen gruppieren Komponenteninstanziierungen und ermöglichen eine einfachere Entitätszusammensetzung (dh der Ball ist ziehbar und physisch).
Ich hoffe, das ist hilfreich - Entity- / Komponentensysteme können eine Herausforderung sein, um einige der anfänglichen Hürden zu überwinden.