Sommaire
Documentation
WAP, késako ?
Wap est né d'un besoin de pouvoir créer des jeux de type point'n click (comme Monkey Island ou Les Chevaliers de Baphomet), à destination de personnes n'ayant aucune connaissance en code, dessin, animation, etc. mais souhaitant créer des aventures. Wap est donc un moteur de jeux d'aventures textuels, basé sur un langage propriétaire mais très simple; vous arriverez rapidement à des résultats époustouflants !
Vous pourrez créer des jeux de type point'n click, Livres dont vous êtes le héros, escape games, histoires interactives, etc.
Les jeux produits sont en fait un enchainement de scènes et de commandes, contenant des objets avec lesquels interagir, mais aussi des personnages à qui parler, des actions à réaliser, etc. Cerains mots-clés deviennent cliquables et lanceront une série d'actions prédéfinies.
Ludiscript
Les jeux sont créés à l'aide d'un langage qui s'appelle Ludiscript. Ce langage à été spécialement conçu afin de faciliter la création d'aventures textuelles. Ludiscript comporte certaines règles de base :
- Le code est rangé dans des sections qui représentent les scènes, personnages, etc.
- Le code est délimité par des tabulations.
- L'élément de base est le mot-clé, sur lequel le joueur doit cliquer pour faire évoluer l'aventure
- Les actions sont lancées séquentiellement
Les commentaires
Les textes commençant par // sont des commentaires. Ils peuvent se trouver en début ou en fin de phrase, mais gardez en tête que tout ce qui se trouve après ne sera pas interpreté.
Les mots-clés
Les mots-clés sont les éléments de base du fonctionnement de Wap. Ce sont sur ceux-ci que le joueur va cliquer afin d'enclencher des actions.
Un mot-clé est déclaré comme suit :
Dans la mare, il y a un [poisson|C'est un gros poisson !:gros poisson] à pêcher.
Dans cet exemple, on crée un mot clé gros poisson, qui aura comme ID poisson et comme description C'est un gros poisson !.
Ce mot-clé pourra ensuite être associé à des actions lorsqu'on cliquera dessus.
Interactions
Pour gérer les interactions avec les mots-clés c'est très simple :
// Exemple d'interaction sur mot-clé
scenes
exemple
text Veuillez [item=_ici]cliquer ici[/item].
_ici
popup Hello world !
...
On déclare un mot-clé avec comme ID _ici. Lorsqu'on clique sur _ici, on lance toutes les commandes à l'intérieur, dont la popup "Helo world !".
Les sections
Le langage de script de Wap fonctionne avec des sections. Chaque section représente une entité dans le jeu : personnages, verbes, scènes, etc. Les sections débutent au début de la ligne et ne doivent pas commencer par une tabulation.
| Section | Description | Exemple |
|---|---|---|
| scenes |
Stocke les scènes. Une scène, comme au théâtre, représente un lieu, un moment, etc. |
scenes
chambre
commande...
commande...
commande...
...
Cet exemple crée la scène dont l'ID est chambre. Pour pouvoir afficher cette scène dans le jeu, vous pouvez utiliser |
| verbs |
Stocke les verbes. Un verbe représente une action, par exemple Donner, Prendre, Parler, etc. |
verbs
use Utiliser
Phrase erreur 1.
Phrase erreur 2.
Phrase erreur 3.
Cet exemple crée le verbe Utiliser, dont l'ID est use. L'action Utiliser sera disponible dans votre jeu. |
| characters |
Stocke les personnages. Les personnages sont utilisés dans les dialogues entre autres. |
characters
tony cyan left Anthony
jess pink right Jessica
Cet exemple crée deux personnages, Anthony dont l'ID est tony et Jessica dont l'ID est jess. |
| blocks |
Stocke les blocs de commandes. Les blocs sont en fait un ensemble de commandes qui peuvent être répétées. On peut voir cela comme une fonction, qui peut être appelée plusieurs fois dans votre script. |
blocks
hello
popup Salut tout le monde !
Cet exemple crée un bloc dont l'ID est hello et qui comporte une seule commande. lorsque vous appelerez ce bloc dans votre code, le jeu affichera une popup contenant le texte "Salut tout le monde !". |
| inventory | Stocke les messages d'erreur liés à l'utilisation d'objets et de l'inventaire. |
inventory
Ca ne fonctionne pas
Non, ça ne marche pas
Impossible d'utiliser [item] ici
Imaginons que vous ayez géré le cas ou le joueur essaie d'utiliser |
| combine | Stocke les messages d'erreur liés à la combinaison d'objets de l'inventaire. |
combine
Impossible de combiner ces deux objets
Essaie autre chose...
Pourquoi essayer de combiner [item1] avec [item2] ?
Imaginons que vous ayez géré le cas ou le joueur doive combiner |
Les commandes
| Contexte | Commande | Description |
|---|---|---|
| Inventaire | invAdd | Ajoute un élément à l'inventaire |
| invDel | Supprime un élément de l'inventaire | |
| invClear | Supprime tous les éléments de l'inventaire | |
| Verbes | verbAdd | Ajoute un élément à la liste des verbes |
| verbDel | Supprime un élément de la liste des verbes | |
| verbClear | Supprime tous les éléments de la liste des verbes | |
| Variables / Conditions | var | Initialise ou opère une variable pouvant être utilisée avec les conditions if, else, elseif ou pouvant être directement affichée à l'écran |
| if | Début de bloc de condition | |
| else | Combiné avec un if, permet de mettre une alternative à une condition | |
| Scène | goto | Saute immédiatement à une autres scène |
| Dialogues | say | Affiche le dialogue d'un personnage. |
| choices | Initialise une question avec une liste de choix disponibles. Voir choice | |
| choice | Initialise une réponse lors d'une question. Voir choices | |
| Textes | title | Change le titre de la scène |
| text | Change le texte principal de la scène | |
| popup | Affiche un texte temporairement, utile pour afficher un commentaire ou un pensée. | |
| textDel | Supprime un texte avec son id de la scène | |
| textReplace | Remplace un texte avec son id de la scène | |
| Objets | itemDel | Supprime un item d'un texte avec son ID |
| Divers | input | Permet au joueur de rentrer du texte au clavier. Le résultat est stocké dans une variable |
| block | Initialise un bloc de commandes pouvant être appelé à partir de n'importe quel autre bloc de commandes | |
| wait | Marque une pause de X secondes |
Note : Certaines commandes peuvent être multiligne : text, textReplace, popup, choices, choice.
Les variables
Les conditions (if, else) fonctionnent avec des variables. Une condition teste une variable pour savoir si elle est vraie ou fausse.
Exemple :
scenes
start
var maVar = 2
title Exemple de variable
text Veuillez [item=_ici]cliquer ici[/item].
_ici
if maVar = 2
popup La variable maVar vaut 2
else
popup La variable maVar ne vaut pas 2
Dans cet exemple, lorsqu'on clique sur l'objet _ici, une popup s'affichera avec comme texte "La variable maVar vaut 2", car maVar a été initialisée à 2 en début de script.
On peut effectuer des opérations mathématiques sur des variables :
| Opérateur | Description | Exemple |
|---|---|---|
| = | Initialise une variable |
var maVar = 0
La variable maVar est déclarée et vaut maintenant 0. |
| + | Incrémente une variable |
var maVar = 2
var maVar + 4
La variable maVar vaut 6. |
| - | Décrémente une variable |
var maVar = 3
var maVar - 2
La variable maVar vaut 1. |
| * | Décrémente une variable |
var maVar = 2
var maVar * 6
La variable maVar vaut 12. |
| / | Divise une variable |
var maVar = 10
var maVar / 2
La variable maVar vaut 5. |
Pour afficher une variable dans un texte, il suffit de faire : text Ma variable maVar vaut [var=maVar].
Note : Nous pouvons aussi opérer ou comparer des variables entre elles : maVar = maVar2 ou if maVar > maVar2.
Les conditions
les conditions sont omniprésentes dans les jeux. Elles vérifient si le joueur à une clé ou encore si un personnage est endormi ou si on peut passer une porte, etc. Les conditions testent des variables, sur lesquelles on peut effectuer des comparaisons (grâce à if, else, elseif) :
| Opérateur | Description | Exemple |
|---|---|---|
| > | Vérifie si une variable est supérieure à une valeur |
if maVar > 12
Vérifie si la variable maVar est supérieure à 12. |
| >= | Vérifie si une variable est supérieure ou égale à une valeur |
if maVar >= 12
Vérifie si la variable maVar est supérieure ou égale à 12. |
| < | Vérifie si une variable est inférieure à une valeur |
if maVar < 12
Vérifie si la variable maVar est inférieure à 12. |
| <= | Vérifie si une variable est inférieure ou égale à une valeur |
if maVar <= 12
Vérifie si la variable maVar est inférieure ou égale à 12. |
| != ou <> | Vérifie si une variable est différente d'une valeur |
if maVar != 12
Vérifie si la variable maVar est différente de 12. |
Condition If
Si une condition if est vraie, elle lance les commandes. Exemple :
var clePorte = 1
if clePorte = 1
popup La porte s'est ouverte grâce à la clé !
Dans cet exemple, la popup s'affichera parceque la condition IF est vraie.
Condition Else
Si une condition if est fausse, on peut gérer le cas grâce à un else. Exemple :
var clePorte = 0
if clePorte = 1
popup La porte s'est ouverte grâce à la clé !
else
popup La porte reste fermée car vous n'avez pas la clé.
Dans cet exemple, la popup "La porte reste fermée..." s'affichera parceque la condition IF est fausse.
Note : Les conditions peuvent être imbriquées. Exemple :
var clePorte = 1
var dragon = 0
if clePorte = 1
popup La porte s'est ouverte grâce à la clé !
if dragon = 1
popup Malheureusement, un dragon était caché derrière la porte et vous a mangé !
else
popup Vous passez tranquillement la porte sans danger...
else
popup La porte reste fermée car vous n'avez pas la clé.
Dans cet exemple, le joueur passe tranquillement la porte, sain et sauf.