MAVH .IV

Faites ici vos demandes de bêta-test, faites remonter des bogues, ou lancez des nouvelles collaborations et des projets à plusieurs !

MAVH .IV

Messagepar Zero le Dim Jan 01, 2017 4:47 pm

Salut, et BONNE ANNÉE !!!! Plein de bonheur, la santé, et la pêpêche pour ce forum de qualité qu'est IFiction-FR > :D

Adonc. MAVH-II, la revanche du mammifère ongulé artiodactyle et ruminant, autrement dit de la Giraffa camelopardalis, girafe bavarde du nord.

MAVH 1ère mouture étant arrivé à un stade de maturation (juste) suffisant pour être dégusté, il est temps pour moi de migrer vers un nouvel objectif. Voici mon constat. En leur temps, les Livres Dont Vous Êtes Le Héros ont créé une vraie culture, avec ses us et coutumes, dont la plus fameuse est la célèbre proposition « Rendez-vous au 42 ». Je pense qu’il est temps de créer un nouveau mètre étalon. À l’ère du numérique, miser sur un format XML me semble raisonnable. C’est pourquoi je vous propose un brouillon de schéma XML de livre interactif numérique :
Code: Tout sélectionner
<!DOCTYPE IFICTION>
<ifiction>
    <head>
        <author>Zero J</author>
        <title>Mon premier Défi Fantastique</title>
        <genre>Cybermédiéval</genre>
        <price>0</price>
        <license>GPL2</license>
        <publish_date>2016-12-31</publish_date>
        <version>1.02</version>
        <description>
            Super bouquin dont vous êtes le héros !
        </description>
        <changelog>
            <change version="1.01" date="2016-12-31">
                Minotaure amoureux ok
            </change>
        </changelog>
    </head>
    <book>

        <menu>
            <action on="Vérifier le contenu de votre sac à dos">
                montrerInventaire();
            </action>
            <action on="Soigner vos blessures">
                seSoigner();
            </action>
            <action on="Utiliser la Clef d'Or">
                utiliserCleOr();
            </action>
        </menu>

        <page id="Prime">
            <text>
                Vous êtes <v>playername</v>. Bienvenue. <r>Allez au menu !</r>
            </text>
            <react on="Allez au menu !">
                goto("Menu principal");
            </react>
        </page>

        <page id="Menu principal">
            <text>
                <h1>Menu principal</h1>
                <r>Faire ceci...</r>
                <r>Faire cela...</r>
                <r>Retour</r>
            </text>
            <react on="Faire ceci...">
                appendText("Je fais ceci...");
            </react>
            <react on="Faire cela...">
                goto("Faire cela");
            </react>
            <react on="Retour">
                goto("Prime");
            </react>
        </page>

        <page id="Faire cela">
            <text>
                Autre chose.
            </text>
        </page>

    </book>
</ifiction>
Largement self-expliquant, je crois, si vous faites marcher votre imagination. Ça représente assez bien ce que je suis sur le point de faire, et je serais bien sûr très heureux de recevoir vos suggestions, remarques, …etc.

(Notez le DOCTYPE IFICTION du plus bel effet...)

À+
Dernière édition par Zero le Jeu Jan 19, 2017 2:20 pm, édité 1 fois.
Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH-II : La Giraffa camelopardalis contre-attaque

Messagepar Natrium le Dim Jan 01, 2017 10:57 pm

Est-ce que tu connais le traité de Babel ? C'est un standard qui a été créé en 2006 pour unifier les données bibliographiques de FI. La première partie (le <head>) pourrait en tirer partie.

Sinon, es-tu sûr que ça n'a pas été déjà fait ? Ce serait bête de réinventer la roue. Sinon ça peut être une bonne idée.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1007
Inscription: Mar Oct 04, 2011 11:18 pm

Re: MAVH-II : La Giraffa camelopardalis contre-attaque

Messagepar Zero le Lun Jan 02, 2017 10:09 am

Non je ne connaissais pas le Traité de Babel, merci ! Du coup on peut ajouter quelques informations supplémentaires dans le head :

Code: Tout sélectionner
    <!DOCTYPE MULTIPATHFICTION>
    <mpfiction>
        <head>
            <title>Mon premier Défi Fantastique</title>
            <genre>Cybermédiéval</genre>
            <series>Renard Solitaire</series>
            <seriesnumber>1</seriesnumber>
            <author>Zero J</author>
            <contact>
                <author_email>lerenard@gmail.com</author_email>
                <url>http://renard.solitaire.free.fr</url>
            </contact>
            <language>French</language>
            <price>0</price>
            <license>GPL2</license>
            <publish_date>2016-12-31</publish_date>
            <version>1.02</version>
            <description>
                Super bouquin dont vous êtes le héros !
            </description>
            <changelog>
                <change version="1.01" date="2016-12-31">
                    Minotaure amoureux ok
                </change>
            </changelog>
        </head>
        <book>

            <menu>
                <action on="Vérifier le contenu de votre sac à dos">
                    montrerInventaire();
                </action>
                <action on="Soigner vos blessures">
                    seSoigner();
                </action>
                <action on="Utiliser la Clef d'Or">
                    utiliserCleOr();
                </action>
            </menu>

            <page id="Prime">
                <text>
                    Vous êtes <v>playername</v>. Bienvenue. <r>Allez au menu !</r>
                </text>
                <react on="Allez au menu !">
                    goto("Menu principal");
                </react>
            </page>

            <page id="Menu principal">
                <text>
                    <h1>Menu principal</h1>
                    <r>Faire ceci...</r>
                    <r>Faire cela...</r>
                    <r>Retour</r>
                </text>
                <react on="Faire ceci...">
                    appendText("Je fais ceci...");
                </react>
                <react on="Faire cela...">
                    goto("Faire cela");
                </react>
                <react on="Retour">
                    goto("Prime");
                </react>
            </page>

            <page id="Faire cela">
                <text>
                    Autre chose.
                </text>
            </page>

        </book>
    </mpfiction>

J'ai aussi remplacé "ifiction" par "mpfiction", parce que je me suis rendu compte que ifiction était plus large, et englobait aussi les jeux comme Orphée par exemple, où l'on tape les commandes au clavier. MultipathFiction est plus proche de ce que j'ai en tête : une simple fiction à embranchements multiples.

Il y a déjà un format existant : QML. Mais il me semble moins puissant puisqu'il ne donne pas accès au Javascript du navigateur, et moins élégant, avec ses <choice station="Message suivant">grosses balises</choice> en plein milieu du texte. Ca mélange la vue et le contrôle, je trouve pas ça propre. En fait le plus gros défaut de QML c'est surtout d'exister déjà : c'est beaucoup moins drôle de l'utiliser que de fabriquer soit même un tel langage. Il y en a peut-être d'autres.

Je vais aller en parler aussi sur le forum Rendez-vous au 1.
Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH-II : La Giraffa camelopardalis contre-attaque

Messagepar Otto Grimwald le Mar Jan 03, 2017 1:08 pm

bravo pour ton travail et ton enthousiasme. Je ne suis pas fan du xml (même si c'est moins pire que du binaire), à la rigueur ça peut passer s'il y a un IDE en face qui en tire partie et évite de se taper toutes les balises à la main. À mon avis, pour ce que tu vises, un fichier texte simple serait plus adapté, et plus lisible pour tes utilisateurs, même avec une petite syntaxe minimale

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3015
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: MAVH-II : La Giraffa camelopardalis contre-attaque

Messagepar Zero le Jeu Jan 05, 2017 10:16 am

Merci beaucoup, ça fait chaud au coeur.

Du coup j'ai créé une syntaxe dérivée du bbcode, avec un traducteur vers xml :

Code: Tout sélectionner
mavhcode


[b|bolded text]

[i|italicized text]

[u|underlined text]

[s|strikethrough text]

[left|left-aligned text]

[center|centered text]

[justify|justified text]

[right|right-aligned text]

[url|http://wikipedia.org]

[url=http://wikipedia.org|Wikipedia]

[img|http://pix.com/01.jpg]

[font=Courier|monospaced text]

[size=15px|large text]

[h1|heading 1]

[color=#ff0000|red text]

[list|
    [-|item 1]
    [-|item 2]
]

[table|
    [tr|
        [td|cell 11]
        [td|cell 21]
    ]
    [tr|
        [td|cell 12]
        [td|cell 22]
    ]
]

[style=...css...|styled text]

[class=...class...|span-classed text]

[r|reactive text]

[r=1|reactive text with shortcut]

[go|direct link]

[go=2|direct link with shortcut]

[v|variable insertion]

[|comment]




€ action menu item > js code

# page id

page text content

@ reactive text > js code

@ 1 > js code

@ direct link = page id

@ 2 = page id

Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH .IV

Messagepar Zero le Jeu Jan 19, 2017 2:31 pm

Salut !

Alors je suis maintenant sur la version MAVH .IV ! (oui le 3 était un navet, même pas sorti en salle)

Pour l'instant j'ai fait un travail sur l'interface (visible sur http://mavh.free.fr). L'idée c'est d'avoir des "espaces" qu'on peut disposer librement sur une surface. On peut imaginer par exemple un espace pour l'histoire, un autre pour l'équipement, ...etc. Un peu comme une feuille d'aventure si vous voulez. A terme il y aura plusieurs surfaces, et le joueur pourra passer de l'une à l'autre d'un simple clic.

Après, l'idée c'est d'en faire une petite plateforme multijoueur peer2peer. Vous connaissez le principe du MOBA : League of Legends, DOTA... J'imagine un MOBA textuel ! Une arène dans laquelle des joueurs peuvent s'affronter en ligne, dans un jeu au tour par tour. Avec une petite goutte de jeux de cartes façon Magic The Gathering. Mais le tout dans un environnement textuel à liens cliquables, comme un Livre Dont Vous Etes Le Héros, mais multijoueur.

Bref. Ca bosse !

Hop, un brouillon de code :
Code: Tout sélectionner

Modèle d'espace :

  # Titre | Phrase d'appel
  Corps de texte
  @ Déclencheur > Action
  & Menu



Modèle de menu :

  € Intitulé
  & Sous-menu
  @ Déclencheur > Action



Définition de routine :

  % Phrase d'appel
  Corps de proccédure



Actions :

  a est b.
  a augmente de b.
  a diminue de b.
  a fait partie de b.
  a ne fait plus partie de b.
  on peut dire que a.
  on ne peut plus dire que a.
  si a : b.
  si a : b ; sinon : c.
  a n'existe plus.
  a correspond à b.
  a ne correspond plus à b.
  dans a s'ajoute b.

  il y a une surface a.
  il n'y a plus de surface a.

  l'espace a est visible dans la surface b.
  l'espace a n'est visible que dans la surface b.
  l'espace a est invisible.
  l'espace a est visible dans toutes les surfaces.



Conditions :

  a est b
  a n'est pas b
  a est plus que b
  a est moins que b
  a fait partie de b
  a ne fait pas partie de b
  a existe

  il y a une surface a
  il n'y a pas de surface a
  il y a un espace a
  il n'y a pas d'espace a
  a est visible dans b
  a est visible dans une surface
  a est invisible
  a est visible dans toutes les surfaces

Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH .IV

Messagepar Otto Grimwald le Jeu Jan 19, 2017 4:27 pm

C'est très intéressant tout ça...
Tu pourrais mettre une "vraie" aventure dans une des fenêtres ? Parce que là ça change radicalement depuis l'autre interface.

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3015
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: MAVH .IV

Messagepar Zero le Jeu Jan 19, 2017 6:20 pm

Me demandes-tu si à terme on pourra mettre une histoire dans une des fenêtres, ou si je pourrais en mettre une maintenant pour voir l'effet que ça fait ?
Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH .IV

Messagepar Otto Grimwald le Ven Jan 20, 2017 8:31 am

C'était juste que je ne savais pas si c'était un réécriture complète ou bien une nouvelle extension. Mais prends ton temps ;)

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3015
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: MAVH .IV

Messagepar Zero le Sam Jan 21, 2017 4:18 pm

Bonjour,



D'accord, je n'avais pas compris. Oui c'est une réécriture complète, mais j'ai du mal à choisir un "scope", un domaine d'utilité pour ce moteur. J'ai toujours tendance à me laisser envahir par une douce folie des grandeurs. La bonne nouvelle, c'est que j'en suis conscient, donc je peux corriger le tir.

C'est un moteur de jeu, donc ça passe forcément par un langage de programmation ou de définition du jeu (ça tombe bien, c'est justement ce qui me fait frétiller). En choisissant d'utiliser un langage très proche du langage naturel, je m'oriente vers (ou je rend accessible ce moteur à) un public pas ou peu à l'aise avec la programmation. Voilà un point. Un autre point, qui tire le projet dans une direction opposée, c'est le désir de proposer un langage puissant, de le concevoir. Un troisième point c'est la tentation de faire de MAVH un outil généraliste, dont on peut se servir d'organiseur par exemple. Ou autre chose. Il y a donc beaucoup de forces en jeu, de désirs contradictoires, et un peu d'arrogance aussi. Il faut que j'arrive à proposer quelque chose qui soit à la fois humble et smart.

Autre chose qui me trotte en tête aussi, c'est que si je fais un langage très simple, les utilisateurs vont (et c'est normal) pousser le langage dans ses derniers retranchements, le pousser au maximum de ses possibilités pour lui faire faire des choses pour lesquelles il n'était pas prévu à l'origine. Face à cela, je pense qu'il faut que le moteur repose sur des fondations conceptuelles solides et claires. Et c'est un vrai défi.



Techniquement, voici 3 choses que j'aime.

- Avoir de petites unités appelées "objets", qui encapsulent des informations et des comportements, et qui communiquent, me semble intéressant. J'aime particulièrement la structure publish/subscribe. Comme twitter en un sens : un objet peut "suivre" d'autres objets, et émettre des messages. Quand un objet émet un message, tous les objets qui le suivent reçoivent ce message. La réception de messages déclenche des comportements.

- J'aime aussi le string-rewriting. Si vous cherchez Thue, vous tomberez notamment sur un langage ésotérique appelé "Thue", qui est Turing-complet, et qui ne fonctionne que par remplacement de sections de chaînes de caractères. C'est juste génial. Alors pris tout seul, c'est assez peu pratique, mais ça peut venir en complément, comme un léger système de macro.

- Un petit dernier : j'aime bien l'idée d'énoncer des vérités, d'avoir des règles, et de pouvoir automatiser les déductions en fonction des vérités énoncées et des règles disponibles. Là c'est une petite goutte de prolog, ou plutôt de datalog (je n'aime pas l'idée que prolog puisse si facilement tourner en boucle infinie). Cela fonctionnerait plutôt par patterns : s'il est vrai que <X> est parent de <Y>, et que <X> est une femme :cela implique que <X> est la mère de <Y>. Mais attention aux boucles infinies.



Voilà dans quoi j'évolue en ce moment !

Code: Tout sélectionner
MAVH .IV Code

basic
    <variable> est <valeur>
    <variable> augmente de <nombre>
    <variable> diminue de <nombre>
    si <conditions> : <actions>
    si <conditions> : <actions> ; sinon : <actions>
    <valeur> fait partie de <liste>
    <valeur> ne fait plus partie de <liste>
    au hasard : <actions>

pubsub
    <message>
    <agent> est observé
    <agent> n'est plus observé

thue
    <texte> correspond à <texte>
    <texte> ne correspond plus à <texte>

rulez
    il est vrai que <assertion>
    il est faux que <assertion>
    s'il est vrai que <assertions> : cela implique que <assertions>
    s'il est vrai que <assertions> : cela n'implique plus que <assertions>

react
    quand <événements> : <actions>
    quand <événements> : il ne se passe rien
    en cas d'erreur : <actions>

Zero
Investigateur débutant
 
Messages: 43
Inscription: Dim Nov 13, 2016 2:44 pm

Re: MAVH .IV

Messagepar Otto Grimwald le Dim Jan 22, 2017 9:55 pm

Tiens, prolog... on avait étudié ça à la fac, j'en garde de bons souvenirs. (c'était sur des machines équipées de mac os 9...)

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3015
Inscription: Mar Aoû 24, 2004 12:02 pm


Retourner vers Bêta-tests et créations communes

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité