Configuration du projet Cocos2d-x
Système d’exploitation : ce guide est rédigé pour Windows 10, avec Visual Studio 2015. Cocos fonctionne sur la plupart des systèmes d’exploitation et environnements modernes. Les instructions d’installation sont similaires, mais diffèrent selon chaque combinaison. Si vous générez pour d’autres plateformes, les fichiers nécessaires sont les mêmes, mais vous devrez configurer vous-même le projet. Les étapes sont identiques avec Visual Studio 2013, mais les captures d’écran fournies ici seront légèrement différentes des vôtres.-
Téléchargez et installez Cocos2d-x
- https://www.cocos2d-x.org/download
- La configuration de Cocos2d-x nécessite une certaine familiarité. Consultez leur site de documentation :
- https://docs.cocos2d-x.org/cocos2d-x/en/en/
- Notez les prérequis de Cocos
- Visual Studio 2013 ou 2015 est également requis.
-
Une fois Cocos2d-x configuré, créez un projet à l’aide de la CLI Cocos :
- Accédez à l’emplacement où vous souhaitez stocker votre projet Cocos
-
Ouvrez une fenêtre de commande dans votre dossier parent (la CLI Cocos créera le répertoire du projet proprement dit)
-
Maintenez la touche Maj enfoncée et cliquez avec le bouton droit dans l’espace blanc vide de la fenêtre de l’Explorateur.

-
Maintenez la touche Maj enfoncée et cliquez avec le bouton droit dans l’espace blanc vide de la fenêtre de l’Explorateur.
-
Dans la nouvelle fenêtre de console, entrez cette commande :
cocos new CocosGettingStarted -l cpp- Assurez-vous que votre sous-répertoire cible (CocosGettingStarted) n’existe pas déjà : cette commande échoue si le dossier existe déjà.
- Si vous recevez le message “‘cocos’ isn’t recognized as an internal or external command”, c’est que vous n’avez pas configuré correctement l’installation de cocos (reportez-vous au guide d’installation de Cocos pour Windows).
- En cas de réussite, un nouveau dossier CocosGettingStarted est créé. Ce guide désignera cet emplacement par
{CocosGettingStarted}.
- La sortie en cas de réussite devrait ressembler à l’exemple ci-dessous.
-
Téléchargez le SDK PlayFab Cocos2d-xSdk : SDK Cocos2D-x (C++). Enregistrez-le et extrayez-le dans un emplacement temporaire {PlayFabCocos}
- Ouvrez le dossier suivant dans l’Explorateur Windows : {PlayFabCocos}/PlayFabClientSDK
- Ouvrez le dossier suivant dans une deuxième fenêtre de l’Explorateur Windows : {CocosGettingStarted}/Classes
- Copiez-collez tous les fichiers de {PlayFabCocos}/PlayFabClientSDK vers {CocosGettingStarted}/Classes
-
Dans Visual Studio, chargez
{CocosGettingStarted}/proj.win32/CocosGettingStarted.sln. - Nous voulons ajouter les fichiers PlayFab au projet Cocos.
- Dans le panneau Explorateur de solutions de Visual Studio, développez l’arborescence jusqu’au dossier : Solution/CocosGettingStarted/src
-
Ouvrez une fenêtre de l’Explorateur Windows sur {CocosGettingStarted}/Classes
- Sélectionnez tous les fichiers de {CocosGettingStarted}/Classes, SAUF AppDelegate.h, AppDelegate.cpp, HelloWorldScene.h et HelloWorldScene.cpp
- Faites glisser tous ces fichiers depuis l’Explorateur et déposez-les dans le dossier Solution/CocosGettingStarted/src de Visual Studio identifié ci-dessus. En cas de problème, vous pouvez faire glisser et déposer chaque fichier un par un, en veillant bien à tous les ajouter.
-
Vous devriez voir ces fichiers dans votre projet VS :

-
Ouvrez la fenêtre Properties de votre projet CocosGettingStarted (comme illustré ci-dessous).

-
Remplacez Additional Include Directories par ceci :
$(ProjectDir)..\cocos2d\external\zlib\include;$(ProjectDir)..\cocos2d\external\curl\include\win32;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;..\Classes;..;%(AdditionalIncludeDirectories);$(_COCOS_HEADER_WIN32_BEGIN);$(_COCOS_HEADER_WIN32_END);..\cocos2d
Nous ajoutons curl et zlib, des bibliothèques fournies avec Cocos mais qui ne sont pas activées par défaut.
Configurer votre premier appel d’API
Ce guide présente les étapes minimales nécessaires pour effectuer votre premier appel d’API PlayFab. La confirmation est visible dans l’application.- Dans Visual Studio, dans le dossier Solution/CocosGettingStarted/src, ouvrez HelloWorldScene.h et remplacez son contenu par ceci :
- Dans Visual Studio, dans le dossier Solution/CocosGettingStarted/src, ouvrez
HelloWorldScene.het remplacez son contenu par celui présenté ci-dessous.
- Dans Visual Studio, dans le dossier Solution/CocosGettingStarted/src, ouvrez
- Juste à côté, ouvrez
HelloWorldScene.cppet remplacez son contenu par ceci :
Terminer et exécuter
- Générez et exécutez votre projet Cocos : Dropdowns -> Debug -> Start Debugging.
- Vous êtes invité à générer le projet. Sélectionnez Yes.
- Vous devriez voir un écran indiquant : Congratulations, you made your first successful API call!
-
Vous pouvez maintenant commencer à effectuer d’autres appels d’API et à créer votre jeu.
Pour obtenir la liste de tous les appels d’API client disponibles, consultez notre documentation Références de l’API PlayFab.
Analyse du code
Cette dernière section facultative décrit en détail chaque partie du code source ci-dessus.-
HelloWorldScene.h- Ce fichier n’est que très légèrement modifié par rapport au
HelloWorldScene.hpar défaut généré par Cocos. - Plus précisément, il définit certains éléments de l’interface graphique Cocos que nous utilisons, ainsi que les prototypes de
OnLoginSuccessetOnLoginFail. - Tout le reste correspond aux fonctions standard du moteur Cocos.
- Ce fichier n’est que très légèrement modifié par rapport au
-
HelloWorldScene.cpp-
createScene()est une fonction standard du moteur Cocos. -
init()-
Éléments habituels de l’interface graphique Cocos :
closeItemettestReportLabel. -
PlayFab::PlayFabSettings::titleId = "xxxx";- Chaque développeur PlayFab crée un titre dans Game Manager. Lorsque vous publiez votre jeu, vous devez coder ce titleId dans votre jeu. Cela permet au client de savoir comment accéder aux bonnes données dans PlayFab. Pour la plupart des utilisateurs, il suffit de considérer cette étape comme obligatoire pour que PlayFab fonctionne.
-
PlayFab::ClientModels::LoginWithCustomIDRequest request;- La plupart des méthodes d’API PlayFab nécessitent des paramètres d’entrée, qui sont regroupés dans un objet de requête.
- Chaque méthode d’API nécessite un objet de requête unique, avec un ensemble de paramètres facultatifs et obligatoires.
- Pour
LoginWithCustomIDRequest, il existe un paramètre obligatoireCustomId, qui identifie de manière unique un joueur, etCreateAccount, qui permet de créer un nouveau compte avec cet appel.
- Pour
- Pour la connexion, la plupart des développeurs voudront utiliser une méthode de connexion plus appropriée.
- Consultez la documentation sur la connexion PlayFab pour obtenir la liste de toutes les méthodes de connexion et de leurs paramètres d’entrée. Les choix courants sont :
LoginWithAndroidDeviceIDLoginWithIOSDeviceIDLoginWithEmailAddress
- Consultez la documentation sur la connexion PlayFab pour obtenir la liste de toutes les méthodes de connexion et de leurs paramètres d’entrée. Les choix courants sont :
-
PlayFab::PlayFabClientAPI::LoginWithCustomID(request, OnLoginSuccess, OnLoginFail, nullptr);- Cette ligne lance la requête asynchrone vers
LoginWithCustomIDet appelle la fonctionOnLoginSuccessouOnLoginFailune fois terminée.
- Cette ligne lance la requête asynchrone vers
-
Éléments habituels de l’interface graphique Cocos :
-
update(float delta)- Le simple fait de définir la variable
statusMsgne met pas à jour le texte affiché à l’écran. - Cette fonction met à jour le texte de l’interface graphique pour qu’il corresponde au contenu de
statusMsgà chaque tick (ce qui n’est pas très efficace).
- Le simple fait de définir la variable
-
OnLoginSuccess(result, customData)- Lorsque le rappel de réussite est appelé, l’objet de résultat de nombreux rappels d’API contient les informations demandées.
LoginResultcontient quelques informations de base sur le joueur, mais pour la plupart des utilisateurs, la connexion n’est qu’une étape obligatoire avant d’appeler d’autres API.
-
OnLoginFail(error, customData)- Si la fonction d’erreur est appelée, votre appel d’API a échoué.
- Les appels d’API peuvent échouer pour de nombreuses raisons, et vous devez toujours essayer de gérer les échecs.
- Raisons de l’échec des appels d’API (par ordre de probabilité)
PlayFabSettings.TitleIdn’est pas défini. Si vous oubliez de définir titleId sur votre titre, rien ne fonctionnera.- Dans Cocos, la bibliothèque curl fera probablement planter votre jeu si vous ne définissez pas correctement titleId.
- Paramètres de la requête. Si vous n’avez pas fourni les informations correctes ou requises pour un appel d’API particulier, celui-ci échouera. Pour plus d’informations, consultez
error.errorMessage,error.errorDetailsouerror.GenerateErrorReport(). - Problème de connectivité de l’appareil. Les téléphones mobiles perdent et retrouvent constamment la connectivité : tout appel d’API peut donc échouer de manière aléatoire à tout moment, puis fonctionner immédiatement après. Entrer dans un tunnel peut vous déconnecter complètement.
- Problème du serveur PlayFab. Comme pour tout logiciel, des problèmes peuvent survenir. Consultez nos notes de publication pour connaître les mises à jour.
- Internet n’est pas fiable à 100 %. Il arrive que le message soit corrompu ou n’atteigne pas le serveur PlayFab.
- Si vous avez des difficultés à déboguer un problème et que les informations du rappel d’erreur ne suffisent pas, rendez-vous sur nos forums.
-
customData est un pointeur void, qui peut être utilisé de n’importe quelle manière pour établir un contexte.
- En C++, il est plus difficile de conserver le contexte d’un appel d’API ; nous avons donc ajouté le paramètre
customData, qui permet de relayer n’importe quel objet vers le rappel et que vous pouvez utiliser comme bon vous semble pour établir un contexte. - Ainsi, si vous effectuez des appels d’API pour récupérer l’inventaire, vous pouvez transmettre un pointeur de joueur ou d’inventaire en tant que
customData, puis mettre à jour l’inventaire de cet objet dans le rappel.
- En C++, il est plus difficile de conserver le contexte d’un appel d’API ; nous avons donc ajouté le paramètre
-
