L'intégration d'une bibliothèque de physique dédiée à GameMaker Studio 2 signifie que vous pouvez maintenant prendre le contrôle de tous les aspects du comportement physique des objets dans votre univers de jeu, en particulier les collisions et les interactions entre objets. Le système de collision "traditionnel" (par défaut de GameMaker Studio 2 ) est un système "réactif", où vous vérifiez une collision et réagissez ensuite à cette collision avec le code que vous placez dans des objets individuels. C'est bien pour les jeux simples, mais quand vous avez un grand nombre d'objets et que vous devez coder comment ils réagissent tous à différentes situations dans le monde du jeu, il devient rapidement évident que ce système n'est tout simplement pas suffisant. C'est à ce moment que vous devez vous tourner vers le système physique de GameMaker Studio 2.
Le système de physique fonctionne d'une manière très différente des collisions normales. Il s'agit plus d'un système "passif" où vous définissez une série de propriétés pour vos objets dans le monde du jeu, ainsi que les propriétés du monde du jeu lui-même, avant que des collisions ou des interactions se produisent. Ces «règles» codées régiront alors la façon dont tout dans votre monde de jeu interagit. De cette façon, avec un code simple et la configuration correcte de la pièce, vous pouvez créer des interactions très complexes entre les objets et le monde qui se produiront et se résoudront sans que vous ayez à coder pour chaque résultat possible.
Il y a quelques points à noter lorsque vous travaillez avec le monde de la physique de GameMaker Studio 2:
- Le système physique existe «en dehors» de la structure de base de la salle et de l'instance de GameMaker Studio 2 ce qui signifie que ses horaires et fonctions ne sont pas nécessairement liés à la vitesse de la pièce et à l'ordre des étapes comme tout le reste.
- Le système physique remplace plusieurs des fonctions d'instance normales... par exemple, plutôt que de définir une vitesse et une direction pour une instance, si elle a été déclarée comme étant un corps physique entièrement simulé, vous utiliseriez une force ou une impulsion pour obtenir Pour vous déplacer dans le monde du jeu, ou si ce n'est pas la physique activé, vous devrez définir vous-même les positions x et y. Cela prend un peu de temps pour s'y habituer, alors expérimentez avec les fonctions physiques et apprenez comment tout fonctionne avant d'essayer de les intégrer dans votre projet.
- Vous devez limiter le nombre d'instances créées, ainsi que le nombre de collisions et de groupes de collision auxquels le monde de la physique doit faire face. Vous ne pouvez pas avoir des milliers d'instances, toutes avec des propriétés physiques et des collisions, et vous vous attendez à ce que tout fonctionne correctement parce que la physique nécessite des calculs assez intensifs, alors limitez-vous et optimisez si possible.
- Lors de la configuration des collisions, utilisez autant que possible les parents car le système de collision dispose d'un nombre limité de bits de collision à attribuer aux instances de Box2D pour détecter les collisions. Par exemple, si vous avez cinq objets de murs différents, ne vérifiez pas cinq collisions, mais créez un objet parent et affectez-le aux cinq murs, puis effectuez une vérification de collision avec le parent. Les propriétés physiques des objets ne sont pas héritées uniquement des collisions. De cette façon, vous pouvez garder votre jeu optimisé et sans erreur.
- Essayez de ne pas déplacer les instances d'un point de la pièce à l'autre d'une autre manière que d'utiliser les fonctions physiques (par exemple: ne définissez pas le manuel des coordonnées x / y). Bien que cela puisse être fait et dans certaines circonstances, cela peut être nécessaire, ceci doit généralement être évité en raison des résultats imprévisibles qu'il peut avoir sur le moteur physique, en particulier lorsque vous essayez de résoudre des collisions.
- Des précautions doivent être prises lors de la fixation des appareils, car ils peuvent être liés à des objets et des instances indépendamment. Cela signifie que si vous liez un fixture à (par exemple) "o_Wall", toutes les occurrences de cet objet recevront le fixture. Si vous souhaitez uniquement lier un appareil à une instance, utilisez l'ID de cette instance dans la fonction appropriée.
- Sachez qu'en raison des différences de précision en virgule flottante, vous pouvez constater que les versions de votre jeu pour différentes plates-formes cibles peuvent présenter un comportement subtilement différent de la version Windows standard, bien que chaque version soit auto-cohérente lors des exécutions suivantes.
- Pour éviter les instabilités dans la simulation physique Box2D contraint à des limites supérieures la quantité qu'un corps peut faire pivoter et traduire au sein d'une seule mise à jour. Les limitations apparentes varieront en fonction de la précision de la simulation physique en fonction du nombre de mises à jour et de la vitesse de mise à jour du monde physique, et également en fonction de la mise à l'échelle du monde physique. Cela signifie que (par exemple) si vous avez une vitesse de mise à jour du monde de 60, la vitesse de déplacement maximale serait de 20.
Des informations sur les fonctions physiques peuvent être trouvées sur les pages suivantes:
Enfin, il y a quelques fonctions physiques spéciales qui peuvent être utiles pour des simulations de physique plus avancées. La première consiste à tester les collisions possibles à un point spécifique de la pièce et la seconde à générer des propriétés de masse et d'inertie personnalisées dans une instance: