Monogatari

GitHub Overview

Monogatari/Monogatari

Monogatari is a simple web visual novel engine, created to bring Visual Novels to the web.

Stars784
Watchers29
Forks120
Created:June 23, 2015
Language:JavaScript
License:MIT License

Topics

custom-elementsenginegame-enginegame-enginesinteractive-storytellingnovelprogressive-web-apptext-based-adventurevisualvisual-novelvisual-novel-enginevisual-novelsweb-components

Star History

Monogatari/Monogatari Star History
Data as of: 7/25/2025, 12:44 PM

Monogatari

Simple Web Visual Novel Engine

Overview

Monogatari is a simple visual novel engine designed for web browsers. With responsive design and Progressive Web App (PWA) support, it works on all devices.

Details

Monogatari is designed based on the "web-first" philosophy. Your visual novel is a web page first and a game later.

Key Features:

  • Simple syntax
  • Responsive design
  • PWA support (offline play possible)
  • Released as UMD module
  • Desktop apps via Electron
  • Mobile apps via Cordova
  • Load/save functionality
  • Animation support

Pros and Cons

Pros

  • Free and open source (MIT license)
  • Leverages modern web technologies
  • Responsive design
  • Installable as PWA
  • Simple and easy to learn

Cons

  • Requires basic web technology knowledge
  • Performance inferior to native apps
  • Limited Japanese documentation

Key Links

Example Code

Basic Monogatari script example:

monogatari.script({
    'Start': [
        'show scene room with fadeIn',
        'show character y normal at center with fadeIn',
        'y Hello! It\'s a beautiful day today.',
        {
            'Choice': {
                'Dialog': 'y What shall we do today?',
                'Walk': {
                    'Text': 'Go for a walk',
                    'Do': 'jump Walk'
                },
                'Stay': {
                    'Text': 'Stay home',
                    'Do': 'jump Stay'
                }
            }
        }
    ],
    'Walk': [
        'y Great! Let\'s go for a walk together.',
        'end'
    ],
    'Stay': [
        'y Let\'s relax at home.',
        'end'
    ]
});