Hallo zusammen,
ich bin gerade dabei bei meinem Prototypen ein Kampfsystem zu implementieren. Allerdings bin ich nicht wirklich sicher wie der strukturelle Aufbau dahinter am besten aussehen soll.
Mich würden eure Erfahrungen interessieren bzw. ob jemand ein best practice kennt?
Mein aktueller Aufbau sieht in Etwa so aus (nur relevante Klassen gelistet):
Class Player:
Beinhaltet sämtliche spielerbezogenen Daten. (Position, Attribute, Inventar etc.)
Class EnemyNPC/NonEnemyNPC
Typische NPCs. Entweder gefährlich oder nicht. Werden von der Klasse
WorldCharacters verwaltet.
Class Attack
Beinhaltet Informationen zur Attake des Spielers oder EnemyNPC. (Schaden, Ziel etc.)
Class AttackAnimation
"Hat-Eine"-Beziehung zu Attack (wickelt die Angriffsanimation ab, abhängig von der ausgewählten Waffe, ggf irgendwelche bling-bling Effekte).
Soweit so unspektakulär denke ich.
Meine Idee wäre nun, wenn der Spieler auf die Tasten hämmert um Angriffe auszulösen, würde ich diese in eine Art Queue in der Player-Klasse packen (zB. List<Attack>) und diese dann - je nach Tickrate - abarbeiten. Die Gegenangriffe müssten dann auf dem EnemyNPC-Objekt getriggert werden. Wenn das Ziel-Objekt stirbt, wird die List<Attack> geleert und der Kampf ist vorbei. Beim Kampf mit mehreren Zielen müsste ich mir mit IDs oder so helfen.
Ist das so Sinnvoll? Eine Liste aus Angriffs-Objekten? Nachdem ja jede Attacke mehrere Eigenschaften hat würde ich das irgendwie kapseln wollen, allerdings fürchte ich, dass das bei vielen Gegnern unglaublich viele dieser Attack-Objekte herumfliegen. Aber vielleicht ist das eh kein Problem?
Vielleicht hat ja jemand eine Idee wie das Klassiker wie zB Diablo lösen, wo ja auch etliche Angriffe auf Gegnerhorden nieder gehen?
Edit:
Das mit der Queue ist natürlich Unsinn. Keine Ahnung was ich mir dabei gedacht habe
Das darf max. eine Länge von 1 haben (quasi als nextAttack)