Demandez au moteur de gérer tout le code redondant parmi les calculs d'endommagement pour chaque caractère. Les personnages seront forcés de faire le reste. Je ne sais pas grand chose sur le type de jeu que vous faites. Mais pour certains jeux, lorsque le moteur est dit que A attaque B, le code pourrait ressembler à:
//somewhere in your engine:
damage = A.get_damage(B);
trace (damage); // {damage:60, hit_chance = 0.8}
B.send_damage(damage);
Je crois qu'il est nécessaire dans la plupart des cas d'avoir B.send_damage()
plutôt que le moteur contrôlant directement la santé attribut de B. AI ont tendance à être axée sur l'état. Il y aura probablement des variables qui sont exclusives à A ou B et qui affectent les dégâts (comme l'invincibilité), et (IMO) il vaut mieux que le moteur n'ait aucune idée de leur existence (ou vous aurez d'énormes blocs de commutation;
Vous voyez comment j'ai dû envoyer B comme argument dans A.get_damage()
? Malheureusement, c'est souvent nécessaire dans une telle approche. Les dégâts/hit_chance de A peuvent être influencés par la distance de B par rapport à A.