Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: Star Trek: Glorious Wolf - (...) / Sorties: Dread Mac Farlane - episode 3 / News: Plein d'images cools créées par (...) / Sorties: Star Trek: Glorious Wolf - (...) / Jeux: Final Fantasy 2.0 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

437 connectés actuellement

29184834 visiteurs
depuis l'ouverture

5099 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Fusion

Kingdom Ultimate

Leo-Games

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Jeux en développement > [Interpréteur]Herobook


Hellper - posté le 21/04/2014 à 23:33:28 (5402 messages postés)

❤ 0

Tonton Hellper

I. Description
Version 1.1
Poids de l'archive : 8ko
Herobook est un interpréteur codé en python permettant de créer facilement un livre à embranchement sous forme numérique. Il est basé un système de pages et une syntaxe simple, gère la mise en forme et détecte automatiquement si un choix mène vers une page inexistante.
La version actuelle utilise la console, mais les versions futures devraient inclure une GUI et de fait plus de possibilités.

HeroBook est normalement compatible avec Windows, GNU/Linux et Mac. Cependant, n'ayant pas de quoi tester sur un autre support que Windows il est possible de rencontrer des bugs inattendus sur d'autres plateformes. Merci de me le signaler le cas échéant.

Voici un screenshot réalisé à partir d'un projet test :
image

II. Installation
Lien du programme
L'archives contient deux versions du programme, une première avec un template et une seconde avec un projet test (dont sont tirés les screnshots.
Le python étant un langage interprété il vous faudra installer la bibliothèque python :
Si vous êtes sur windows
Si vous êtes sur mac
Si vous êtes sur linux
Si vous êtes assez grand pour chercher vous-même

III. Utilisation
Voici un tutoriel écrit :

Spoiler (cliquez pour afficher)



IV. Code source

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- coding: utf8 -*-
import HellStuff
##################################################################
##Création des fonctions
##################################################################
##Charge un fichier .txt et le retourne sous forme d'une liste (en utilisant les / comme séparation)
def load(a) :
    a += ".txt"
    ofi = open(a, "r")
    return ofi.read().split("/")
##Met en forme le texte à afficher pour éviter les retours à la ligne au milieu d'un mot
def afficher(a) :
    a = a.split("_")
    for b in a :
        HellStuff.autoRN(b)
        c = input(i[0])
##Pour savoir si la page poitée existe
def exist(a) :
    a += ".txt"
    try :
        ofi = open(a, "r")
        return ("", True)
    except :
        return (i[5], False)
##Affiche des choix disponibles
def choice(a) :
    b = 1
    print("0. " + i[1])
    for c in a :
        c = c.split("§")
        print (str(b) + ". " + c[0] + "   " + exist(c[1])[0])
        b += 1
##Demande de rentrer un entier entre deux points
def intOnlyBetween(mini, maxi) :
    a = False
    c = mini - 1
    while not a or c < mini or c > maxi :
        try :
            print (i[2])
            b = input()
            c = int(b)
            a = True
        except :
            pass
        if not a :
            print (i[3].format(mini, maxi))
        elif c < mini or c > maxi :
                print (i[3].format(mini, maxi))
                a = False
    return b
##################################################################
##Code du jeu
##################################################################
global i
i = load("vocab")
b = "MainPage"
while True :
    room = load(b)
    choix = room[1].split("_")
    afficher(room[0])
    choice(choix)
    c = int(intOnlyBetween(0, len(choix)))
    if c == 0 :
        break
    d = choix[c-1].split("§")
    if not exist(d[1])[1] :
        print (i[4])
    else :
        b = d[1]
 



La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


FalconPilot - posté le 22/04/2014 à 00:00:42 (482 messages postés)

❤ 0

Tu dois vivre, mon fils

Hellper, tu es mon héros <3

Voici venu le temps des Félons.


Hellper - posté le 22/04/2014 à 00:10:40 (5402 messages postés)

❤ 0

Tonton Hellper

C'est pas grand chose :F
D'ailleurs j'ai rajouté le code source dans la première page ainsi que le poids de l'archive (5 ko) dans les informations.

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Grim - posté le 22/04/2014 à 09:31:03 (251 messages postés)

❤ 0

C'est très sympa, j'avais codé quelque chose de similaire, m'inspirant de Inform ! Si je retrouve le code je le placerai sur mon Github !

http://funkywork.github.io/


mtarzaim - posté le 22/04/2014 à 10:56:18 (2926 messages postés)

❤ 0

Anaxagoras -500 BC

Le code est génial de simplicité et de concision. Difficile de faire plus léger.

En revanche, en dehors du challenge perso, je ne vois pas trop l'intérêt de choisir cette solution plutôt que celle d'un vrai livre numérique.

Un livre numérique n'est ni plus ni moins qu'un site web avec des liens hypertextes, des images et parfois du multimédia. Le tout encapsulé dans un ePub ou un .mobi. Vu le pléthore de solutions wysiwyg en html, il est plus simple de réaliser ses "herobook" avec ces derniers, (ex : BlueGriffon), que de passer par un interpréteur de commande en natif.
On a ainsi un livre numérique interactif, avec mise en page, musiques et vidéo, compatible avec tout navigateur et liseuse, à partir d'un seul projet...

Projets terminés : DIX Life Precious - TheFrogStudio.Net


Grim - posté le 22/04/2014 à 11:08:19 (251 messages postés)

❤ 0

Citation:

Le code est génial de simplicité et de concision. Difficile de faire plus léger.


Justement, de mon point de vue, cet excès de simplicité reproduit un problème (qui à déjà été cité sur Oniromancie, d'un point de vue historique, sur le cryptage ou non de la démo) du livre dont nous somme le héros. L'accès au contenu.
Je pense qu'en complexifiant légèrement le code et en sérialisant la nouvelle interactive (évidemment désérialisable mais bon...) tu gagneras en offrant aux utilisateur des données compacts et facilement partageables.
Par curiosité, pourquoi ne pas avoir implémenté un Objet qui sauvegarderait l'état du jeu en attribut (et qui permettrait de sauvegarder son avancée?)
Je ne comprend pas l'intérêt du while not a :/ car a ne semble pas être changé dans la boucle d'interaction. (et il me semble qu'un while True suffirait, mais je n'ai jamais fait de python, donc je ne sais pas trop :D)

Citation:

En revanche, en dehors du challenge perso, je ne vois pas trop l'intérêt de choisir cette solution plutôt que celle d'un vrai livre numérique.


Ca me semble être une raison suffisante ;) mais ça peut aussi être dans l'objectif de proposer un logiciel libre, destiné à évoluer, proposant un format ouvert et développé aux petits oignons pour correspondre parfaitement à une envie :D

http://funkywork.github.io/


Hellper - posté le 22/04/2014 à 11:44:11 (5402 messages postés)

❤ 0

Tonton Hellper

Merci pour vos réponses.

mtarzaim a dit:


En revanche, en dehors du challenge perso, je ne vois pas trop l'intérêt de choisir cette solution plutôt que celle d'un vrai livre numérique.


Tout simplement car je ne m'y connais pas du tout en livre numérique. D'ailleurs j'en profite pour le demander, mais c'est du en ligne ?
Un autre raison est que j'aimerais développer un moteur de jeu textuel assez avancé et que c'est un bon exercice pour aller dans cette direction :)

Citation:

Je pense qu'en complexifiant légèrement le code et en sérialisant la nouvelle interactive (évidemment désérialisable mais bon...) tu gagneras en offrant aux utilisateur des données compacts et facilement partageables.


Pourrais-tu développer s'il te plait ?

Citation:

Par curiosité, pourquoi ne pas avoir implémenté un Objet qui sauvegarderait l'état du jeu en attribut (et qui permettrait de sauvegarder son avancée?)


C'est prévu mais je ne l'ai pas encore fait car son implémentation rajoute au programme un système dispensable et car je ne le conçoit pas comme une priorité.

Citation:

Je ne comprend pas l'intérêt du while not a :/ car a ne semble pas être changé dans la boucle d'interaction. (et il me semble qu'un while True suffirait, mais je n'ai jamais fait de python, donc je ne sais pas trop :D)


Tout simplement car je n'y avais pas pensé ;)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Grim - posté le 22/04/2014 à 12:26:36 (251 messages postés)

❤ 0

Ce que je veux dire c'est qu'actuellement, tu représentes tes pages par des fichiers, si je ne me trompe pas, tu pourrais représenter tes pages par des Objets. Et tu sauvegarderais la collection de page dans un objet liste que tu sérialiserais. Les gens pourraient, pour peu qu'un utilisateur dispose de ton interpreteur, proposer des nouvelles interactive au moyen d'un seul fichier (qui serait en fait une collection de pages). Il faudrait donc revoir un peu ton outil

(Compilateur -> fichier compilé) -> intrepreteur

http://funkywork.github.io/


mtarzaim - posté le 22/04/2014 à 16:10:37 (2926 messages postés)

❤ 0

Anaxagoras -500 BC

Hellper a dit:


Tout simplement car je ne m'y connais pas du tout en livre numérique. D'ailleurs j'en profite pour le demander, mais c'est du en ligne ?


Ben, c'est un ensemble de pages html. Voire une seule avec des markeurs "saut de pages" (pour séparer les couvertures et sommaire du reste) et des liens hypertextes (pour les annotations et le sommaire).

Avec BlueGriffon, je crée une page html, qui enchaines les différents éléments du livre (couverture, mentions légales, sommaire, avant-propos, le texte, etc.). Ensuite, je colle les différents liens avec des balises html classiques. Et ensuite, je n'ai plus que la passer à la moulinette du l'outil KDP (Kindle Publishing) pour avoir un eBook. Je peux ensuite le reconvertir en ce que je veux avec Calibre.

Bref, à moins que ton système soit crossplatform, gère le multimédia, et soit gratuit, ben, il ne va intéresser grand monde ...

Projets terminés : DIX Life Precious - TheFrogStudio.Net


Hellper - posté le 22/04/2014 à 16:22:16 (5402 messages postés)

❤ 0

Tonton Hellper

mtarzaim a dit:

Bref, à moins que ton système soit crossplatform, gère le multimédia, et soit gratuit, ben, il ne va intéresser grand monde ...



Niveau compatibilité si j'en réfère à wikipedia :

Citation:

Le langage Python [...] fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix en passant par GNU/Linux, Mac OS, ou encore Android, iOS, et aussi avec Java ou encore .NET.


Au passage, un fois l'interpréteur terminé je compte travailler sur un éditeur. À ce moment là il me sera tout à fait possible d'exporter un projet sous une autre forme telle que l'html.

Niveau gestion des médias ce n'est pas ma priorité puisque le programme a été pensé pour utiliser la console système (dont je suis particulièrement friand), mais ça peut être quelque chose à ajouter plus tard.

Niveau gratuité c'est simple. Le logiciel est gratuit, libre et open source (chaque fichier .py pouvant être aisément lu par n'importe quel éditeur de texte) :)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Grim - posté le 22/04/2014 à 16:53:33 (251 messages postés)

❤ 0

Et dans le pire des cas, est-ce bien grave s'il n'intéresse pas beaucoup de monde ? Je suis de ceux qui aiment les alternatives et ça me fait plaisir d'en voir des libres voir le jours... La quête de la reconnaissance absolue, est désolant, je trouve ...

http://funkywork.github.io/


mtarzaim - posté le 22/04/2014 à 17:12:39 (2926 messages postés)

❤ 0

Anaxagoras -500 BC

Grim a dit:


Et dans le pire des cas, est-ce bien grave s'il n'intéresse pas beaucoup de monde ? Je suis de ceux qui aiment les alternatives et ça me fait plaisir d'en voir des libres voir le jours... La quête de la reconnaissance absolue, est désolant, je trouve ...


J'applique mon principe de base : pourquoi faire ce qui existe déjà en mieux ?
En dehors de l'aspect challenge, on peut utiliser son temps sur un autre projet plus rentable question investissement personnel.

C'est pas pour dire que c'est un projet de daube, juste que le besoin est (j'ai l'impression) déjà couvert par d'autres solutions plus avancées.

Projets terminés : DIX Life Precious - TheFrogStudio.Net


Grim - posté le 22/04/2014 à 17:25:32 (251 messages postés)

❤ 0

Parce que le savoir est comme une immense construction et qu'il faut des fondations fiables pour évoluer ... et donc qu'il n y a rien de ridicule à présenter quelque chose de déjà fait (sans être spécialement dans une démarche de challenge mais juste d'apprentissage).
Mais aussi parce que c'est la possibilité d'avoir des alternatives qui fait que les choses évoluent. Unix était un environnement trop cher, heureusement que Gnu, puis Linux ont "réinventé la roue" pour offrir une alternative. Il existe une multitude d'outils qui se recoupent mais qui permettent aux gens qui les conçoivent d'évoluer mais aussi de faire évoluer l'offre.

http://funkywork.github.io/


FalconPilot - posté le 22/04/2014 à 17:29:27 (482 messages postés)

❤ 0

Tu dois vivre, mon fils

Étrangement, en ayant cherché énormément de solutions pour les Hero Book, les véritables "éditeurs" spécialisés sont rarissimes. Il y avait bien Google Breadcrumb, aujourd'hui terminé, et maintenant, en dehors de le faire intégralement en HTML (ce qui est une solution cool mais que je trouve légèrement "bourrine" à moins de s'intéresser au CSS), il y en a quelques uns. Inklewriter, mais qui semble juste avoir l'esthétique d'un menu SMS sur un Iphone. Il y a aussi Twine, qui a beaucoup d'avantages : gestion de variables, de conditions, etc... Ça permet énormément de choses, mais le logiciel lui-même est très loin d'être au point.

En bref, faut voir ce que donne le p'tit interpréteur d'Hellper, parce que ça pourrait devenir un autre logiciel intéressant du genre s'il accepte le multimédia.

Voici venu le temps des Félons.


Hellper - posté le 22/04/2014 à 18:11:06 (5402 messages postés)

❤ 0

Tonton Hellper

En tout cas c'est pas demain que vous verrez la gestion de contenu multimédia puisque je n'ai pas du tout les compétences pour le faire  XD
En tout cas je viens de rajouter une petite méthode pour éviter que la console affiche les textes en découpant des mots de temps à autres.

Avant
image
Après
image

Au passage cette méthode est basée sur le principe que la largeur de la console (en nombre de caractères) est constante. Du coup il faudrait que des personnes testent le programme pour valider/infirmer ce principe.

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


FalconPilot - posté le 22/04/2014 à 21:48:15 (482 messages postés)

❤ 0

Tu dois vivre, mon fils

"Vous plogez la main"

Ah ah ah >:)

Voici venu le temps des Félons.


Hellper - posté le 22/04/2014 à 21:52:59 (5402 messages postés)

❤ 0

Tonton Hellper

Ça a été écrit à la va vite :p

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


GeckoEssence - posté le 23/04/2014 à 01:19:58 (10274 messages postés)

❤ 0

C'est super ce truc ! Si j'ai le temps je m'y attarderai, histoire de faire un petit retour.


Mr Drerrawyn - posté le 23/04/2014 à 19:00:14 (1694 messages postés)

❤ 0

Le

Tiens, mais ça me rappelle un truc ça :D ça date de Février non ? Tu l'avais commencé en live il me semble :)
J'ai justement codé un truc similaire en C++ la semaine dernière, faudra que je t'en parle, vu que j'ai eu deux-trois idées qui me semblent intéressantes :)


Hellper - posté le 23/04/2014 à 19:33:18 (5402 messages postés)

❤ 0

Tonton Hellper

Je vois que tu te souviens de ma tentative de RPG textuel :)
En fait ce n'ai pas le même projet, mais une version simplifiée puisque ici le panel d'actions se limite à entrer une valeur. D'ailleurs je viens de rouvrir ce projet de RPG et il y a des choses qu'il faudra à tout prix reprendre xD
Si tu as des idées je suis toute ouïe :)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Mr Drerrawyn - posté le 23/04/2014 à 21:35:25 (1694 messages postés)

❤ 0

Le

Bah, déjà, tu le feras en live, parce que ce week-end marquera le début de mes vacances :p

J'aurai sûrement des idées en temps voulu :)

Ce que j'ai différemment traité:

Spoiler (cliquez pour afficher)



J'ai trouvé ça plus user-friendly et surtout pour une longue aventure, on a pas un fichier compliqué (et le pire c'est s'il est trop gros pour être édité efficacement), pour l'organisation j'ai trouvé ça pas mal :)


Hellper - posté le 07/06/2014 à 16:51:03 (5402 messages postés)

❤ 0

Tonton Hellper

HeroBook passe en version 1.1 o/
Il est maintenant possible de modifier les instruction du jeu à partir du fichier vocab.txt, ce qui facilite la traduction.
Le code source a été mis à jour.

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


RadicalProgrammerGuy - posté le 07/06/2014 à 17:58:14 (82 messages postés)

❤ 0

J'en sais rien j'sais pas lire

Waw ! super bien fait ! C'est marrant, ça me rappelle les "Livres dont vous êtes le héros" qui sortaient dans les années 1980...


François Berhn - posté le 06/07/2019 à 12:57:07 (5402 messages postés)

❤ 0

Tonton Hellper

Mise à jour

Hop ! J'offre à ce topic une remontée fulgurante du fait que depuis le temps j'avais continué à bosser sur le projet et il en est sorties plusieurs choses :


Herobook Simple Version

En fait, plutôt que de me contenter d'un interpréteur dans un seul langage, j'ai décidé de faire plusieurs interpréteurs, dans plusieurs langages ! Simple Version est la version la plus simple ainsi qu'une adaptation du concept initial. Le programme charge une liste de pages sous la forme d'un fichier json et les met en forme pour que le joueur puisse naviguer facilement entre les pages.

Il est aussi possible, en plus de la console initialement programmée, de convertir le projet en une architecture de fichiers html, ce qui permet d'avoir un format plus séduisant avec l'utilisation de css. Voyez vous-même :
Format console : image
Format html : image


Téléchargement

Pour télécharger vous pouvez vous rendre sur la page itch.io du projet. Vous trouverez alors :

- Un executable de la version console (pour windows)
- Un Jar de la version console (pour windows, linux et mac)
- Une archive zip contenant un template d'histoire
- Un Jar de convertisseur en HTML (pour windows, linux et mac)

En plus, il est fourni sur la page un article (en anglais) détaillant le procédé d'écriture d'une histoire à cette adresse


Herobook Advanced Version

Cette version est en cours de développement et devrais permettre de progresser dans l'histoire avec des commandes comme open door ou take key. Ce qui est plus complexe à gérer mais c'est ce qui est intéressant donc stay tuned :D


Conclusion
Si vous avez des question n'hésitez pas :)

La liste des raisons pour lesquelles le making se meurt, la cinquième va vous étoner | Des projets abandonnés, source d'inspiration :D | Mes jeux


Verehn - posté le 06/07/2019 à 14:03:37 (9054 messages postés) - honor

❤ 0

Vhehrhehn

Citation:

Herobook Advanced Version

Cette version est en cours de développement et devrais permettre de progresser dans l'histoire avec des commandes comme open door ou take key.

Pour "take key" je comprends ce que ça a de différent d'un "continuer sur telle page" vu que ça gère un inventaire, et que ça demanderait beaucoup trop de pages clonées de le faire en mode bourrin.
Qu'en est-il de "open door", en quoi ça s'éloigne d'un simple "avancez page 120" ?

Eldrao ~ PakuPaku ~ Winged Light ~ Ruin ~ Ma galerie ~ LTDAD ~ Don de graphismes plateforme 2D

Index du forum > Jeux en développement > [Interpréteur]Herobook

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers