Pages traduites Pages à traduire Pages en cours de traduction
A propos
 


Migrer vers AGS 2.7

Le langage de script d'AGS 2.7 a drastiquement changé par rapport à celui des versions précédentes. Beaucoup de commandes sont devenues orientées objet , ce qui présente plusieurs avantages par rapport à l'approche précédente. Cette page tentera de vous présenter les nouvelles méthodes et d'en expliquer les avantages.

Tout d'abord, pour que vous vous fassiez une idée des changements, voici un exemple de certaines commandes dans l'ancien style, et leurs équivalents :

AnimateObjectEx(0,2,0,0,0,1);
ListBoxAdd(3, 5, "Nouvel objet");

devient :

oCascade.Animate(2, 0, eOnce, eForwards, eBlock);
lstTest.AddItem("Nouvel objet");

Rien qu'en regardant cet exemple les avantages devraient être évidents ; l'apprentissage du script est plus intuitif, il est plus facile à lire (il n'y a plus à trouver ce que signifient les chiffres dans la fonction AnimateObjectEx), et ainsi vous êtes moins à même de faire des erreurs en l'utilisant. Les contrôles de GUI ont désormais des noms ce qui s'approche du style de GUI dans Visual Basic, et vous n'avez plus à vous rappeler les numéros de chacun de vos contrôles.

La fonction de l'éditeur d'auto-complétion du script a été significativement améliorée pour vous aider. Vous verrez en commencer à tester que l'auto-complétion s'affiche plus souvent et ne liste que les commandes pertinentes grâce au scripting orienté objet.

Cela signifie-t-il alors que je dois jeter tous mes anciens scripts ?

Non, ben sûr que non ! Cette nouvelle version est totalement rétro-compatible, ainsi tous vos anciens scripts continueront de fonctionner normalement. Toutefois, lorsque vous écrivez de nouveaux scripts, il est fortement recommander d'utiliser les nouvelles commandes orientées objet.

D'accord, alors euh… qu'est-ce qui a changé exactement ?

La syntaxe du langage de script n'a pas changé du tout (la façon dont vous utilisez les point-virgules, les accolades, etc.). Ceci est comme avant, mais avec quelques ajouts. Le plus significatif concerne les commandes qui sont désormais appelées sur quelque chose . Par exemple, l'ancienne commande :

StopMoving(EGO);

Au premier regard, il n'est pas facile de dire ce que fait StopMoving. Cela stoppe-t-il le déplacement d'un personnage, d'un objet, ou le mouvement de l'écran ? Ce n'est pas intuitif. Désormais, plutôt que passer le personnage comme un paramètre de cette fonction, vous appelez véritablement la fonction sur le personnage. De cette façon :

character[EGO].StopMoving();

Désormais, il est parfaitement clair que c'est le personnage EGO que nous voulons stopper.

Imaginez que vous vous demandiez quelle commande appeler sur un personnage. Avant, c'était difficile à dire, mais maintenant si vous tapez character[EGO]. dans l'éditeur de script, l'auto-complétion affichera une liste de toutes les fonctions et propriétés disponibles pour les personnages.

Je dois donc taper character[EGO] à chaque fois ? Quelle plaie !

Pas si vite ! La plupart des nouvelles commandes orientées objet peuvent être appelées de deux façons – soit depuis un tableau comme nous venons de voir, mais aussi depuis ce qui s'appelle le Script O-Name du personnage. C'est un raccourci qui vous permet d'accéder directement aux éléments, et pour les personnages cela correspond au nom de script précédé de “c”. Ainsi, pour cet exemples nous aurions :

cEgo.StopMoving();

Cette ligne a le même effet que celle avec character[EGO] que nous avons utilisée plus haut.

De plus, la variable player correspond désormais touours au personnage joueur en cours, c'est donc très pratique. Dans un jeu à plusieurs personnages, ce que vous écriviez ressemblait à ça :

StopMoving(GetPlayerCharacter());

Cela peut désormais se faire ainsi :

player.StopMoving();

Hmm, je vois… donc qu'est-ce qui a été objectivé exactement ?

Acutellement, les éléments orientés objet suivant sont utilisables :

Tableau global Exemple de O-Name
character[] cEgo
object[] oPorte
hotspot[] hArbre
gui[] gInventaire
inventory[] iAfficheRose
region[] (aucun)


Les contrôles GUI sont géré assez différemment. Ils ont tous un nom de script, et on y accède directement grâce à eux. Par exemple, si vous donnez à une list box le nom de script “lstSaves”, alors vous utiliserez “lstSaves.” pour y accéder. Il n'y a pas de tableau global pour les contrôles de GUI.

Comment je trouve les nouveaux équivalents des anciennes fonctions ?

L'index du fichier d'aide a été mis à jour pour vous rediriger automatiquement vers les nouvelles commandes. Ouvrez juste le fichier d'aide, allez à l'index et tapez le nom de l'ancienne commande, et cela affichera le nouvel équivalent orienté objet (s'il existe).

Quelles commandes n'ont pas été changées ?

Les commandes qui n'agissent pas sur quelque chose en particulier (et qui n'auraient donc pas vraiment profité de l'orientation objet) ont été épargnées. Par exemple, SaveGameSlot, QuitGame et autres n'ont pas changé par rapport aux anciennes versions.

C'est quoi ces trucs “eBlock” ?

AGS supporte désormais les types énumérés . Basiquement, dans les situations où vous devez choisir dans une liste d'options possibles, un type énuméré (ou enum ) est désormais introduit. Précédemment, vous aviez des commandes avec des descriptions comme :

“Passez 1 si vous voulez que la fonction bloque, 0 si vous ne le voulez pas.”.

Cela faisait beaucoup de 1 et de 0 dans les appels de fonctions, ce qui rendait la lecture difficile. Maintenant, chaque numéro est plutôt représenté par un mot facile à se souvenir (comme eBlock et eNoBlock). Encore mieux, lorsque vous appelez une fonction qui utiliser un paramètre enum, l'auto-complétion affiche automatiquement une liste d'options parmi lesquels choisir.

Voyez la description du mot-clé enum pour des informations sur la façon d'en créer.

Alors je dois passer toutes ces choses comme eBlock chaque fois que j'appelle la fonction ?

Non ! Beaucoup de fonctions supportent désormais les paramètres optionnels , où les options les plus courantes sont sélectionnées automatiquement. Si vous consulter l'aide pour une fonction comme la commande de personnage Animate, vous verrez que certains paramètres sont définis comme “optionnels”. Cela signifie que vous n'avez pas à les spécifier ; si vous ne le faites pas, l'option qui sera choisie par défaut est décrite dans l'aide pour cette commande.

Quoi d'autre est nouveau ?

Eh bien, la version 2.7 introduit le type de données float , AGS supporte donc finalement les calculs décimaux dans vos scripts. De plus, pour les codeurs plus avancés, vous pouvez créer vos propres fonctions membres (incluant les protégées – protected – et les statiques) afin d'écrire des scripts plus propres que si vous aviez un tas de fonctions globales.

Aussi, l'éditeur de script détecte maintenant plus efficacement vos erreurs. Il se peut que des scripts qui se compilaient sans soucis avant ne fonctionnent plus sur la 2.7. Normalement, le message d'erreur devrait vous signaler directement le problème.

Y a-t-il autre chose à quoi je dois me préparer ?

A cause des nouveaux ajouts, le langage de script a davantage de mots réservés qu'avant. Par exemple, des mots comme “gui”, “object” et “hotspot” sont désormais réservés (puisqu'ils sont utiliser pour accéder aux tableaux globaux). Si votre script utilise des variables qui portent ces noms, il y aura désormais conflit. Vous devrez changer les noms de ces variables pour pouvoir compiler.

Aussi, le langage de script supporte désormais les pointeurs . Vu que c'est un sujet assez complexe, il y a une page séparée qui leur est consacrée.

Eh bien, ça fait beaucoup. Par où je commence ?

Je vous recommanderais d'essayer d'écrire votre prochain script de la nouvelle façon. Chaque fois que vous êtes sur le point d'utiliser une commande de l'ancien style, regarder simplement dans le manuel pour trouver son nouvel équivalent.

Une fois que vous serez habitué au nouveau système, je suis sûr que vous concéderez que c'est une amélioration significative par rapport à l'ancien système de script et vous commencerez à profiter des avantages d'un codage plus rapide et plus intuitif.

Comme toujours, s'il y a quelque chose qui vous tracasse véritablement, postez sur les Forums AGS et nous essayer de vous aider au mieux !

Amusez-vous bien, CJ

Suite : Les pointeurs dans AGS

 
ags31.txt · Dernière modification: 29/04/2011 11:07 par kitai
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki