Moteur physique perso Love2D
UnRealCloud Il y a 3 ans Premium Pro0
Lua love2D

Je codre en lua/love2D.
Je me suis inspiré de cette page, https://jcharry.com/blog/physengine10 . C’est ce que j’ai trouvais de mieux et 90% de ce que j’explique ici est couvert dans ce post avec des beaux dessins et tout 😀 , il y a même du code.

Ceci est une modeste contribution pour essayer d’éclairer un sujet selon ma vision.

J’utiliserais du speudo code, pour que cela reste le plus interprétable même si vous n’utilisez pas le même langage que moi.

 

Temps passé :  Au moins 50 h

Déjà un moteur physique qu’est ce que j’en attend ?

Le moteur doit pouvoir gérer des collisions avec des polygones avec différentes rotations et résoudre ces collisions de la manière la plus réalité.

C’est une partie de code qui peut très vite devenir complexe, et dans mon cas je traiterais pas le cas des figures non convexe, qui est plus complexe j’ai l’impression.

Pourquoi coder son moteur ?

1. Enfaite, je suis très mauvais pour utiliser des libraires dont je ne comprends pas logique, donc quoi de mieux pour comprendre que d’essayer de faire
2. Je ne dépends pas d’une libraire tier
3. Je peux donc modifier comme il me plait
4. Je peux l’implémenter en mode ECS : Entity System Component

Pour ceux que ça intéresse le ECS , c’est une autre façon de visualiser la logique de son jeu. Ce ne sont plus des objets, des entités qui sont
ni plus ni moins une table de donnée. Ça mériterait un autre post, et ça n’influencera pas le code proposé dans ce dev log.

Qu’est ce qu’il faut pour coder un moteur physique?

Du temps et une bonne compréhension des vecteurs et de la géométrie au moins en 2D. Il faut que la manipulation de vecteur 2d.
Additionner, soustraire, multiplier, projeter, rotater/tourner/pivoter selon un angle, un point.

Mais enfaite tout cela est déjà plus ou moins acquis. Si vous partez du principe que tous vos points sont juste des vecteurs, une bonne partie
des problèmes sera résolu.

Dernier point etpas des moindres …

En love2d, l’origine position en x =0, y= 0 est positionné en haut à gauche de l’écran, et l’axe des ordonnées est « inversé », plus vous
descendez sur votre écran plus y augmente. Ca veut dire qu’il ne faut pas se mélanger les pinceaux, si j’écrit le vecteur v1 = { x=0, y =1},
ce n’est pas un vecteur qui point vers le haut mais bien vers le bas … C’est peut être trivial pour certains mais je n’ai pas arrêté d’oublier ce détail.

Devlogs du projet

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.