A Brief Player's Look at STAGE

by Bryce Harrington

As described in previous editions of this fine periodical, the "Stage Two Altima Game Engine" is our next step in our bootstrapping server development process, built on the experiences gained from the experimental servers Pangea and Object Workhorse, and the 'Q' series of prototype servers (QuADAS, Qserver, and Qserver2).

The STAGE server is described in detail (from a developer's standpoint) on the website. This article seeks instead to describe the server from the end user's standpoint, describing the features and capabilities it will provide for game play.

The first thing to note is that STAGE is not to be confused with a "Production" class server. It, like its predecessors, is still to be considered a "developmental" design. However, unlike its ancestors, STAGE is intended to be "playable". That is, this is intended to be good enough for use in a game playing system, to allow us to test out the many parts of the system (clients, world design, AI scripts, etc.) work out kinks, and redesign things. In other words, to conduct alpha level testing of the system.

This allows us to take some shortcuts to simplify design, development, and testing of the server. For instance, internally we will be using strings for indexing instead of integers, which while more efficient, are a bit more difficult to code and maintain. This affects performance a bit, and limits scalability, but for an alpha test server this is acceptable.

All that said, we intend for STAGE to present a wide range of features.

The server will fully support the Atlas protocol, and the range of clients (text, 2d, 3d, admin, and AI) in development. Movement will be thoroughly modelled, including a range of modes (flying, swimming, floating, rolling, crawling, etc.) and a variety of terrain types (including stairs and bridges).

Objects (called Entities) can be created, modified, combined in a variety of ways, and converted into other kinds of entities. The entity modification system we have planned allows the world designer (or, perhaps, even players) to define "recipies" for creating a new kind of Entity through the combination of several others in a controlled fashion - for instance, building an oven out of a pile of bricks, or a wagon out of pieces of wood and iron. And in addition to "canned" transformations, there will be some generalized transforms that hopefully can be used to "invent" new types of Entities. For instance, any Entity with the "FABRIC" or "HIDE" trait could be tailored into a shirt (with the appropriate skill of course.)

Tool type Entities are capable of applying affects to objects. For instance, a paint brush tool can change the color of another Entity. A flame entity can apply heat to Entities near or inside it. Tools can also convert other Entities. A saw can split objects of material "wood". A chisel can convert a stone block into a statue (with adequate labor and skill, of course.)

A notion of "linkages" will be available in the game. Entities can be physically connected together (perhaps even chained), and when one is moved, the others will behave in a roughly realistic manner. This feature is aimed primarily at things like horse drawn wagons, two people carrying a long log, or tying a dinghy to the back of a ship. But this has certain implications of usefulness for creation of simple machinery. Conveyor belts, cranes, and mills may be possible, opening up some interesting things to play with.

Several schemes are being taken to make simple terrain more feature-rich. Large groups of similar Entities (a forest of trees, for instance) are "compressed" algorimically to avoid sending endless streams of data from server to client. This will also be a boon for looking at a large number of objects from a distance (such as looking down on a forest from dragon-back.)

Another terrain feature in the works are Flow Entities. Flows are used to create fluid streams - rivers, ocean currents, or wind streams, for instance. This will introduce usefulness (and danger) to rivers, open some interesting possibilities with ocean and air travel, and maybe make possible wind and water mills.

Beyond basic modelling of physical processes, STAGE will have built into it a series of modules specifically suited for development and operation of medieval fantasy roleplaying game worlds. Treasure generation, dungeon generation, and plot generation will be automated via specialized functions in the server. Economics will be provided for, with functions to help regulate barter and trade. Another module will allow playing games-inside-the-game, such as cards, dice, and board games.

STAGE will provide us an architecture for investigating a wide range of game features. It will allow us a place to implement and test these features, and change them as we go as needed. Being able to play as we develop away might have a profound effect on encouraging and fostering more (and better) development.