Le SDK est maintenant accessible depuis la page de téléchargement de Game Develop sur le site : compilgames.net/index.php?file=kop18.php
Pour ceux qui ont utilisés les versions précédentes, il vous faut mettre à jour toutes les bibliothèques et le compilateur.
Changements importants par rapport aux versions précédentes au niveau du code :
-Les bibliothèques sont maintenant à placer dans le dossier ExtLibs du SDK.
-La déclaration des extensions a un peu changé, notamment les paramètres. Prenez exemple sur les extensions existantes, j’ai remplacé certaines macro ( DECLARE_PARAMETER ) par des fonctions ( instrInfo.AddParameter ), afin d’avoir quelque chose d’un peu plus flexible ( Possibilité de déclarer une valeur par défaut en “chainant” les appels ).
-Les macros DECLARE_ACTION et compagnie sont toujours là, mais ne prenne plus de pointeurs de fonctions vers la fonction à appeler. A la place, utilisez instrInfo.cppCallingInformation.SetFunctionName(“NomDeMaFonction”) ( A placer au même niveau que les paramètres ).
Game Develop peut maintenant utiliser beaucoup plus facilement et directement les fonctions que vous définissez dans vos objets/automatismes et les fonctions libres : Game Develop va générer un appel à la fonction ayant le nom indiqué dans SetFunctionName, avec pour arguments les paramètres de l’action/condition/expression. La correspondance entre arguments C++ et paramètres de Game Develop est disponible dans la documentation à EventsCodeGenerator::GenerateParametersCodes.
Enfin, là aussi, le mieux est de regarder en pratique comment ça marche avec une extension simple comme AES ou Text Object.
-Toujours dans la déclaration des extensions, il faut exclure de la compilation “Runtime” tout ce qui touche aux actions/conditions/expressions. En gros, tous les blocs de déclaration d’actions/conditions/expressions doivent être entourés de #if defined(GD_IDE_ONLY) et #endif. La page “About Extension.cpp” de la documentation montre un exemple à la fin.
-Tout ce qui concerne la classe ObjectsConcerned a disparu. Si vous avez besoin de truc spéciaux genre une liste d’objets dans une condition/action, ajoutez un paramètre invisible dans l’éditeur à l’aide de instrInfo.AddCodeOnlyParameter.
-Les évènements n’ont plus de méthode Execute, mais une méthode GenerateEventCode pour générer le code associé à l’évènement. Vu que les extensions TimedEvent et FunctionEvent risquent de faire un peu peur à ce niveau, la documentation de BaseEvent::GenerateEventCode donne un exemple de ce qu’il faut faire pour générer le code d’un évènement standard.
Pour les fichiers de projets Code::Blocks :
J’ai changé toutes les chemins des bibliothèques externes pour utiliser celles qui sont dans le répertoire ExtLibs plutôt que dans un vulgaire et malpropre C:\Libs.
Changez de même dans vos projets tous les répertoire C:\Libs\ par …\ExtLibs
Les binaires de SFML ne sont plus dans SFML/Libs mais dans SFML/build-mingw-release/lib ( ou SFML/build-mingw-debug/lib ).
Ca fait pas mal de changement, mais je pense que l’écriture d’extension n’est pas plus complexe qu’avant, il va essentiellement s’agir de mettre à jour les fichiers projets avec les nouveaux chemins des bibliothèques et d’adapter la déclaration des extensions.
En cas de problème, dites moi, je peux vous donner un coup de main pour adapter un projet ou si vous butez quelque part.