D'après ce que je comprends, un système de treillis interactif typique aurait besoin de calculs substantiels puisque chaque composant affecte l'ensemble du système. Je pense que vous pourriez vous arrêter arbitrairement à un nombre donné d'itérations au détriment de la précision dans la simulation, mais je ne sais pas si c'est l'approche que ces jeux utilisent (les jeux de construction de ponts sont un exemple de systèmes de fermes). D'un autre côté, des jeux comme Dig ou Die ont un système structurel assez complexe qui prend également en compte le couple (je crois) et la compression et est très rapide et fonctionne sur des systèmes très étendus. Je suppose que les calculs de base pourraient être similaires, mais sinon, je suis intéressé par les deux approches.
Savez-vous comment ils sont fabriqués? Ont-ils une limitation arbitraire ou utilisent-ils un algorithme différent? En outre, je suppose que tout ce que vous inventez peut être appliqué aux systèmes 3D, mais si ce n'est pas le cas ou si ce n'est pas évident, veuillez au moins donner un indice sur la façon dont vous pouvez l'utiliser pour la 3D, car cela m'intéresse à la fois en 2D et en 3D Jeux.
Je sais que je ne suis pas censé remercier ici mais je trouve injuste de ne pas au moins vous remercier pour votre temps à l'avance, j'espère que ce paragraphe ne sera pas supprimé.
EDIT: Si je devais faire une supposition, je dirais que Dig or Die stocke des vecteurs pour chaque bloc, puis exécute un algorithme itératif jusqu'à un point où la précision supplémentaire dans la simulation n'a pas de sens pour les limites du système (par exemple, le système serait trop volumineux pour ne pas s'effondrer de toute façon), il est donc limité par un nombre semi-arbitraire (car il est basé sur l'application) d'itérations. Mais je peux me tromper.
Réponses:
Je suis le développeur de Dig or Die, donc je peux donner un peu plus de détails sur la physique du jeu
En effet, le point le plus crucial était les performances, car dans le jeu, vous pouvez construire des milliers de blocs physiques, et bien plus important j'ai d'autres choses plus complexes à simuler (pluie / eau) donc je peux épargner très très peu de temps CPU pour la physique du bâtiment .
J'ai donc fait une sorte de ... Je ne sais pas, un algorithme personnel personnalisé pas très précis, mais ça marche assez bien pour le jeu. J'ai 1 vecteur pour chaque intersection de blocs (donc chaque bloc est lié par jusqu'à 4 vecteurs, un de chaque côté). Chaque bloc a un "poids" et "pousse" les vecteurs autour de lui (également) de sorte que la magnitude totale des vecteurs soit égale à sa hauteur. Lorsqu'un bloc est ancré au sol, toutes les forces / tous les poids qui y sont poussés ne sont jamais "repoussés", donc naturellement avec suffisamment d'itérations, l'ensemble du système trouve un équilibre. Le poids / la force va en quelque sorte «s'écouler» vers les points d'ancrage et gérer très bien les changements sur la structure. Vous pouvez voir le résultat ici (avec l'article en jeu "Lunettes Eiffel"):
Concernant les couples, je le simule en multipliant les forces transmises horizontalement. Ce n'est pas parfait mais il suffit de ressentir la grande différence entre construire horizontalement et verticalement
Mais honnêtement, je n'aime pas trop mon système, dans certains cas, il n'est pas très précis; principalement parce que je ne gère pas la compression et l'extension. Il y a probablement un moyen de faire une simulation plus précise que la mienne sans plus de CPU, mais mes compétences (et le temps) à ce sujet étaient très limitées, j'ai donc fait ce que j'ai pu :-)
(PS: vous devinez très bien :-))
la source
J'ai personnellement eu un bon succès avec la relaxation itérative . Je pense qu'il suit assez bien les lois de la physique lorsqu'il s'agit d'objets constitués d'agrégats de blocs. Je crois que la série BridgeBuilder est basée sur une telle méthode, mais je n'ai aucune source pour le confirmer.
La relaxation itérative est largement utilisée pour les fermes , mais j'ai réussi à simuler de gros objets solides (béton) avec: c'est tout simplement une ferme, dont les articulations supportent une charge au lieu d'être en rotation libre.
Ce qui est intéressant, c'est que la relaxation est une technique pour résoudre les fermes statiques, donc elle est précise. À cet égard, il est utilisé pour calculer de manière itérative un déplacement qui amène une structure à l'équilibre.
Mais la valeur ajoutée d'un jeu (où nous nous intéressons aux environnements dynamiques, car les structures statiques à l'équilibre sont ennuyeuses) est que nous avons la possibilité de déplacer les articulations de la structure entre chaque itération, en fonction des contraintes calculées jusqu'à présent. . Vous bénéficiez de deux avantages majeurs:
Habituellement , l'analyse statique fait l'hypothèse d'une petite déformation , où la structure ne se déplace pas loin de son état initial. Dans ces limites, l'analyse statique est correcte car les articulations ne sont en réalité pas beaucoup déplacées . Mais à mesure que la structure se déforme sous le poids en ruine, vous obtiendrez des résultats précis jusqu'à la fin avec une simulation non linéaire, tandis que vous obtiendrez simplement un état invalide à partir d'un solveur linéaire
La relaxation itérative est assez simple à mettre en place, la stabilité numérique . J'ai utilisé avec succès le schéma RK4 pour atteindre la stabilité avec de grandes structures en béton. L'inconvénient est qu'il a généralement une rigidité assez faible pour des raisons de performance, il peut donc parfois ressembler à de la gelée molle.
la source