Avant de traiter les fonctions asynchrones (appelées désormais fonctions asynchrones ) dans GameMaker Studio 2 il se peut que vous vous demandiez ce que le mot "asynchrone" signifie réellement! Eh bien, la définition du dictionnaire actuel de asynchrone est:
"se rapportant à une technique de transmission qui ne nécessite pas une horloge commune entre les dispositifs de communication, les signaux de synchronisation sont dérivés de caractères spéciaux dans le flux de données lui-même."
Dans le contexte de GameMaker Studio 2, une fonction asynchrone est une fonction qui envoie à un serveur Web, ou qui demande une entrée utilisateur, ou même des données de flux, tout en laissant GameMaker Studio 2 continuer à fonctionner sans bloquer. Lorsque le rappel d'informations est reçu, un événement asynchrone spécial est déclenché qui, à son tour, permet à toute instance avec un événement asynchrone assigné d'exécuter d'autres fonctions (bien que cela ne soit pas nécessairement le cas). Donc, fondamentalement, c'est un moyen de communiquer avec une ressource externe (serveur, utilisateur ou périphérique) sans bloquer le jeu ou le projet en attendant une réponse.
Pourquoi est-ce important? Eh bien, puisqu'il permet à GameMaker Studio 2 de continuer à fonctionner pendant l'envoi ou la réception de données, et cela signifie que vous pouvez faire beaucoup de choses sans bloquer la boucle de jeu comme -
- diffuser des données de l'appareil dans votre jeu sans que le joueur n'attende que les choses se chargent
- avoir des événements de rappel pour faire les choses seulement quand les informations correctes sont reçues
- communiquer et échanger des données avec un serveur Web
Tout cela fait fonctionner tout de manière beaucoup plus fluide et discrète. Il convient de noter que les événements asynchrones seront déclenchés pour toutes les instances qui en ont, de sorte que vous pouvez utiliser une fonction asynchrone dans une instance, et avoir l'événement asynchrone qui traite la réponse dans un autre, ou même plusieurs autres. Vous pouvez aller ici pour plus d'informations sur le fonctionnement de l'événement Asynchrone - Événements asynchrones.
Les différents types de fonctions asynchrones sont listés dans les sections ci-dessous:
Vous trouverez ci-dessous une liste des fonctions HTTP Async disponibles dans GameMaker Studio 2:
Veuillez noter que les fonctions http_ ci-dessus peuvent ne pas fonctionner comme prévu en raison de problèmes de sécurité inter-domaines. Cela signifie que les demandes à votre serveur ou les tentatives de chargement de ressources à partir de plusieurs domaines sont bloquées et peuvent renvoyer des résultats vierges ou des erreurs 404. Une des façons de contourner ce problème est d'avoir du côté serveur PHP qui permet à certains domaines d'accéder à votre serveur (c'est aussi un moyen de protéger vos ressources et de bloquer les serveurs qui ne sont pas inclus dans la liste des autorisations PHP).
Voici un exemple du code que vous pouvez utiliser pour cela:
$http_origin = $_SERVER['HTTP_ORIGIN'];
if ($http_origin == "http://127.0.0.1:51268")
{
header('Access-Control-Allow-Origin: *');
}
Les versions précédentes de GameMaker comportaient des dialogues contextuels qui bloquaient le coureur en attendant une réponse de l'utilisateur. Cependant, la plupart des appareils modernes n'aiment pas cela et interpréteront l'arrêt du coureur comme une erreur et fermeront l'application. Pour éviter cela, GameMaker Studio 2 possède des équivalents asynchrones de ces fonctions qui remplissent le même objectif que les versions précédentes, mais ne bloque pas le coureur à tout moment, ce qui signifie que le jeu fonctionnera normalement en arrière-plan pendant que l'utilisateur répond à le dialogue affiché. Une fois que l'utilisateur a répondu, un événement asynchrone dialogues sera appelé afin que vous puissiez gérer les résultats.
Voici une liste de toutes les fonctions de dialogue asynchrones disponibles:
Lorsque vous créez des jeux, il est souvent nécessaire de stocker des informations sur l'état du jeu dans un fichier quelconque, mais stocker ces informations sur l'appareil n'est pas toujours la meilleure option car, si le joueur supprime le jeu puis réinstalle, l'information peut être perdue. Pour éviter cela, vous pouvez utiliser différents services de cloud, qui offrent un stockage de données sur Internet pour la récupération et la modification à tout moment. Vous devriez noter que cette fonction est limitée à un seul "blob" de données par jeu, donc chaque fois que vous envoyez une nouvelle sauvegarde au service cloud, qu'il s'agisse d'une chaîne ou d'un fichier, il écrasera toutes les données précédemment stockées.
GameMaker Studio 2 prend en charge cette fonction avec quelques fonctions simples qui fonctionnent conjointement avec l' événement Cloud asynchrone. Ces fonctions sont expliquées dans les pages suivantes:
REMARQUE: Actuellement, seule l'extension Google Services sur Android utilise ces fonctions et cette extension doit être présente avant de pouvoir les appeler.
Sur les appareils mobiles, normalement une seule application peut être active au premier plan à tout moment, mais de nombreux jeux et applications fonctionnent dans un environnement temporel ou interconnecté où des événements présentant un intérêt pour les utilisateurs peuvent survenir lorsque l'application n'est pas au premier plan. Dans ces cas, les notifications push locales et distantes peuvent permettre à ces jeux d'informer leurs utilisateurs lorsque des événements se produisent.
Lorsque le système d'exploitation envoie une notification push locale ou distante et que l'application cible ne s'exécute pas au premier plan, elle présente la notification à l'utilisateur sous la forme d'une bannière. S'il y a une alerte de notification et que l'utilisateur appuie dessus, le jeu est lancé et un événement de poussée asynchrone est appelé où vous pouvez vérifier la chaîne de rappel que vous spécifiez et résoudre le push en fonction de sa valeur. Si l'application s'exécute au premier plan lors de la remise de la notification, l'application recevra toujours un événement de poussée asynchrone, mais l'utilisateur ne recevra aucun message à moins que vous ne le créiez vous-même.
Il y a quelques différences à noter entre les plateformes supportées:
- Sur Android, toutes les notifications reçues lorsque l'application n'est pas en cours d'exécution / en arrière-plan, seront stockées et les données fournies par l'événement asynchrone la prochaine fois que l'application s'exécutera et vous devrez activer les notifications push dans les Options de jeu Android travail.
- Sur iOS, les données d'une notification particulière ne sont transmises que lorsque la notification est sélectionnée (ou si l'application s'exécute en premier plan lors de la réception de la notification) et que vous devez activer les notifications push dans les Options de jeu iOS.
Une notification push locale est locale au périphérique sur lequel le jeu est installé et ne nécessite aucun serveur principal. Vous définissez simplement la date et l'heure de la notification et celle-ci sera affichée à l'utilisateur si le jeu n'est pas en cours d'exécution. Ce type de notification est utile pour configurer des «rappels» pour que l'utilisateur rejoue votre jeu, ou pour offrir une récompense quotidienne pour jouer, etc... et quand l'utilisateur clique sur la notification, il lance le jeu et transmet une donnée chaîne qui peut ensuite être analysée par le jeu pour donner une récompense ou autre chose.
Les fonctions suivantes sont disponibles pour les notifications locales:
- push_local_notification
- push_get_first_local_notification
- push_get_next_local_notification
- push_cancel_local_notification
REMARQUE: cette fonctionnalité est limitée aux modules cibles iOS et Android. Pour Android vous devez avoir installé l' extension Google Play Services et activé les notifications push dans les options de jeu social Android.
Les messages de notification à distance sont envoyés par un serveur à un service fourni par la plate-forme de l'appareil App Store, puis ces messages sont transmis sur tous les périphériques sur lesquels votre application est installée. Ceci est pris en charge par GameMaker Studio 2 sur les modules cibles iOS et Android.
GameMaker Studio 2 ne dispose d'aucune fonction pour traiter les notifications à distance, car elles doivent toutes être générées par votre serveur et gérées par les App Stores respectifs. Cependant, une fois correctement GameMaker Studio 2, les GameMaker Studio 2 recevront ces notifications, qui pourront ensuite être traitées dans l' événement de poussée asynchrone, comme vous le feriez pour une notification locale.
Pour toutes les plateformes disponibles, une fois que vous avez effectué la configuration nécessaire, lorsque le jeu est exécuté sur un périphérique, il enregistre ce périphérique auprès du service de notification push des plates-formes. Cela déclenchera un événement de notification push asynchrone, et le ds_map la clé " type " aura la valeur " register " ainsi qu'une nouvelle clé, " reg_id ", contenant l' identifiant d'enregistrement (ou un message d'erreur dans la clé " error ", si " status " est 0). Vous devez ensuite envoyer cet identifiant d'enregistrement à votre serveur, et chaque périphérique sur lequel votre jeu est installé aura un identifiant d'enregistrement différent. Votre serveur doit gérer une liste d'identifiants pour les périphériques enregistrés, par exemple lorsque vous envoyez un message de notification push depuis votre serveur, vous utilisez les ID d'enregistrement pour envoyer le message aux périphériques enregistrés.
Veuillez noter qu'il n'y a aucune garantie que les notifications push à distance seront livrées, et que la charge de données autorisée est relativement faible. Cela varie d'une plateforme à l'autre, mais iOS est particulièrement limité - le service Apple fournit uniquement la notification la plus récente, qui doit être sélectionnée par le destinataire pour que les données utiles soient transmises à votre événement asynchrone. Ces notifications ont une taille maximale de 256 octets. Généralement, une notification push à distance indique simplement que de nouvelles données sont disponibles sur votre serveur par exemple.
REMARQUE: Android nécessite que vous ajoutiez l' ID de l'expéditeur GCM dans les options de jeu Android. Il s'agit du numéro de projet attribué lorsque vous créez votre projet d'API Google Play.Pour plus d'informations sur la configuration d'un serveur, ainsi que des informations spécifiques aux plates-formes disponibles, consultez les pages suivantes de la base de connaissances YoYo Games:
REMARQUE: L'implémentation du côté serveur dépend entièrement de l'utilisateur final, et YoYo Games ne fournit aucun support pour ce côté des choses, à part les informations de configuration de base disponibles dans sa base de connaissances.
Comme les plates-formes mobiles se développent et prennent plus de part de marché de jeu, ainsi à la demande pour l'interaction sociale et la rétroaction de ces jeux. Pour répondre à ces exigences, GameMaker Studio 2 intègre certaines API tierces qui vous permettent de communiquer avec différents réseaux en fonction de l'appareil que vous ciblez pour votre jeu.
Les sections suivantes contiennent des informations sur l'intégration des médias sociaux disponibles:
Il y a aussi une fonction asynchrone qui va ouvrir un dialogue et vous permettre de demander qu'un utilisateur de votre jeu laisse un commentaire ou une note sur une page web spécifique: