1
0
Fork 0
mirror of https://github.com/Oreolek/raconteur.git synced 2024-06-16 23:00:48 +03:00
raconteur/README.md
2015-04-11 02:35:40 -03:00

100 lines
3.3 KiB
Markdown

# Raconteur
Raconteur makes writing interactive hypertext fiction with Undum straightforward and perhaps even fun. It's a wrapper library that bundles oft-needed functionality and a new, cleaner, CoffeeScript-friendly, DSL-inspired API for defining Undum stories.
```coffeescript
situation 'west_of_house',
content: (character, system, from) ->
"""
# West of House
You are standing in an open field west of a white house, with a boarded
up front door.
#{roomContents(character, system)}
"""
```
Raconteur is still in active development towards its 1.0 release.
## Implemented Features
- DSL-like syntax for defining situations.
- A powerful situation prototype that bundles a lot of commonly-used
functionality.
- Shorthand for defining common hypertext interactions such as text
replacement or insertion, similar to popular Twine extensions.
- Most properties of situations can be either functions or strings,
making it easy to turn a simple situation into a complex one.
- An interface that is specifically designed to be used with ECMAScript 6 via
Babel, or CoffeeScript.
- Markdown, rather than raw HTML, as the format for most text content using
markdown-it.
- A tool bundle of iterators that makes it easy to define adaptive text
snippets.
- Based on CommonJS principles (Using undum-commonjs), allowing all game code
to be bundled using Browserify.
## Planned Features
- An advanced game template that sets up a complete development environment
for authors: A build system (gulp), CSS preprocessing (Less), and dependency
management (Browserify + npm).
- A complete code refactoring of Undum and Raconteur itself with testability
in mind, allowing the use of testing frameworks with Undum stories.
## Installation
For now, clone this git repository. Then, from the root:
npm install
You will find an useful Gulpfile.js in devel/, among other tools. Eventually, Raconteur will be distributed as a ready-to-use template so that you'll be able to download, install dependencies with `npm install`, and get hacking.
## Code examples
Those examples all use CoffeeScript.
Defining a simple situation in Raconteur:
```coffeescript
situation 'raconteur_example',
content: """
This is an example of a situation using Raconteur's API. It supports
Markdown in text, so the content of a simple situation can just be
written out without explicit HTML.
"""
```
Using text snippets:
```coffeescript
situation 'variations',
content: (character, system) ->
# content can be either a function or a simple string, transparently
color = oneOf(['bright purple', 'sickly green', 'brilliant white'])
.randomly(system) # We pass the system object so that random results
# will always be the same across different runs of
# the same saved game.
"""
# Reflecting Pool
You find yourself in an underground, flooded cave. Light shimmers on
the walls, #{color}.
"""
```
## License
In short: You can use, modify, or redistribute Raconteur and Undum, for any
purpose, as long as this license document is kept with copies of it. See
LICENSE for legalese.
Undum is copyright (c) 2009-2015 I D Millington, and released under the MIT
license.
Raconteur itself is copyright (c) 2015 Bruno Dias, and released under the
same MIT license.