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 goto chambre qui sautera immédiatement à cette scène.
Par défaut, le jeu commence à la scène dont l'ID est start.

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.
Si vous essayez d'utiliser un élément de la mauvaise façon, un message d'erreur s'affichera aléatoirement parmi les phrases d'erreur 1 à 3.

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.
Lors d'un dialogue, quand vous ferez appel au personnage tony, cela affichera Anthony à gauche en bleu (cyan) et lorsque vous ferez appel à jess, cela afficher Jessica à droite en rose (pink).

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 cle avec serrure, avec toutes les actions qui en découlent. Imaginons maintenant que le joueur veuille plutôt tenter cle avec banane, cas que vous n'avez pas géré. Le système va alors piocher une des trois phrases de l'exemple au hasard et l'afficher. Cela permet de ne pas avoir de retours trop répétitifs lors d'actions en échec.
Concernant la troisième ligne, le système affichera "Impossible d'utiliser clé ici", et remplacera [item] par l'objet en cours.

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 baton avec ficelle pour crér un arc. Imaginons maintenant que celui-ci essaie de combiner baton avec boulon; Le système va alors piocher une des trois phrases de l'exemple au hasard et l'afficher. Cela permet de ne pas avoir de retours trop répétitifs lors de combinaisons en échec.
Concernant la troisième ligne, le système affichera "Pourquoi essayer de combiner bâton avec boulon", et remplacera [item1] et [item2] par les objets en cours.

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.