This document gives an overview of the proposed Deus game engine. Currently we are looking one step beyond a rogue-like game - including some of the flavour of such games, but breaking down some of the boundaries that irritate us personally. Any comments on this document should be sent to us.
The ideas in this document were hashed out by Jules Bean and Ben Bell, during a holiday in Spain. However, we have drawn heavily on ideas from existing computer games, including Angband and its friends, as well as the great minds which make up the ORCS! list. In particular the whole idea of Presences came from there!.
All of the ideas here should be considered in the public domain (after all, they're only ideas!). But if you think they're interesting, why not get in touch with us?.
A game using the Deus engine is about interactions between Entities, which are controlled (sometimes) by Actors. Entities can create Effects which then affect Entities.
Entities live in a 'non-perfect information' world. That is, they only have a limited amount of information about the other entities and effects which share their world. I.e., those which they can 'see' or 'smell' or 'hear' etc.
This is modelled by Presences. A Presence is something which is detectable by some Entities. Presences, in general, have some kind of four-dimensional distribution - that is to say, they are detectable over some volume in space, and over some time (generally, decaying in intensity the farther away, or longer after the event). Both Effects and Entities can cause Presences.
To clarify, here are some examples:
We spent some time discussing the world model to use. A two-dimensional model gives simplicity, as does a tile-based system. However, we were attracted to the flexibility of a 3D model (influenced to some extent by Myth - anyone with the bandwidth to download a 32M demo, check it out!). In the end we have compromised on a topologically two-dimensional model, with some 3D features, and, hopefully, the possibility to move to a full 3D model later.
A world, then consists of Maps. A Map is a set of triangles in 3-space. Each triangle consists of three points (3D points), which are shared with other triangles, (in general) and three edges. Each edge either leads to another triangle, to a portal, or nowhere. An edge which leads nowhere is interpreted as a wall in a dungeon. A portal is a link to another map. (To a particular triangle on another map).
Triangles also have other attributes, defining, for example, terrain type.
The position of an Entity is determined by its x and y coordinates, and its triangle. The z coordinate can be calculated from that. For the purposes of 'collision detection' entities are considered ellipses in the plane of the triangle. Hence, more than one entity can fit in one triangle.
Note that large areas of 'wilderness' scenery can typically be described in very few triangles. In more detailed areas, for example inside a dungeon, triangles will typically have to be smaller to model the shapes.
Inside dungeons there will typically be two differing notions of 'height'. The different levels of the dungeon, if it is layered, will often be separate Maps. Different heights within one level simply add flavour (and make battles more interesting, strategically).
It is envisioned that Entities will have differing ability to move over terrain. For example, on the 'rocky floor' terrain, a human might be able to move through any triangle which makes an angle of 45 degrees or less to the horizontal, but not steeper ones. Although, she might be able to leap down steeper slopes, knowing that she could not necessarily climb back up. The same human, wearing heavy armour, would be unable to move through deep water triangles (or, at least, she would certainly drown).
All game calculations are made by a game engine. A complete Deus world may consist of more than one game engine - typically, each engine would service a group of maps.
The game engine enforces and uses the structure outlined above. Customisation at the next level of detail - the attributes of particular entities (monsters etc.) - is in a language of its own - DDL. The game engine is written in some existing language - we were sold on Java, for its cross-platform power, and the simple implementation of networking and threads. However, the failure of any vendor to deliver a working VM is destroying confidence in this idea...
There is also a network structure, not strictly relevant at this point, and discussed in another document.
There are two ways to interact with a game. An administrator can connect to a game engine, establishing a Point of View (POV). This allows him to watch, (and perhaps modify) the game's progress. A player, on the other hand, connects to a Point of View which is associated with a particular Entity, and can only affect the game by controlling the Actor associated with the player's Entity. (This discussion is simplified, and hedges concepts like posession of other Entities and charm. These concepts are expressable, however).
An administrator's POV can detect all Presences. A player's POV is restricted by the abilities of the Entity he is playing.
Then, there are well-defined communication protocols between the engine, POVs, and controllers.
Most of the links from this document don't exist yet. But here is the planned documentation:
Game overview (this document)
Networking structure - how the game comes together from the component programs.
These document the lowest level of abstraction - the basic building blocks of the Deus game.
These document the next level up - the game system. These ideas can be modified, by and large, without changing the engine.