Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

gaiman

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

gaiman

Gaiman Text based advanture games engine and programming language

  • 1.0.0-beta.3
  • beta
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

Gaiman Engine and Programming Language

Gaiman: Text based adventure games engine and programming language

npm Build and test Coverage Status LICENSE GPLv3

Gaiman: Storytelling Text Based Game Engine and Programming Language

Main part of Gaiman is a minimalist, Ruby inspired, programming language. The main purpose of it is to help creating Text Adventure Games. But it can also be used to create any interactive CLI applications (Web Based Terminal applications). It supports browser based CLI applications and in the future also native command line.

Installation

First, you need to install NodeJS. After you're done, you should open terminal and use npm command (that is included with Node).

npm install -g gaiman@beta

Usage

gaiman -o directory input.gs

This will compile your source file and generate dir/index.html and dir/index.js files. And you can open generated html file in browser and run the game.

Documentation

See Reference Manual on Wiki.

Examples

This is Hello world Gaiman DSL example:

echo get "https://gaiman.js.org/gaiman.txt"
echo* "Hi, What is your name?", 50 # Typing animation with 50ms delay
let name = ask "name? "
echo "Hello $name, nice to meet you."

More advanced example:

if cookie.visited then
    if cookie.user then
        let user = cookie.user
        echo "Hello $user, welcome back"
    else
        ask_details("Welcome back stranger")
    end
else
    cookie.visited = true
    ask_details("Welcome stranger")
end

def ask_details(msg)
    echo msg
    echo "Do you want me to contact you with updates?"
    let confirm = ask "yes/no: ", lambda(answer)
        return answer =~ /^(y|yes|n|no)$/i
    end
    if confirm =~ /y|yes/i then
        echo "what is your name?"
        let name = ask "name: ", lambda(name)
            let valid = name != ""
            if not valid then
                echo "You need to type something"
            end
            return valid
        end
        cookie.user = name
        let email = ask "email: ", lambda(email)
            let valid = email =~ /^.+@.+\..+$/
            if not valid then
                echo "wrong email"
            end
            return valid
        end
        cookie.email = email
        let response = post "/register", { "name" => name, "email" => email }
        if response then
            echo "Welcome $user. You're successfully registered"
        end
    else
        echo "Ok, as you wish. Bye"
    end
end

More examples in examples directory

See Reference Manual for details about the features

Live Demo

See Gaiman language Playground

Live Edit of Gaiman Code: Gaiman programming language Playground Demo Session

Live edit of style Gaiman programming language Playground Demo Session

Roadmap

See Wiki TODO & Roadmap.

Name and Origin

Name came from Neil Gaiman, Author of novels, comic books, graphic novels and films. Great storyteller.

You can read about the origin of the language in the beginning of the article:

Acknowledge

Logo use:

License

Released under GNU GPL v3 or later
Copyright (c) 2021-2022 Jakub T. Jankiewicz

FAQs

Package last updated on 26 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc