1/ PRESENTATION =-=-=-=-=-=-=-= Livrant est un logiciel permettant de créer des fictions interactives. L'histoire est programmée sous la forme d'un fichier script (comme cette documentation). Ce logiciel permet d'écrire tout type d'histoires, et ne propose aucun canevas prédéfini. Il est de la sorte possible de se lancer dans l'écriture d'un 'livre dont vous êtes le héros', ou une aventure plus riche comme 'Zork'. La syntaxe de Livrant se veut simple et intuitive. Il n'y a pas de déclaration complexe, d'accolades et autres lourdeurs synthaxiques. La seule véritable barrière sera l'imagination. En contrepartie, vous ne trouverez pas de types prédéfinis et tout fait. En effet, j'ai pensé ce logiciel dans une direction particulière ou l'auteur doit penser à tout. Et celà dans le but d'avoir une écriture riche et variée. Ce choix est murement réfléchi et restera le coeur de Livrant. Toutefois, il n'est pas dit que dans des versions futures je ne développe un système de modèle voir de macros. Je vous souhaite une bonne découverte de ce logiciel. GFA-MAD 2/ FONCTIONNALITES =-=-=-=-=-=-=-=-=- -Livrant est multi machines et multi OS. En effet, étant écrit en JAVA, il peut tourner sous toute machine acceptant la machine virtuelle de SUN. -Pas de limite dans le nombre de page,variables ou autre. -Mode graphique disponible pour afficher des images au format jpg ou png. -Compression des aventures pour obtenir un format de fichier réduit (regardez la taille de cette documentation !). -Language entièrement en français. -Possibilités d'utiliser 14 polices de caractères différentes. Et pour les puristes, quelques unes sont à espacement constant. Ces polices sont intégrées dans le programme en lui-même. -Ecriture simple dans un fichier de format texte (txt). -Je vais être franc, mon but n'est pas de concurrencer les ténors du genre (inform). J'ai écrit ce soft par passion et pour pouvoir écrire mes propres IF. Livrant répond donc à mon attente. Toutefois, il propose une approche différente de l'IF, et de ce fait peut apporter quelque chose dans ce monde. 3/ FONCTIONNEMENT =-=-=-=-=-=-=-=-= a/ Les pages ~~~~~~~~~~~~~ Livrant fonctionne selon le principe de page. Une page est un élément susceptible d'être désignée comme cible d'action par le joueur, ou d'avoir à afficher quelque chose. Par exemple, une aventure simple avec un salon vide, une cuisine et une table contiendra 3 pages, une par élément. Une notion important sous Livrant est le parentage. Toute page peut-être parenté à une autre. Ainsi, si le joueur se trouve sur une page en particulier, il peut accéder à tous les enfants de cette page. Cette accessibilté concerne la réception des commandes et l'affichage. Une page peut aussi avoir des mots clés. Celà permet à la page d'être une cible pour une action. Ainsi 'ouvrir coffre' sur une page ayant 'coffre' en mot clé permettra à celle-ci de recevoir le verbe ouvrir, à condition que cette page soit accessible. b/ Les menus ~~~~~~~~~~~~~ Voici une description rapide des menus Fichier -> Ouvrir: Charge un nouveau livre (*.txt ou *.livrant) -> Recharger: Charge le dernier livre sélectionné avec le sélecteur de fichier. -> Pack Aventure: Compacte l'aventure en un fichier *.livrant. -> Quitter: Sortir du programme Livre -> Sauver: Mémorise la partie en cours. -> Charger: Charge une partie sauvegardée. Celle-ci sera restauré dans son état exact. Aide -> A propos de...: Je vous laisse deviner. c/ Interprétation des commandes utilisateur ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le joueur rentre des actions de la forme a/ verbe cible b/ verbe Ce que j'appelle le domaine de visibilité est la page en cours plus tous ses enfants et ce de façon récursive, tant qu'une page n'est pas inactive. Si une page est inactive, elle et ses enfants ne sont pas dans le domaine de visibilité. Dans le cas a/ la cible est recherchée en fonction des mots clés dans le domaine de visibilité. Par contre, si une page a l'instruction toujoursCmd, alors elle sera analysée comme cible même si elle n'est pas visible. Dans le cas b/ la cible est la page en cours forcément. Si la cible n'est pas trouvée, alors la commande est envoyée à la page poubelle si elle existe. L'analyseur de commande est insensible aux majuscules et minuscules, et supprime les accents et articles. Et ensuite, le verbe est remplacé par son synonyme principal si celui-ci existe. Exemple Synonyme:Toucher/palper/effleurer page:Couteau motCle:Couteau/Opinel blocCommande siVerbe:toucher texte:Vous vous coupez le doigt ! Si le joueur tape 'toucher couteau', 'palper opinel' ou 'effleurer le CoUtEaU', le texte sera affiché. d/ Détail du déroulement des blocs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1/ Ouverture du livre 2/ Exécution de tous les blocs initiaux de toutes les pages. 3/ Exécution du bloc affichage de la page de départ. 4/ Attente d'une commande utilisateur. 5/ Recherche de la cible de la commande dans le domaine de visibilité. 6/ Exécution des blocs gestions de toutes les pages actives. 7/ Exécution des blocs affichage des pages dans le domaine de visibilité si cet affichage a été demandé au préalable par une instruction changePage/RetourAff/Affichage. 8/ Retour à l'étape 4/ Remarques: -Le domaine de visibilité peut être changé grace aux commandes toujoursAff & toujoursCmd -Tous les blocs, à l'exception du bloc initial, sont exécuté que si la page est active. e/ Les variables ~~~~~~~~~~~~~~~~~ Les variables sous Livrant sont de deux types:Entier positif et alphanumériques. Pour mémoriser une variable numérique, plusieurs possiblités var:Age:18 var:Endurence:2D6+10 <--Lance deux dés à six faces et ajoute 10 var:Heure:1J+12H+13M <--Heure reçoit 1*1440+12*60+13 Pour mémoriser une variable alphanumérique var:prenom:$Pascale <--Ne pas oublier le $ var:couleur:$Bleu En cas d'oublie du $, la variable reçoit la valeur entière 0. Remarques: -Les variables peuvent librement changer de type durant une histoire. -Les variables numériques sont limités aux entiers positifs. Pour simplifier la chose... -Les variables du style 1J+12H+23M sont en fait des entiers. Cette écriture permet de pouvoir gérer le temps sans se compliquer la vie.