Tool for writing and generating interactive books, also known as gamebooks.
A gamebook is a work of printed fiction that allows the reader to participate in the story by making choices. Gamebooks have been influenced by Choose Your Own Adventure Series and tabletop role-playing games.
Production of new gamebooks in the West decreased dramatically during the nineties as choice based stories have moved away from print based media, although the format may be getting a new lease of life on mobile and ebook platforms. Such digital gamebooks are considered interactive fiction.
Note for Windows: It is easier to install this dependencies and run Readteractive with a linux-like shell like Cygwin.
apt-get install build-essential
brew install make
apt-get install librsvg2-bin
brew install librsvg
A yeoman generator for scaffolding Readteractive books.
We provide a command line interface to easily generate your project doing scaffolding, so you don't need to remember the syntax of each file and you can just focus on writing.
The Readteractive structure and files can be automatically generated using this CLI for your custom book.
It also provides a tool for visualization of your book with current chapters and the links between them, so you can have a general overview of the narrative branches of your book.
In the top folder there are the required files for building your books and configure dependencies. Please, do not edit or move this files to another folder or build will fail.
. ├── .git ├── .gitignore ├── book.py ├── chapter.py ├── get_property.py ├── process_book.py ├── pandoc-html.css ├── makefile ├── LICENSE ├── README.md
Every book and chapter you generate needs to match the following structure:
. ├── book-example/ │ └── _meta.yml │ └── first_chapter/ │ ├── first_chapter.md │ └── first_chapter.yml │ └── second_chapter/ │ ├── image.png │ ├── second_chapter.md │ └── second_chapter.yml ├── cover.png ├── stylesheet.css
This structure and files can be automatically generated using our CLI for your custom book.
.yml files is based on YAML.
.md files is based on Markdown.
stylesheet.css file is based on CSS, but this is optional as explained later.
title: Example _gamebook_ author: - First Author - Second Author start: first_chapter language: es cover-image: cover.png stylesheet: stylesheet.css description: | This is the description of your book. Hope you enjoy writting with Readteractive.
title: Example _chapter_
You can use Markdown here using
The text of your chapter. You can use Markdown here.
It is true that a gamebook does not have a strict order for chapters because users can jump from one to another according to the options they decide to follow, but sometimes is more elegant to have chapters sorted by narrative branch or other order you decide.
Once book is built, the first chapter shown will be the chapter specified in
_meta.yml (if provided). The following chapters are shown in alphabetical order, but you can define your own order giving a numerical prefix to chapter identifiers like in this example:
. ├── book-example/ │ └── _meta.yml │ └── 0-before/ │ ├── 0-before.md │ └── 0-before.yml │ └── 1-after/ │ ├── image.png │ ├── 1-after.md │ └── 1-after.yml
In this example, assuming that no
start is set inside
_meta.yml, the first chapter to show up will be
0-before, followed by
If you have all dependencies installed is as easy as executing one command:
This will ensure your book and chapters structure is right, check for broken links between chapters and then pack and build your book in different formats:
The PDF version use LaTeX to get a high-quality typography.
Each chapter will generate a header in the table of contents of the PDF, EPUB and MOBI metadata, and each option will have a clickable link that jumps to the next chapter page.
The HTML version is more dynamic. It only shows the current chapter you have followed with a click on a link so story proceeds more interactively over the book. It also works offline (is self-contained).
If you want to keep available all visited chapters doing scroll you can set the variable
make html BOOK=book-example SCROLL=yes
The MOBI version is useful for Kindle devices.
Furthermore, you can build only the desired format:
make html BOOK=book-example make pdf BOOK=book-example make epub BOOK=book-example make mobi BOOK=book-example
If you are going to print your book then you should be asking about chapter and page references, because links does not work in paper. You are right. If you do so you will need to have chapter order defined as explained in Chapters Order. Then, you can build your book using the variable
make BOOK=book-example PRINTED=yes
This will add the chapter order on each section and all link references will have that number after the option text. Then you can go to the last page where the Table of Contents is located and follow the page of the referenced chapter.
Building your book is even easier with our CLI wizard:
Built files are saved in your book folder:
. ├── book-example/ │ └── book-example.html │ └── book-example.pdf │ └── book-example.epub │ └── book-example.mobi
A gamebook has many chapters with links between them. We refer to a chapter as a step with description in one of your narrative branches.
If you have no previous experience writing gamebooks these are some tips:
Each chapter can link to a many different chapters using the following syntax:
(Text -> [next])
Text with your custom option text. Replace
next with the chapter id which this link is pointing to.
Readteractive will generate a link to the chapter on your book for every reference following this syntax.
You can use Markdown in
You can skip the chapter prefix defined for custom order at the moment of writing an option in
(Go to after -> [after])
This option has the same effect than
(Go to after -> [1-after]) and
(Go to after -> [1_after]). This prefix skipping only works for digits followed by - or _.
You can use Markdown syntax for styling your chapters. This README file is written entirely in Markdown.
Markdown is simpler than HTML, but if you need to use it, Markdown supports HTML tags.
The example chapter
start.md provides very useful examples using Markdown.
In order to improve your writting even more you can use a Markdown highlight editor. There are many Markdown editors, some are online like this or this, and other are desktop applications like Typeora. Code editors like Atom or Sublime Text have markdown plugins too (Atom package, Sublime Text 3 package).
If you know CSS you can customize the style of the book even more than with markdown and HTML.
For custom CSS of the HTML version edit the file
pandoc-html.css at the top folder.
With EPUB and MOBI (e-book versions) you can optionally specify a
stylesheet.css for your e-book in the
_meta.yml file to have custom styles such font family or size.
If no stylesheet is provided then this one is used by default.
This option is not available for PDF because LaTeX is used
Although CSS is not available for PDF version because its style is set by LaTeX you can change margins and page breaks.
You can edit margin size in centimeters (
cm) or inches (
in) for PDF files setting the variable
make pdf BOOK=book-example PDF_MARGIN=1cm
You can define an explicit page break using
\newpage and explicit new line using
\newline inside your chapter
Unfortunately at the moment this only works for PDF version.
Math equations are rendered using MathML, supported for HTML and PDF but only for some EPUB3 readers and currently gives unrecognised tags on KindleGen converting to MOBI.
Yeoman CLI to visualize graph links and renaming chapter ids.
Additional Readme and Tutorial in Spanish.