logo
Connexion
 
Pseudo : 

Mot de passe : 


Perdu le mot de passe ?

Inscrivez-vous maintenant !

Tutoriaux, Guides
 

Menu principal
 

Qui est en ligne ?
 9 utilisateur(s) en ligne

Membre(s): 0
Invité(s): 9

plus...

Sondages
 
Etes-vous pour la création d'une partie ET:QuakeWars
Oui, une section ET:Quakewars façon site/thème changeant
Oui, une section ET:Quakewars façon forum supplémentaire
Non, pas de ET:Quakewars ici

Partenariat
 
Visualiser tous les Partenaires...

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
		    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 :
nom_du_bloc
{
	Ici le contenu du bloc... bla bla bla
}

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 :
nom_du_bloc
{
	spawn
	{
		Contenu du sous_bloc spawn
		Pas besoin du trigger dans ce cas
		Le contenu est exécuté au chargement de l'entité (avec la map & le script)
	}
	trigger sous_bloc_1
	{
		Contenu du sous_bloc_1
		On pourra l'appeler quand on veut
	}
	trigger sous_bloc_2
	{
		Contenu du sous_bloc_2
		Idem
	}
}

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 //
Ceci est ma ligne de script... // Ceci est le commentaire qui va avec


> 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 :
trigger nom_du_bloc nom_du_sous_bloc

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


----------------
Remember, the easier you make it for someone to help you, the more like it is that someone will help you. People who make helping a really painful process only get helped by those who are 1) masochists or 2) are so bored they have nothing better to do....

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
 
Administré par cR4ZyB3n © 1998-2006 sur une base de XOOPS Modifications par cR4ZyB3n
Testé sur IE6 & Mozilla 1.6, optimisé pour une résolution de 1024*768