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

Tris

Treue Seele

  • »Tris« ist der Autor dieses Themas

Beiträge: 102

Wohnort: ~Stuttgart

  • Private Nachricht senden

1

23.07.2020, 02:57

Klassen mit teilweise gleichen Funktion modellieren?

Hallo allerseits,

ich steh mal wieder auf dem Schlauch...


In C&C Generals gibt es 3 Armeen:

  • 2 Armeen hatten Bulldozer zum Bauen und Reparieren von Gebäuden.
    Für Ressourcen gab es separate Einheiten die sonst keine Funktion hatten.
  • 1 Armee hatte Arbeiter zum Bauen und Reparieren von Gebäuden UND war auch für das Sammeln von Ressourcen zuständig.

Wie modelliert man so etwas?

Ich habe eine Klasse Unit und davon die Klassen Worker und Transporter abgeleitet.
Aber je nach Fraktion kann ein Worker zusätzlich auch ein Transporter sein, und umgekehrt.

Mit Mehrfachvererbung wären ja grundsätzlich alle Worker auch Transporter, aber dann brauch ich auch keine 2 abgeleitete Klassen dafür.

Was übersehe ich hier? Welche Wissenlücke habe ich?

EDIT:
Da ich Unity nutze habe ich überlegt ob man dann nicht einfach beide abgeleitete Klassen als Script anhängt für diesen Fall.
Kann das schon die Lösung sein? Zumindest für Unity?

EDIT 2:
Weiterführende Überlegung vom vorherigen Edit:

Ist es sinnvoll für sämtliche Bereiche einer Klasse separate Komponenten (also Scripte) an die Objekte hängen?
Zum Beispiel für Einheiten und Gebäude einen HealthController zu programmieren der sämtliche Schäden am Objekt steuert (z.B. auch Rüstung, Schild).
Einen MovementController der allen mobilen Einheiten angehängt wird.
Einen WorkerController der allen Einheiten die Bauen und Reparieren können angehängt wird,
einen TransporterController, einen AttackController usw.
Da hätten manche Einheiten eine handvoll Komponenten.

Und beim Auswählen einer Einheite müsste man dann immer prüfen welche der Komponenten diese Einheit besitzt und dementsprechend die Funktion auf dem HUD einblenden oder den Cursor anpassen (angreifen, bewegen, reparieren).
Aber dann bräuchte ich auch keine abgeleiteten Klassen mehr. Da habe ich dann einfach eine Unit Klasse mit x Komponenten die bestimmen was die Klasse kann.

Wie macht man sowas "richtig"?

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Tris« (23.07.2020, 03:17)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.07.2020, 09:40

In Unity würde man das so machen, wie du es beschrieben hast. Also die verschiedenen Aspekte des Verhaltens eines Objekts in einzelne Komponenten auslagern und im GameObject kombinieren.

Tris

Treue Seele

  • »Tris« ist der Autor dieses Themas

Beiträge: 102

Wohnort: ~Stuttgart

  • Private Nachricht senden

3

24.07.2020, 17:18

In Unity würde man das so machen, wie du es beschrieben hast. Also die verschiedenen Aspekte des Verhaltens eines Objekts in einzelne Komponenten auslagern und im GameObject kombinieren.


Danke! :)

Werbeanzeige