Advent - Documentation

What Advent should accomplish

Advent is meant as an adventure game development kit with which one shoulde be able to easily develop games like Monkey Island or The Longest Journey. It should also be possible to develop rpg's like the recent Final Fantasys with this SDK/engine. The scripting language will be Guile Goops and the graphics backend will be OpenGL (through ClanLib and SphriteLib).

Logic Layer

What does that mean? What features will Advent provide? First of all Advent will provide a way to declare objects with their properties and allow interaction (use, look, etc.) with them. In addition it will also provide a way to declare of combinations of two or more objects will behave. All this can be easily done via Goops ability to handle multiple dispatches, Advent will basically provide a few macros to ease the declarations of objects and their properties. That means you simply define a function and a number of conditions (i.e. argument types in this context) which should be meet when this function is called. In addition to the definition of verbs and function, Advent will also provide some help for defining dialogs, it might also use the Adonthell dialog system (which looks quite powerfull). This logic layer might become independet of the gfx engine, so it could be used to write text adventures. But Advent will not provide a text parser so this will be quite limited, when included at all.

Graphics Layer

In addition to the logic layer, there will be a graphics layer, which handles all the gfx output and input (mouse, keyboard, etc.). The low-level backend will be OpenGL, which means we get hardware acceleration, can do fast alpha blitting, transparency effects and light effects. There might be support for non-OpenGL targets, but thats not for sure (this will basically depend on SphriteLib2D). The gfx layer will provide ways to handle scenario handling, sprite handling and gui elemets (buttons, windows, etc.).

2D Layer

There will be a pseudo 2D mode which will work similar to Monkey Island, you will have 2D scenario where a sprite can walk on, the sprite can be scaled so that it gives you a pseudo 3D feeling. To creating something that works with this 2D layer you basically need to paint a few images and a collision map (a map where specific colors indicate the walkable area and the 'deep' of the image for the scaling)

Scenario

A scenario is basically a collection of drawables.

Drawable

A sprite which is placed in a scenario, along with information about scaling and pralax scrolling.

Sprite

Some image or a sequence of images.

Collideable

Something that can tell if a given point is insite its area or not (basically used for clickable objects).

3D Layer

In addition to the simple 2D layer (which is already working quite good) there will also be sooner or later an 3D layer, similar to Final Fantasy VIII or the Longest Journey. Which means that instead of a 2D sprite you can have a 3D sprite which walks in a real 3D collision environment, the backgrounds will then generally consist of rendered images, instead of painted one. The advantage of a real 3D enviroment is that you can overlapping areas (walk under a bridge and over it) and that you can have a 'bigger' sprite, which means that it won't be a problem to have your character closly by the virtual camera, which is not possible with the 2D map.

Sound/Music

We will simply provide what ClanLib provides, which means (ogg, all kind of mod formats, wav.)


Last update: Thu Nov 15 11:18:08 2001
Copyright © 2000 Ingo Ruhnke, <grumbel@gmx.de>
Verbatim copying and distribution of this entire webpage is permitted in any medium, provided this notice is preserved.