Destructibilité totale en 2D

Sep 08 2020

Je voudrais créer un petit jeu sur les batailles au Moyen Âge. Imaginez une carte 2D générée de manière procédurale avec des rivières, des champs et un petit château.

Deux côtés. Un joueur attaquera le château et le second le défend.

L'ensemble du jeu sera avec une vue - de haut en bas. J'aime ce look (et peut-être que cela simplifiera le travail).

Imaginez le canon d'un joueur s'approchant du château et l'attaquant. Le canon tire (par exemple dans une tour) et la tour commence à s'effondrer. Comment rendre ce processus plus intéressant? Avec divers effets (par exemple, à l'endroit où le pistolet est tombé d'un morceau de mur et sur le toit de la tour, il y avait une fissure).

J'aime le processus de destruction dans l'édition AE Defenite, mais il a la même apparence pour tous les types de bâtiments (tôt ou tard, ils le transformeront en le même groupe).

L'exemple de ce que je veux dire quand je dis Château 2D en vue de haut en bas:

Comment casser ce château en copeaux?

PS J'espère que vous voyez le patron de l'auteur, de son patron cette image peut être téléchargée gratuitement. Il a beaucoup d'autres images étonnantes.

AJOUTER un guide visuel:

entrez la description de l'image ici

Réponses

4 G.Sliepen Sep 09 2020 at 07:49

La physique

Essayez de penser à ce qui se passe lorsqu'un boulet de canon voyageant dans les airs touche quelque chose. La balle aura une certaine masse et vitesse, et donc une certaine quantité d'énergie cinétique qui peut potentiellement faire des dégâts.

Que se passe-t-il avec le boulet lui-même après une collision? Est-ce qu'il rebondit, tombe, se brise, roule, prend feu ou explose? Il pourrait rebondir (par exemple, s'il touche le sol à un angle de rasage), mais s'il heurte un mur de pierre, il risque de perdre toute son énergie cinétique, de tomber et peut-être de rouler.

Que se passe-t-il au point d'impact? Un mur de pierre réagit différemment d'un toit en bois. Et il y a une petite chance que vous frappiez une personne ou une pièce d'équipement. Comme mentionné par Zibelas, toutes ces choses pourraient devoir être traitées différemment.

En ce qui concerne les matériaux qui se fissurent lorsqu'ils sont frappés par un boulet de canon, vous pouvez effectuer une simulation détaillée de la réaction du matériau, mais je ne pense pas que cela conviendra à votre style visuel et nécessitera beaucoup de travail à coder et à exécuter. . Faites plutôt quelques simplifications. Gardez à l'esprit quelques notions de base: un boulet de canon a une quantité limitée d'énergie cinétique qu'il peut avoir un impact. Lorsque cette énergie est transférée dans le matériau, il existe plusieurs façons de distribuer cette énergie, notamment:

  • L'objet dans son ensemble peut hériter de l'énergie cinétique, et ainsi commencer à bouger
  • L'énergie peut être entièrement dissipée sous forme de chaleur
  • Une fissure peut être créée

Habituellement, ce sera une combinaison de tout ce qui précède. Ok, maintenant en regardant juste les fissures, selon le matériau, il y a une préférence pour la direction d'une fissure, et une fois qu'une fissure commence, elle continuera probablement dans la même direction. Mais les matériaux typiques ont des impuretés, et il y aura des points où il devient plus favorable de changer la direction d'une fissure. Pour simuler cela, j'utiliserais l'algorithme suivant:

  • À partir du point d'impact, dépensez une fraction de l'énergie pour une fissure qui continue approximativement dans la direction de l'impact. La quantité d'énergie dépensée détermine la longueur de cette fissure.
  • Ensuite, faites un choix aléatoire à la fin de cette fissure:
    1. Changer la direction de la fissure
    2. Divisé en deux branches, chacune allant dans sa propre direction
  • Ensuite, faites avancer à plusieurs reprises toutes les fissures jusqu'à ce que vous ayez dépensé toute votre énergie.

Vous pouvez modifier les paramètres, tels que la possibilité de bifurquer une fissure, jusqu'à ce que vous trouviez qu'elle génère un motif de fissure agréable.

En dehors de cela, vous voulez vérifier si une ligne de fissure croise une fissure existante ou si elle touche le bord de l'objet qui se fissure. Dans ce cas, il y aura un morceau de matériau qui est maintenant devenu complètement lâche. Vous pouvez décider de lui donner un peu d'énergie cinétique à partir de votre budget d'énergie restant et l'envoyer voler.

Le rendu

Il semble que vous puissiez simplement dessiner les lignes de fissure en utilisant une ligne noire avec des propriétés similaires à celles des contours utilisés dans le dessin du château. Mais les fissures n'apparaissent tout simplement pas d'un seul coup. Créer une animation convaincante peut être difficile. Cependant, repensez à la physique d'un impact de boulet de canon: il y aura de la poussière et des particules fines qui seront perturbées, et pourraient former un petit nuage ressemblant à de la fumée. Ce nuage se dissipera en quelques secondes et pourrait se déplacer dans la direction du vent. Le nuage masquera la formation de fissures, vous n'avez donc pas à vous en soucier. Vous pouvez également faire éclater quelques petites particules du point d'impact pour lui donner un aspect plus dynamique. Il devrait être facile d'ajouter une certaine randomisation à ces choses, afin qu'elles aient l'air différentes à chaque fois.