Menu

Home

Benedict Jäggi

GIML{i} Documentation

Game Induced Markup Language {interpreter}

View the GIMLI test page on github.io with all features:
https://benis-bastelschuppen.github.io/GIMLI

Or view the page with the new appartement here (not all features on the page right now):
https://gimli.sourceforge.io

This wiki is almost complete, it only lacks some jBash-commands. For your consideration.

(This version of) GIMLi is intended to be used on a PC with a mouse or touchpad and a display size > 640x480.
(You may change the view size in the file 'interpreter/css/gimli-base.css' in the properties of '#gimli-outer-window'.)

Scrolling Bug: Maybe scrolling will not work if you load a GIMLi-site for the first time. Mostly it works again if you reload the page.

You can read this wiki like a book: At the end of each page is a "Next"-link, so you can learn GML the...right way. :)

As of v7.00, the parser, the interpreter and the parser-classes (data-structures to parse out of a file using the parser) are located in their own files. You can construct your very own interpreter with your own "GML"-tags by using the parser without the interpreter from here and writing your own parser-class/es. Also, you can construct your own GML-interpreter (with the GML structures given here) by using the parser AND the parser-classes provided here. Thinking here about an interpreter in the Unity Game Engine. ;)

Contents:

What is GIML{i}?

GIMLI is short for "Game Induced Markup Language Interpreter" and is also the name of a dwarf from "The Lord of the Rings" from J.R.R. Tolkien.

So, it is a markup language like HTML. This JavaScript-interpreter is just a prototype to show the functionality of a GIML-page. I would like to have a real GIML-Browser in the end, maybe a fork of the FireFox-Browser which natively understands the GML, so that there has to be no html web page "around" it like now.

Game induced means that there are images and the web page is interactive. It is not only text with some images beneath it, like a page of a book, but images with images on them which can be interactively used like in a point&click-adventure game.

As of version 0.7.00, there is a standalone [Parser]. GML and the interpreter are completely optional for that - you can get your own data out of it for your own purposes. The benefit of this parser is, that you can incorporate "header-files" into your structure and if you code it right, you can make almost the whole game(-structure) only with gml files.

This is a typical (extra pixelated) GIMLI-page opened with this interpreter:
GIMLI Demo Image 1

For that, a GIML-page does not only contain one or more GML (alike HTML) files but also a file structure with much images put into there. The GML files only describe, how and when those images are loaded and placed, and what the items can do when there is a click.

In short, a GML file contains some global variables, some locations with their own variables and some items with their own variables, which all will be put and linked together by the interpreter to create a view like in an old adventure game (E.g. Monkey Island). Also, since v0.2.x, there is a sound-bank for playing sounds after a click on an item, and more.
And since v0.5.x there are panels to show text and make dialogues/multiple choice decisions.
There are no visible user characters included yet but you can browse a GML page somewhat like in the game "Myst".

GIMLI Panel

Note that a GIML page runs on the client side. It does not need any PHP or NodeJS server stuff (right now) and no complex framework like Symfony is needed. Also, NO cookies are involved and no user login or other database stuff is needed on the core system.

GML shall introduce a new way of making websites: More like a game and less like a book.

"Game Induced" means, that you use the website more like a game (GIMLI is point&click-adventure-alike) than a "book with images".
Because nowadays most websites look like a book: There is some text, there are some fields to pick/fill in, also with text, and there is a description image beneath some text. But I remember another Internet from "the movies", the old cyber-movies where there was no real internet (in real life) yet. In the movies vision of the internet, you fly through 3d "cities of files" and have a lot of fun just flying through that infrastructure. See "Johnny Mnemonic" for reference.

But GIML[i] is another "another" type of internet: A typical GIML site looks like an old adventure but lacking the characters.
Everyone can use Paint or even Photoshop/Gimp/Inkscape. So it is better to make a 2d representation, for that more "websites" may pop up with GIML as background "engine". To make a 3D model takes more effort than to put some pixels into a paint image. I personally did not get how to make a model in "Second Life" back in the days, so I left it...

GIML[i] is based on the vision of the community "website" seen in "Halt & Catch Fire".

A little example

In your "old" amazon store, you can pick stuff somewhat like in an "extended" paper catalogue. There are some product images with some text benath it, like in a book. Only difference is the little search box on the top and, of course, the "interactivity" of the search results, which you do not have in a book. For amazon that's good because they have no "trade buildings".

But your local groceries store could be made online wit GML. Some photos of the whole store. Then highlight each product on the photos (create ITEMS). Each click on a such highlighted ITEM would put that item into the shopping cart. Also, maybe a nice sound would play. Last you only need one PANEL for the payment process. And then the end-user just walks through that store like in an adventure game and can buy..real stuff. Also, each item could open an info PANEL. I think, just only to see that online groceries store would be an experience, without buying anything...

GML structures

GML actually provides you with 4 structures:
A ROOM can be filled with ITEMS. ITEMS can play SOUNDS and run scripts. PANELS can be opened by script.

  • A ROOM just has a background image. Ok, there are some more props, but that's about it. _ROOM_s are the "pages" of a GIML-site.
  • An ITEM is an image where the mouse can move over, which can be highlighted, show some text and play a SOUND when clicked, beneath executing a script. ITEMS must be placed into _ROOM_s.

  • There is a SOUNDS structure with the names and filenames of sounds which can be played.
    They can yet only be played while clicking on an item but it is planned to make a script command for playing sound and background music, and also to build a BGM (BackGroundMusic) tag into the ROOM-structure.

  • And last but not least there are PANELS. PANELS are meant to show text and create dialogues or other informational blocks of text. A Panel has some text on the upper side and some buttons on the bottom to click on. PANELS can be shown by clicking on an ITEM.

  • Scripts are made up of commands for the jBash-console system. You can easily add new commands with JavaScript functions to execute. All this script commands can also be directly executed in the console window of the interpreter.

NEW: Standalone Parser

If you want to use the parser for loading your own data structures, just go with it (version >= 0.7.0) and jump to the [Parser]-section.

Next: [Installation]


Related

Wiki: About
Wiki: GIML_Structure
Wiki: GML_EXAMPLE
Wiki: GML_GLOBALS
Wiki: GML_ITEMS
Wiki: GML_PANELS
Wiki: GML_ROOMS
Wiki: GML_SOUNDS
Wiki: Installation
Wiki: Parser
Wiki: SCRIPTS