Index des forums de EasyMapping Scripting Généralités sur les scripts | Enregistrez-vous pour poster |
Par conversation | Les + récents en premier | Sujet précédent | Sujet suivant | Bas |
Expéditeur | Conversation |
---|---|
Gnoun | Envoyé sur : 7/6/2006 19:52 |
Modérateur Inscrit le: 8/1/2005 De: Envois: 365 |
Généralités sur les scripts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ce mini-tuto sur les scripts n'a pas pour but d'apprendre aux gens à faire leurs scripts de A à Z, mais plutôt (l'ami de mickey) l'occasion de rassembler les généralités de telle sorte que les gens puissent créer/ modifier des scripts sans tomber dans les pièges débattus 100 fois déja. :) Bien évidement, ceci a vocation à évoluer et sera édité en fonction des possibles remarques/trous/erreurs/etc... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Préambule Les scripts sont la partie de la map qui permettent la plupart des interactions entre le joueur et l'environnement. Il est a savoir que la plupart des actions non triviales mettant en cause des éléments de la map requièrent l'utilisation de scripts. Il peut être dans certains cas même plus aisé de travailler avec des scripts qu'avec des entités, et cela pour l'aspect modulable des scripts, qui permettent une infinité de choses pour la peine qu'on se donne le temps de les comprendre. Au delà des considérations de gameplay, les scripts apportent une véritable valeur ajoutée pour ce qui concerne l'immersion, et permet des petits plus agréables et qui donnent envie de revenir sur la map. Qui n'a jamais passé le warmup a se battre pour la possession du piano de Venice? ;o) > Les éléments de base Un script est un fichier texte que l'on peut créer a partir de n'importe quel éditeur de texte - Wordpad fait très bien l'affaire, si vous avez un éditeur avec coloration syntaxique, c'est encore mieux! Afin que tout fonctionne, le script est a mettre dans le dossier /maps, a coté du bsp Le script en lui même se décompose en blocs qui ont chacun un identifiant unique, et qui pourront être appelés selon les besoins du mappeur. Ainsi, chaque bloc est de la forme :
Afin d'éviter toute erreur, il est recommandé de fermer les blocs à leur création. A l'intérieur de ces blocs, on peut encore créer des sous-blocs indépendants, toujours identifiés de manière unique. Ces sous blocs se divisent en deux catégories : 1) Ceux qui sont définis par défaut dans ET et qui sont particuliers à l'entité a laquelle ils sont liés 2) ceux que le mappeur peut ajouter a sa guise. Ces derniers sont précédés du mot-clé "trigger" ce qui donne :
La liste des sous blocs définis par défaut est disponible en annexe - cf. Liste des commandes A l'intérieur des scripts, il est possible - et recommandé - d'écrire des commentaires. Ceux-ci sont précédés de //
> Les impératifs / Recommandations : Maintenant, un petit paragraphe sur les obligations, recommandations et les conventions : Il faut créer un bloc de script nommé game_manager qui va contenir toutes les caractéristiques de la map : Dans le bloc spawn, on y trouvera l'inititalisation des variables, En parallèle, il est nécessaire de mettre quelque part dans la map l'entité script_multiplayer. Cette entité va appeler le sous bloc au chargement de la map (voir les détails de l'entité pour les clés a entrer) Dans chaque bloc de script, il faut mettre un sou_bloc "spawn" spécifiant si nécessaire l'état initial des variables/entités liées au bloc dont il fait partie. Il est important de bien indenter le script que l'on écrit afin que celui-ci soit lisible - Identifier les accolades qui se correspondent avec un millier de lignes de script et des dizaines de blocs/sous-blocs devient vite impossible. > L'organisation du script: Afin de pouvoir créer quelquechose d'évolué, il est nécessaire d'avoir a sa disposition des variables dans lesquelles ont peut stocker les valeurs dont on a besoin. Ces variables portent le nom "accum" Il en existe de deux sortes : - Les globalaccums -variables globales- qui sont consultables et modifiables partout dans le script - Les accums classiques qui sont spécifiques au bloc dans lequel ils sont placés Le nombre d'accums étant limité, on aura donc intéret a utiliser les accums classiques afin de conserver les globalaccums pour les éléments vraiment importants - ie. ceux auxquels ont fera référence aux quatres coins du script. Ces varables sont des mots de plusieurs bits (32 au total). On peut soit utiliser la variable dans sa globalité (on dispose d'un grand nombre d'états, c'est pratique pour numéroter quelquechose qui peut prendre de grandes valeurs (toutes les valeurs de 0 à 2^32-1) - par exemple les plots correspondant au trajet d'un véhicule), soit utiliser les bits séparement (on a alors un grand nombre de variables différentes - 32 par accum). Il est recommandé d'écrire clairement en entête du script/bloc un commentaire expliquant à quoi correspond chaque variable/bit. Puisque l'on dispose de plein de blocs, il est sympatique de pouvoir appeler un bloc à tout moment dans le script. En fait, on n'appelle pas les blocs mais les sous-blocs par la commande :
Le contenu du sous bloc sera ainsi exécuté. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > Annexes Liste des commandes : La liste des commandes est disponible sur le site de Chruker à l'adresse : http://games.chruker.dk/enemy_territory/scripting_reference.php Les noms de sous blocs définis par défaut sont disponibles dans le tableau en fin de page. Liste d'exemples classiques Voir les tutos du site A remplir avec d'autres exemples classiques... Liste d'exemples avancés A remplir avec des exemples plus tordus... Gnoun
|
pakalatak | Envoyé sur : 9/6/2006 0:00 |
Accro au béton Inscrit le: 24/12/2005 De: Envois: 733 |
Re: Généralités sur les scripts Bravo Gnoun ! a mettre dans les "sticky" !!!
|
psylopat | Envoyé sur : 9/6/2006 10:49 |
Modérateur Inscrit le: 16/1/2006 De: Saint-Etienne Envois: 638 |
Re: Généralités sur les scripts Excellent, excellent !!! Dire que j'ai du me remettre à niveau en anglais pour réussir à comprendre ce que tu viens d'expliquer avec une très grande clarté !
Je recommande à Crazyben de mettre ce post bien en évidence ainsi que le précédent sur la compilation qui est tout aussi bien rédigé ... Maintenant les détails, y a 2-3 termes que tu pourrais expliciter pour les non-programmeur : "indenté" et aussi "action non triviale" (j'ai toujours eu du mal à saisir le sens de ce dernier ... ). A un moment, tu abordes le sujet des 'set' et 'bitset' ... Une explication approfondie est peut etre nécessaire ('set' : 1 valeur allant de 0 à 255 ; 'bitset' : 32 valeurs allant de 0 à 1 ... Donner un exemple d'utilisation ...) Peut etre qu'un ou deux scripts d'exemple commenté aiderait à la compréhension de la syntaxe (voir ici)... Bon, ça fait beaucoup de choses , si j'ai le temps et la motiv, je tenterais de rédiger une suite à ton article ... Encore bravo ! |
Par conversation | Les + récents en premier | Sujet précédent | Sujet suivant | Top |
Enregistrez-vous pour poster | |