[article] Réalisation d'un "moteur physique", mmf2

fayt nagashimas Message lu Posté le 13 Sep 2008 à 16:52 Bulle
Avatar de fayt nagashimas
Membre Avancé

Messages : 369
GCPoints : 59439
Image


Voilà, je commence mon petit "moteur physique" (full en events pour faire plaisir aux makers, et possédant des fonctions basiques).


Pourquoi créer un moteur physique plutôt que de reprendre l'extension physique utilisant chipmunk engine de Danny ? D'une pour acquérir des notions physiques (cf. suite), de deux à titre d'entrainement sous le logiciel et de trois... pour en faire profiter la communauté. Chaque étape sera expliquée de telle sorte à ce que le processus soit adaptable à tout langage/logiciel.
Bien évidemment, comme je ne me trompe jamais, les critiques seront vivement repoussées
Image
. n'hésitez pas à poser des questions sur ce qui est incompréhensible.
Les ajouts se feront dans le premier post.

Merci à Harmonyk pour l'espace qu'il m'a alloué sur son ftp (même si vous le connaissez pas) !

Image


Attaquons.

Premièrement, il faut une scène de la taille de votre choix avec deux assets (objets graphiques) : un masque de collision (c'est à dire un bitmap avec lequel votre personnage sera en collision) et un personnage (dans mon cas représenté par un losange).

Image

Scène de base.

Dès lors, nous devons trouver les caractéristiques du moteur, et je vous conseille de les écrire, dans le but d'éviter des oublis.

Voici donc les éléments composant Th3_K|LL3r_ENGINE :

- gravité.
- mouvement des objets (basiques).
- Possibilité de sauter/planer pour le personnage.

Le tout se basant sur de vraies formules, afin de conserver un certain réalisme.

A partir de ce point, il est possible de noter l'ordre des opérations, mais ici bon...

D'autres fonctions pourront évidemment être ajoutées par la suite.

Image
Lecteur (sûrement Daru13, c'est celui qui lit le plus mes post) :c'est marrant d'utiliser de vraies formules, mais l'écran est en pixels, pas en mètres (ah nan, une réflexion comme ça, c'est pas Daru13).

Une variable. Un float ou un integer, le nombre par lequel il faut multiplier la valeur en mètres pour obtenir celle en pixel, ou vice-versa. Comment l'obtenir ? Fonction de votre programme.
Si le personnage mesure un mètre 80 et que le sprite fait 100 pixels de haut... il suffit de faire un petit calcul, pour obtenir le facteur par lequel il faut multiplier la valeur en pixels pour obtenir des mètres.

Image
Lecteur : Pourquoi des mètres (ah je vous prend vraiment pour des crétins).

C'est l'unité internationale pour la distance en physique, ce qui nous permettra d'utiliser les formules sans trop faire de conversions.

Suite à venir.
Dernière édition le 13 Sep 2008 à 16:55
Darktib Message lu Posté le 13 Sep 2008 à 18:27 Bulle
Avatar de Darktib
Membre Ultime

Messages : 4017
GCPoints : 347288
Pas mal...
Ca commence bien en tout cas.

Par contre je te conseille d'implémenter d'ja deux types de calculs : le pixel-perfect (tu oublie les metres) et la performance (que des metres^^)
Daru13 Message lu Posté le 14 Sep 2008 à 18:17 Bulle
Avatar de Daru13
Membre Elite

Messages : 2884
GCPoints : 108090
Sympa le topic ^^.
Ça m'aidera pt'et pour mon P&C en plus :grin: !

( bon, je connais déjà des trucs sur ce qe tu va raconter, m'enfin... :absurd: ).

Ça pourrait être sympa de convertir ce topic en tuto quand il sera fini ^^ !
Répondre
GameCorp - Site d'apprentissage et d'entraide à la création de jeux vidéo.
XHTML Valid 1.1 - Page générée en 0.0255 secondes