Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Gandi

Frischling

  • »Gandi« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Bayern

Beruf: Elektrotechnikingenieur

  • Private Nachricht senden

1

29.04.2012, 00:12

Clockwise.Base - Komponentenbasiertes Entity-System in C#

Hey!

Ich wollte euch mein neuestes Projekt vorstellen, an dem ich in letzter Zeit einiges gearbeitet habe. Es handelt sich dabei um eine Bibliothek mit der man (unter anderem) GameObjects aus mehreren modularen Components zusammenbauen kann. Die Idee ist nicht neu, meine Implementierung hat aber einige Features zu bieten, die es bisher noch nicht gab.

Ein Auszug:
  • Objekterstellung mit Reflection.Emit
  • Ausgeklügeltes System zur Inter-Component-Kommunikation mit Strong, Weak und Loose references
  • Vereinfachte Entity-Instanziierung durch automatisch generierte Interfaces
  • Modul-System für Plugins
  • Entity Creator Tool - einfaches Verknüpfen der Komponenten mittels einer grafischen Benutzeroberfläche

Das Projekt steht seit heute - inklusive ausführlicher Erläuterung - auf Codeplex. Der Text ist zwar leider auf englisch, aber ich denke damit kommt ihr klar... ich hab zumindest keine Lust das ganze nochmal auf deutsch zu übersetzen :D

Hier der Link: Clockwise.Base on Codeplex

Über Feedback & Kritik hier oder auf der Projektseite wäre ich sehr dankbar.

Gruß Gandi
:)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.04.2012, 09:36

Sehr cool! Schön geschrieben.
Gibt es einen derartigen Artikel schon in einem Game Programming Gems?
Wenn nicht, versuch's doch mal dort :)

Frage:
Kann man mehrere Komponenten vom selben Typ zu einem Objekt hinzufügen?

Gandi

Frischling

  • »Gandi« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Bayern

Beruf: Elektrotechnikingenieur

  • Private Nachricht senden

3

29.04.2012, 19:06

In Game Programming Gems 6 ist schon ein Artikel darüber drin, der eine einfache C++ Implementierung beschreibt.

Mehrere Komponenten eines Typs kann man nicht hinzufügen, weil das dem Grundprinzip widerspricht. Ich war schon versucht, diese Option einzubauen, um z.B. eine ColorComponent als ForegroundColor und BackgroundColor nutzen zu können, allerdings ist das dann auch wieder ein Rückfall in ein objektorientiertes Muster, da man hier ja versucht, zusammengehörende Daten und Funktionen in eine Klasse zu kapseln und zu verwenden.

Wenn man so etwas machen will, sollte man die Paradigmen klar trennen.
1) die Daten und Funktionen in eine normale Klasse kapseln, z.B. class Color (Objektorientiert)
2) die Komponenten wirklich als Aspekte einer Entity behandeln, also eine Klasse BackgroundColor und ForegroundColor erstellen, wie jeweils eine Instanz der Klasse "Color" enthalten und modifizieren. (Komponentenbasiert)
:)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

29.04.2012, 19:39

Und wenn ein Objekt z.B. aus mehreren Meshes besteht?
Muss ich dann Sub-Objekte machen?
Oder eine Komponente, die mehrer Meshes enthalten kann?

Gandi

Frischling

  • »Gandi« ist der Autor dieses Themas

Beiträge: 36

Wohnort: Bayern

Beruf: Elektrotechnikingenieur

  • Private Nachricht senden

5

29.04.2012, 20:22

Ich persönlich würde eine MeshComponent empfehlen, die eine Liste von Meshes enthalten kann - aber es steht dem Benutzer der Bibliothek natürlich offen das zu lösen, wie er möchte.
:)

Werbeanzeige