Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Physique de Construct 2 : Les bases

Venez découvrir les comportements physiques du moteur physique de Construct 2 reposant sur Box2D et maitrisez les mécanismes physiques de Construct 2 pour faire un jeu amusant et réaliste.

Commentez Donner une note à l'article (5)

Article lu   fois.

Les deux auteur et traducteur

Traducteur : Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Préface

Construct 2 inclut les comportements physiques, grâce à Box2DWeb. Cela vous permet d'avoir des objets en mouvement selon les règles de la physique du monde réel - en voici une démonstration pour présenter l'idée. La physique peut rendre vos jeux vraiment amusants et intéressants. Voici un aperçu permettant d'intégrer la physique dans votre jeu.

Si jamais vous avez eu des cours de physique à l'école, vous retrouverez quelques aspects que vous avez eus et qui s'appliquent à la physique de Construct 2. Je vais tout de même vous expliquer rapidement les bases au cas où vous n'auriez pas vu ces concepts auparavant. Intéressé par un peu de théorie ? Vous pouvez lire l'article de Wikipédia sur les lois du mouvement de Newton. Voici un autre lien que vous pourriez trouver utile.

Beaucoup d'exemples physiques sont intégrés à Construct 2 ! Cliquez sur « Browse all examples » sur l'écran de démarrage. Toutes les démonstrations physiques commencent par « Physics - », par exemple « Physics - basic.capx ». Ces démonstrations valent la peine d'être vus. Les descriptions qui suivent seront plus logiques si vous les avez déjà vus en action.

II. Comment ajouter de la physique

Sélectionnez un objet auquel vous voulez ajouter de la physique. Dans la barre des propriétés, cliquez sur « Add/Edit » sous « Behaviors ». Cliquez sur l'icône plus verte et à partir de la boîte de dialogue, choisissez « Physics ». C'est fait !

Nous allons appeler n'importe quel objet ayant le comportement physique un « objet physique » (physics object).

III. Gravité

Par défaut, la gravité est présente sur les objets physiques, ce qui accélère tous les objets vers le bas. La gravité par défaut est de 10 (rappelez-vous, l'axe des Y augmente vers le bas dans Construct 2). Si vous souhaitez désactiver la gravité, vous pouvez utiliser l'action « Set gravity action » applicable sur n'importe quel objet. Remarque : la gravité s'applique à l'ensemble du « monde ». Si vous définissez la gravité à 0 sur un objet, elle est désactivée pour tous les objets.

Image non disponible

IV. Mettre en place le décor

Vous ne voulez pas que le sol de votre jeu tombe en dessous de l'écran à cause de la gravité. Même dans les jeux en « gravité zéro », un élément de la scène sera légèrement repoussé si quelque chose entre en collision avec, et peut même commencer à tourner. (Troisième loi de Newton : « pour chaque action, il existe une réaction égale et opposée », ce qui signifie que la scène est un peu trop repoussée.)

La plupart du temps dans nos jeux, nous voulons simuler la scène comme étant une roche solide : ne tombant pas avec la gravité et n'étant pas poussé un petit peu en arrière par des choses qui la touchent. Réglez les objets physiques avec la propriété « Immovable » à « Yes » pour simuler cette action.

Image non disponible

L'objet est maintenant simulé comme s'il avait une masse infinie. Il ne bougera pas du tout !

Remarque : les objets physiques n'interagissent qu'avec les autres objets physiques. Le comportement « Solid » au sol n'a pas d'effet sur les objets de la physique. Ils ignorent aussi tout ce qui n'a pas aussi le comportement de la physique. Les objets physiques passeront droit à travers les objets « Solid », à moins que vous leur donniez le comportement physique et les définissiez à « Immovable ».

V. Les autres propriétés physiques

Survolons brièvement les autres propriétés de comportement physique.

V-A. Collision mask (masque de collision)

Ceci définit la forme de la collision de l'objet. Par défaut, il utilise un polygone de collision. Si vous ouvrez l'éditeur d'images et cliquez sur l'outil polygone de collision, vous pouvez changer les bits de ceux qui entreront en collision. Attention de ne pas utiliser trop de points, cela peut ralentir le jeu !

Si c'est réglé sur « bounding box » (boîte englobante) ou « circle » (cercle), le polygone de collision de l'éditeur d'images est ignoré. Au lieu de cela, il va utiliser soit un rectangle autour de l'objet (« bouding box » (boîte englobante)), ou un « circle » (cercle) qui peut être utile pour faire rouler des objets comme des balles.

V-B. Prevent rotation (empêcher la rotation)

Si cette option est activée, l'objet ne tournera jamais, même s'il est sur un plan oblique. Cela peut-être utile si vous voulez contrôler l'angle du joueur vous-même. Par exemple, dans un jeu de plate-forme, vous ne voulez probablement pas que votre joueur trébuche et tombe sur son visage à chaque fois qu'il essaie de courir.

V-C. Density (densité)

La densité est utilisée pour déterminer la masse de l'objet. La masse définit la difficulté d'un objet à se déplacer. (Notez que le « poids » n'est pas exactement le terme qui convient. Le poids est dépendant de la gravité et les objets ont toujours une masse en gravité zéro. Les objets avec une grande masse sont encore plus difficiles à déplacer en gravité zéro. La masse de votre objet est déterminée par sa densité multipliée par la surface de sa forme de collision. Ainsi, un objet vraiment énorme a une masse beaucoup plus grande qu'un objet de petite taille, même si leurs densités sont les mêmes.

Si vous avez un bloc de béton, vous voudriez lui donner une densité beaucoup plus élevée qu'un bloc de mousse.

V-D. Friction (frottement)

Le frottement affecte le ralentissement de l'objet lorsqu'il glisse contre un autre objet. Sans frottement, c'est comme le patinage sur glace, et une grande friction c'est comme une brique qui glisse le long du béton. Il est plus dur de pousser la brique sur du béton que sur de la glace.

V-E. Elasticity (élasticité)

L'élasticité (ou « ressort » ou « restitution ») affecte le rebondissement de l'objet. Un objet avec une élasticité élevée va rebondir haut lorsqu'il tombe sur le sol, et un objet sans élasticité ne rebondira pas du tout.

V-F. Linear damping (amortissement linéaire)

Les objets se déplacent à la même vitesse dans la même direction pour toujours, à moins que quelque chose d'autre ne les affectent. Pensez au lancer d'une balle de tennis dans l'espace - parti pour toujours. (Première loi du mouvement de Newton : « Chaque objet dans un état de mouvement uniforme tend à rester dans cet état de mouvement, à moins qu'une force extérieure soit appliquée.) Sur Terre, les forces comme la gravité, la friction, et la résistance de l'air ont tendance à faire que cela soit moins perceptible.

Dans votre jeu de physique, vous pourriez vous retrouver à pousser un objet et il part pour toujours, conformément à la troisième loi de Newton. Vous pourriez simuler des frictions contre le sol ou la résistance à l'air. L'augmentation de l'amortissement linéaire fait ralentir progressivement les objets jusqu'à l'arrêt complet. L'amortissement linéaire de zéro c'est comme dans l'espace où les objets poursuivent éternellement.

V-G. Angular damping (amortissement angulaire)

L'amortissement angulaire est un concept vraiment similaire à l'amortissement linéaire, mais sur la rotation de l'objet. Encore une fois, dans l'espace, un objet tournant va tourner à la même vitesse pour toujours. L'augmentation de l'amortissement angulaire fera ralentir progressivement un objet tournant jusqu'à ce qu'il ne tourne plus. Notez que l'amortissement se produit indépendamment de la vitesse à laquelle l'objet est en mouvement.

VI. Conseils généraux sur la physique

VI-A. Performance

Les simulations physiques sont très consommatrices de temps (CPU). Cela peut prendre beaucoup de traitement pour mettre en œuvre le bon mouvement. Pour vous assurer que votre jeu est rapide, il est recommandé que vous n'utilisiez pas trop d'objets à la fois. Plus de 100 objets physiques en mouvement à la fois est susceptible de ralentir votre jeu. En outre, les téléphones et les tablettes sont beaucoup plus limités en puissance qu'un ordinateur de bureau. Si vous ciblez les mobiles, vous devriez être très prudent et ne pas essayer d'avoir plus de 20-30 objets physiques.

Notez que les objets qui sont complètement à l'arrêt, et ne sont pas en mouvement ou en rotation, sont « mis en veille » par le moteur. Ainsi, ils n'ont plus besoin de traitement. Si l'objet est frappé par un autre, il se « réveille » et recommence à utiliser du temps de calcul. Toutefois, si l'objet est en mouvement même dans le moindre, il ne sera pas mis en veille. Par exemple, tous les blocs dans une tour resteront éveillés. C'est quelque chose d'utile que vous devez garder à l'esprit pour les performances. Si vous avez des centaines d'objets endormis et que seulement 20-30 sont en mouvement (même légèrement), le jeu devrait encore bien tourner.

VI-B. Stabilité

Les simulations physiques ne sont pas totalement robustes. Si vous simulez des choses irréalistes, comme le lancer d'un gigantesque objet en béton sur un bloc de mousse à la vitesse du son, le résultat ne sera pas réaliste du tout. En fait, tout ce qui implique des forces extrêmes est susceptible de créer des instabilités dans la simulation (irréalistes, par exemple, des objets se déplaçant à travers ou dans d'autres objets).

Des choses comme des objets incroyablement lourds, empilés sur une pile de boîtes vraiment légères, d'énormes tas d'objets ou le déplacement rapide d'objets lourds ont tendance à provoquer des instabilités. Essayez de tout garder à des proportions raisonnables.

La même chose s'applique à la taille des objets. De très petits (inférieurs à cinq pixels) ou de très gros (au-dessus de 500 pixels) objets peuvent ne pas être simulés réalistement non plus. Essayez de garder toutes les largeurs et hauteurs dans la plage de 5 à 500 pixels, et encore évitez des proportions extrêmes (par exemple un objet 5x500).

En d'autres mots, la physique fonctionnera mieux avec des objets de taille et de masse proches interagissant relativement à la même vitesse.

VI-C. Déplacement manuel et autres comportements

Si vous bougez à l'aide d'évènements (par exemple set X, set Y) ou d'autres comportements (par exemple, en ajoutant également huit directions à un objet physique), la simulation fera de son mieux pour essayer de garder ce que vous avez fait. Toutefois, c'est souvent plus réaliste d'accomplir le même résultat en appliquant des forces et des impulsions sur les objets physiques. Cela conserve tout « dans le monde physique » et le réalisme.

Par exemple, si vous utilisez « Set Position » pour bouger un objet à un autre endroit dans la scène instantanément, en effet, il se téléportera. Ce n'est pas un phénomène réaliste, donc le résultat pourra être irréaliste. Pour poursuivre, le comportement physique repérera cela et simulera l'objet ayant soudainement bougé vers son point de destination en un tic (à environ 1/60e de seconde). C'est une quantité incroyable d'accélération, puis de décélération. Rappelez-vous, afin de maintenir une simulation stable, vous devez éviter les extrêmes.

Bien que vous puissiez ajouter le comportement de la plate-forme à un objet physique, les deux ont tendance à ne pas s'entendre très bien. Encore une fois, il est préférable de réaliser la même chose en appliquant des forces. Voir l'exemple « Physics - rolling platformer » fourni avec Construct 2 pour une démonstration de comment vous pourriez accomplir cet objectif.

VII. Conclusion

La physique peut vraiment être amusante dans vos jeux, mais n'oubliez pas : évitez d'avoir trop d'objets, évitez les extrêmes, essayez de faire bouger les choses par des forces et par des impulsions seulement - et cela ne fait pas de mal de connaitre un peu la théorie !

VIII. Remerciements

Cet article a été originellement publié par Ashley sur le site officiel de Construct2.

Merci à LittleWhite pour sa relecture lors de la traduction et à milkoseck pour sa relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Ashley et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.