Mason Technology

This section contains the design of the various systems that will implement all the central features of Mason.

Refer to the Glossary for explanation of different Mason specific terms used on these pages.

Mason consists of nine major modules:

Overview of the Mason Architecture

This document presents the latest ideas about the Mason systems, and presents an overview of the whole Mason architecture.

Rule System API

This module rests on top of STAGEs object system and provides a high level API that the different Mason Sysems and other rule systems are built on. It will likely have classes for things like Game Objects, Attributes, Connections / Links between Game Objects, and so on. The classes used in the different Mason Systems will derive from these more basic classes.

The plan is to first sketch out class diagrams for each of the Mason Systems, and then examine what different patterns and roles occur repeatedly in these, and extract those to classes that are provided by this API. That way we avoid a lot of duplicate work, and get a much smaller intefrace to the underlying STAGE system (probably either proteus, compo, some mix of those, or something else).

TODO: Is Rule System API a good name? Perhaps come up with something better. Should we use a deity? Cthulhu? Athena?

Physics Engine

It seems like we have to address the design of the physics engine that will do most of the physics simulation separately. Different containers or areas in the game will have different requirements for the level of realism needed in physics simulation. For example, when under the water the pressure will vary significantly with the deepth, but when above the water at around sealevel the air pressure can be treated as constant. The physics system will allow a server admin to specify the level of realism to be used in different situations.

Item System

Item System Class Diagram

The Item System is one of the most fundamental systems created by Mason. It simulates item properties and materials, creation of new items through shaping existing items, creation of new items by attaching together or detaching existing items, the reactions of items and materials to changes in the environment, and Functions that items provide.

Skill System

The Skill System provides a way to store skill hierarchies, allowing skills be defined using different parameters such as if they affect learning or using other skills positively or negatively, what kind of learning profile they have, what kind of success profile they have, how they are affected by the attributes of the entity or object that is performing them, and how they are affected by the attributes of tools or targets used (?). The Skill System also has the functions for doing skill checks.

Information System

Information Objects are a way to represent different sorts of data that is used in-game by both player characters, non-player characters, and mechanical systems. There are Information Objects for the major categories of different data: text, pictures, musical scores & lyrics, blueprints, spell designs, knowledge about an item type, knowledge about skills, structured documents that can contain other Information Objects, and more. Many of these players and NPCs can edit themselves, others, such as knowledge about skills, are not player editable, but players can still copy them and use them when learning a skill, or sculpting an item.

There are also information streams, for representing continuous streams of information between two points, instead of individual information objects.

Mechanical System

Mechanical System Class Diagram

The Mechanical System provides a way to define different specialized machine parts, and allows them to be connected to form complicated machines. The Mechanical System runs the simulation of all the machines in the game.

Mind System

Mind System Class Diagram

A Mind in Mason contains sets with different types of data, memorized Information Objects, logged memories, skills, mental model of the world, personality, a list of tasks, goals, and motivations, and so on. The Mind itself is passive, and need at least one Soul to be able to do something. A Mind can be in control of zero or more bodies or other objects. The Mind can be contained in zero or more (?) physical entities or Information Objects.

Control System

The control system provides a way for Souls to control different types of Avatars. The control connection can contain several different streams of information. One stream, the command stream, sends commands to the Avatar from the Soul. Other perception streams send visual, auditive, textual, and other perceptions back to the Soul. The perception streams can also include a telemetry stream that sends status information of the Avatar itself. An Avatar can also sometimes control one or more other Avatars through a physical Control Interface device in the world, or through magic spells or similar. In this case additional Control Connections are formed from the Soul controlling the original Avatar to the other Avatars. The control stream to the original Avatar is not broken, but player clients might want to hide it, or provide the players with means to manage and switch between the different Control Streams.

Avatars are normally bilogical bodies, but could also be autonomous agents in a computer network, bodyless spirits, vehicles with a control interface, or any contruct built with the Mechanical System and equipped with a Control Interface.

The control system will probably be changed to be partly information streams, and partly mechanisms in the mind_system for handling them.. Although it could still exist to hold the definition of Avatars and control interfaces.

Body System

Body System Class Diagram

The Body System simulates the biological body of an animal, monster, or character in the game world. The body provides a set of attributes that other systems can read (mainly used by the skill system and mind system). Internally, it models the functionality of the eleven main organ systems, and simulates their reaction to the enviromental conditions, nutrition, drugs, potions, poison, sicknesses, and wounds.

Map System

Map System Class Diagram

The Map Module provides a generic map format that is used both for generated output maps and the source map data that is used to generate the output maps. The output maps are used by the game server and clients. The source maps are edited by map editors and then stored inside the map module. Maps consist of multiple layers. Each layer contains free-shaped 2D polygons with a certain type of data at each vertex. The output maps will have layers for terrain height, soil type, water height, and perhaps some other layers, such as layers for static items that are created on the fly, and perhaps temperature and other weather data. The server and clients might use output maps with somewhat different types of layers.

Various Stuff

Garbage Collection

Is this perhaps more related to Game Design (the concept) or Content (thieving animals), or this page (scattering heaps, erosion)?