Il vient de sortir en version 2.8.0.
Ses principales caractéristiques sont qu'il est :
- Francisé : vous pouvez créer des jeux d'aventure, ou autre, en langue française ;
- Entièrement libre (gpl v2), contrairement aux ténors des systèmes équivalents (Inform, Tads) ;
- Multiplateforme : Linux, Haiku, MSWindows, Nintendo DS, et il devrait être possible de le compiler sans trop de problème sous Mac OS X et BSD ;
- Interprété : pas besoin de compilation, on peut même éditer son code et tester certaines modifications sans redémarrer le jeu ;
- Jouable en ligne via un interpréteur utilisant Apache et FastCGI, ou bien le serveur web intégré, en transformant la machine en serveur de jeux, ce qui augmente encore les possibilités d'audience puisqu'il suffit d'un navigateur internet pour y accéder. En outre, l'interface web possède des facilites pour le joueur : rose des vents avec les sorties possibles, objets et personnages présents dans les lieux, raccourcis vers certains verbes courants ;
- Livré avec un bon manuel bien complet.
Le système de création reste assez simple, tout en se révélant puissant pour modéliser un monde avec de nombreux paramètres et détails. Par exemple, on peut définir des objets avec une masse, une contenance, et JACL permettra de gérer tout cela si on fait interagir ces objets ensemble par rapport à leur encombrement.
Le développeur principal est très réactif pour faire évoluer son langage, et il reste ouvert à toutes les suggestions. Il a ainsi réalisé de nombreux ajustements pour me permettre de porter les bibliothèques de jeu vers le français.
Une version multi-joueurs est en préparation (dans la branche multiplayer sur le SVN).
Pour l'anecdote, le "WHAT NOW?" du titre fait référence à l'invite de commande de certains des premiers jeux textuels, sortis dans les années 1980.
Aller plus loin
- Code source et versions binaires (21 clics)
- Exemple de jeux en anglais (31 clics)
- Exemple de jeux en français (245 clics)
- Histoire de JACL (8 clics)
# l'exemple de jeu en français
Posté par B16F4RV4RD1N . Évalué à 4.
Le cheminement complet (la solution), se trouve ici, si vous voulez tester :
http://code.google.com/p/jacl/source/browse/trunk/games/fihn(...)
D'autre part, j'ai codé le même jeu, mais cette fois-ci en utilisant le système "concurrent" Inform 7, auquel vous pouvez également jouer en ligne ici :
http://ifiction.free.fr/parchment/parchment.html?story=http:(...)
Le rendu devrait être relativement proche d'une version à l'autre.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: l'exemple de jeu en français
Posté par rewind (Mastodon) . Évalué à 4.
[^] # Re: l'exemple de jeu en français
Posté par B16F4RV4RD1N . Évalué à 3.
http://code.google.com/p/jacl/source/browse/#svn/trunk/guide (livré également dans l'archive à télécharger)
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: l'exemple de jeu en français
Posté par devnewton 🍺 (site web personnel) . Évalué à 3.
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: l'exemple de jeu en français
Posté par fabricius . Évalué à 1.
Moi aussi j'adore tester ce qui est possible dans les jeux textuels. *Parfois* on a des bonnes surprises.
[^] # Re: l'exemple de jeu en français
Posté par zebra3 . Évalué à 3.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: l'exemple de jeu en français
Posté par Tiste . Évalué à 3.
[^] # Re: l'exemple de jeu en français
Posté par zebra3 . Évalué à 2.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: l'exemple de jeu en français
Posté par jihele . Évalué à 6.
[^] # Re: l'exemple de jeu en français
Posté par Kerro . Évalué à 5.
[^] # Re: l'exemple de jeu en français
Posté par zebra3 . Évalué à 4.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: l'exemple de jeu en français
Posté par jraf . Évalué à 1.
# Excellent
Posté par Monsieur Flynn . Évalué à 3.
Mais là, il est carrément fini. Vais aller tester ça moi...
[^] # Re: Excellent
Posté par fabricius . Évalué à 2.
[^] # Re: Excellent
Posté par B16F4RV4RD1N . Évalué à 2.
Pour le commentaire au dessus, on trouve effectivement beaucoup de créateurs de jeux qui souhaitent créer leur propre moteur, mais c'est un travail énorme, d'ailleurs il faut voir que la plupart des systèmes, que cela soit Inform ou Jacl, mettent de longues années avant d'arriver à maturité. En lisant l'histoire de Jacl, on se rend compte à quel point c'est de l'investissement personnel, mais après il y a le plaisir du développment. Si c'est juste pour faire un jeu, autant prendre un système existant...
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
# Et comment est le langage de programmation ?
Posté par gasche . Évalué à 1.
Ce système a-t-il des concepts ou des fonctionnalités spécifiques qui rendent plus faciles et agréables l'écriture des jeux ?
Quelles sont les différences principales avec Inform ?
[^] # Re: Et comment est le langage de programmation ?
Posté par B16F4RV4RD1N . Évalué à 2.
Inform 6 est plus généraliste que JACL (d'après ce que j'ai pu voir), mais les 2 peuvent manipuler des boucles, gérer des exceptions, faire de l'arithmétique...
Un objet avec jacl se construira de cette sorte :
object armoire: armoire cupboard (et autres synonymes)
has CONTAINER FEMALE LOCKED CLOSED CLOSABLE
short une "armoire"
definite l'
long "Une armoire se trouve contre le mur opposé
à l'entrée de la cuisine.^"
quantity 1
capacity 20
mass 120
et pour déverrouiller cette armoire :
{unlock_with_clef
write "Vous déverrouillez l'armoire avec votre clef.^"
ensure armoire hasnt LOCKED
}
Déjà qu'Inform n'est pas très prisé par les programmeurs habitués à du C, d'après les remarques que j'ai pu lire, je pense que cela sera encore pire pour JACL. Mais en tant que système pour créer des jeux textuels, il me semble bien efficace. C'est plus facile de créer de nouveaux verbes rapidement, notamment, et il me semble de plus haut niveau qu'Inform6, et avec plus de fonctionnalités de base (gestion du poids dans l'inventaire par exemple)
Et comme on peut l'interfacer à un serveur web, on peut même imaginer d'autres applications possibles. Bon, c'est pas du ruby on rail, mais par exemple si on veut afficher une page qui appelle des sites internet selon les objets qu'on manipule dans le jeu, on peut écrire ça :
location nest
{+intro
write "You are in a confortable nest, with a big book in front of you, which you can consult about topics or simply randomly read.^You can also search for informations in the tiny screen under your right wing."
}
object book: book screen
object i
player
grammar read random page >wikipedia_random
grammar read book >wikipedia_random
grammar search for $string >google
grammar search $string >google
grammar consult about $string >wikipedia
grammar consult $string >wikipedia
grammar tweet $string >tweet2
{+wikipedia_random
write "You open the book and read:^^<iframe src=~http://en.wikipedia.org/w/index.php?title=Special:Random&(...) width=~99%~ height=~300~>^^"
}
{+wikipedia
write "You open the book and consult for " $string[0] ":^^<iframe src=~http://en.wikipedia.org/w/index.php?title=" $string[0] "&printable=yes~ width=~99%~ height=~300~>^^"
}
{+google
write "You search for " $string[0] "^^<iframe src=~http://www.google.com/search?q="$string[0]"~ width=~99%~ height=~300~>^^"
}
constant title_image "bird.png"
constant footer_image "none"
constant header_colour "#535F38"
constant linkbar_colour "#748768"
constant maintext_colour "#D2DDD0"
#include "verbs.library"
Si vous téléchargez jacl sur le site plus haut, vous copiez ce code dans un fichier test.jacl, et démarrez le serveur avec cgijacl test.jacl et vous pouvez voir le résultat sur http://localhost:8080/
Il y a aussi des comparaisons de code entre ce système et d'autres, en partant sur un jeu similaire, ici :
http://www.firthworks.com/roger/cloak/jacl/index.html
http://www.firthworks.com/roger/cloak/index.html
Pour en revenir à Inform6, certains ont créé un tetris, un jeu d'échec, un jeu d'arcade dans ce langage :
http://wurb.com/if/genre/43
http://ifwiki.org/index.php/ZRacer
(malheureusement on n'a pas le code source)
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: Et comment est le langage de programmation ?
Posté par zebra3 . Évalué à 2.
Y'a pas moyen d'utiliser Python pour ça ?
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Et comment est le langage de programmation ?
Posté par gasche . Évalué à 2.
[PAWS] http://www.firthworks.com/roger/cloak/paws/index.html
J'ai regardé tous les systèmes principaux et secondaires, et Inform 7 est celui qui m'a le plus plu. Les autres ressemblent à des versions mal conçues de langages de programmation déjà existant, avec du sucre syntaxique déjà ajouté par dessus.
Au contraire, Inform 7 a une approche vraiment orignale, basée sur un rapprochement entre le code du système et la langue naturel (ce qui est nettement plus osé que les autres où c'est le joueur qui utilise la langue naturelle, et pas le développeur). Ça a de nombreux défauts (« guess the syntax ») mais c'est une expérience intéressante.
Je suis resté un peu sur ma faim après avoir regardé des descriptions d'Inform 7 (favardin > je l'ai d'ailleurs découvert dans ton tuto), mais il se trouve que mon site préféré au sujet des langages de programmation, Lambda The Ultimate, lui a dédié une [dépêche/discussion], que j'ai trouvé très intéressante.
Inform 7: A relational DSL for interactive fiction with natural language syntax : http://lambda-the-ultimate.org/node/1554
[^] # Re: Et comment est le langage de programmation ?
Posté par B16F4RV4RD1N . Évalué à 2.
Pour en revenir à JACL ou Inform, ils ont aussi l'avantage d'utiliser GLK, qui est une API permettant de simplifier la création d'interpréteurs tiers. Ainsi, une fois le programme codé, si une nouvelle interface GLK vient sur le marché avec beaucoup de fonctionnalités intéressantes, il suffit de l'appeler dans le système de jeu et cela sera normalement compatible. Ainsi il existe une implémentation glk supportant l'unicode (glktermw), une utilisant des fonctions avancées d'affichage de polices (garglk, développé initialement par quelqu'un de chez ghostscript), une très simple affichant juste le strict nécessaire dans une console (cheapglk). Ce qui permet de porter relativement facilement des interpréteurs et leur affichage sur n'importe quelle plateforme compilant du C.
Pour le "guess the syntax" d'Inform 7, c'est un reproche que l'on entend souvent, mais ce n'est pas parce que c'est indiqué comme étant du "langage naturel", car ça se lit comme de l'anglais, que c'est censé comprendre tout le code qu'on lui tape : ce n'est pas un moteur de recherche google, ni un analyseur syntaxique qui va compiler en fonction des lubies du programmeur : bien qu'il existe quelques variantes possible, la syntaxe est relativement stricte. Ainsi si on veut créer un vase dans la cuisine, on ne tapera pas "create a vase in the kitchen", ni "I want a vase in the kitchen" et encore moins "will you put this fuc*** vase in the kitchen, dammit?!", mais "Kitchen is a room. Vase is in kitchen.".
Un exemple tiré du manuel :
"East of the Garden is the Gazebo. Above is the Treehouse. A billiards table is in the Gazebo. On it is a trophy cup. A starting pistol is in the cup."
à partir de ça, Inform comprendra tout ceci :
Garden, Gazebo, Treehouse = un endroit
billiards table = un support
cup = un contenant
starting pistol = une chose
East, up (implied by "above") = des directions
C'est simple, élégant, et assimilable par des gens qui ne sont pas forcément à l'aise avec de la programmation impérative.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
[^] # Re: Et comment est le langage de programmation ?
Posté par gasche . Évalué à 1.
C'est vrai, mais il y a deux "Mais".
Mais, d'une part, une partie des réactions des gens vient visiblement du fait que la syntaxe stricte, sur certains points, est mal spécifiée et n'est pas rigoureusement décrite de façon exhaustive quelque part. On peut considérer que c'est indépendant de la question des langages naturels (d'ailleurs il y a d'autres langages de programmation mal spécifiés et définis), mais le risque c'est que l'aspect "naturel" justement laisse penser qu'il est facile de découvrir soi-même la syntaxe en s'exprimant naturellement, et qu'une spécification rigoureuse n'est donc pas forcément nécessaire.
Mais, d'autre part, le fait d'utiliser un sous-ensemble de la langue naturelle encourage les gens à programmer dans ce langage comme ils parlent dans leur langue naturelle. Comme une langue naturelle est très tolérante (ou plutôt, les interlocuteurs sont très tolérants) à des petits changements qui préservent le sens global de la phrase, on s'attend à ce que ce langage fonctionne de la même façon. Du coup, le programmeur aura un peu plus tendance à se laisser aller, et sera donc plus souvent contrarié par des erreurs.
Je peux présenter ça d'une autre manière : quand on met en avant le rapprochement de la langue naturelle et du langage utilisé pour les programme Inform, on se dit : « c'est chouette, maintenant mes programmes vont être en langue naturelle, donc avec un aspect plus littéraire, plus fluide et agréable à lire, et plus proche de l'interaction qu'ils auront avec l'utilisateur ». C'est le point de vue de la personne qui va lire le code. Maintenant, une personne qui écrit du code, il faut qu'elle continue à se dire « attention, c'est un langage avec une grammaire stricte, il faut que je sois précis et rigoureux, et que j'agence mes mots exactement comme il faut. ». Mais comme la plupart des gens lisent le programme en même temps qu'ils l'écrivent, et ont des boucles d'interaction lecture-écriture-lecture complexes où ce qui est (re)lu influence ce qui va être écrit, la superposition des deux états esprits ne marche pas forcément très bien, et donne lieu à des expériences frustrantes.
[^] # Re: Et comment est le langage de programmation ?
Posté par B16F4RV4RD1N . Évalué à 2.
http://inform7.com/learn/documents/I7_syntax.txt
Ensuite, beaucoup de critiques de la syntaxe sont souvent par des gens qui n'ont jamais réellement codé un jeu complet avec, ou qui étaient en train de débuter, ou qui ont simplement des préjugés (genre c'est pas comme du python ou du C, donc c'est forcément pas aussi bien ou aussi logique). Pour l'avoir utilisé sur plusieurs projets, je peux affirmer (pour mon cas en tout cas), qu'une fois qu'on a bien assimilé la syntaxe, elle ressort facilement lorsqu'on en a besoin, et on ne se dit pas qu'il faut faire attention à tout moment. En plus l'IDE est bien fait, et arrive à détecter les erreurs de syntaxe et proposer la syntaxe correcte par rapport à des cas précis.
Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.