Wartbed:Architecture/Modules

From Dark Omen Wiki

Jump to: navigation, search

WARTBED Architecture
Documents related to technical design aspects and implementation details.
For a general overview of WARTBED, see the WARTBED Design Document

Architectural documents:

WARTBED

0.1 "Clausewitz"
0.2 "Jomini"
...

Contents

Modules Technical Overview

The technical architecture details about the WARTBED modules.

Interaction model

How modules can interact with each other: f.i. how battles can be fought between units.

Module Rule Sets

WARTBED's goal is to be able to represent as many RTT games as possible. However, some game types differ to an extent where rules for gameplay mechanics cannot meaningfully represent all. Therefore, WARTBED will be built upon the concept of rule sets, which define the affordances of a game type. For instance, all ancient and medieval mêlée RTT games (SOTHR, WHDO, Myth, etc) will be representable under one such rule set. All modules thus subscribes to a rule set, and all modules of the same rule set will principally be able to interact.

Unit Inheritance Hierarchies

Also see Unit-related file formats and the WARTBED Script format
Also see Unit Data

The WARTBED Unit representation module purports to allow WARTBED units:

  1. to be translated and represented faithfully to their original games
  2. to allow them to possess and retain uniqueness
  3. to standardise their representation
  4. to allow them to be used interchangeably
  5. and to anchor their representation in such a way as to be fair and balanced

This is obviously anything but a trivial mission, and thus places great demand on how units are described (symbolically represented). To this end, WARTBED uses an Object-Oriented mark-up notation where hierarchies of data structures are assembled into "finished" units through node-tree-like inheritance. This hierarchy starts in base types that lay out the basic values of a unit of that type, which may then be adjusted by a succession of modifiers. For readability and atmosphere, the names "base type" and "modifier" can overloaded with monikers, typical examples of such might be "race" and "class".

For instance, this example shows how a number of aliases could be named, a type and a set of modifiers declared, and veteran warrior and marksman units are defined:

Example File -- INCOMPLETE!!!
Other aspects required for unit definitions are weapons, equipment, mounts, magic etc. This is not yet covered by this document. Also, this example file is oversimplified and f.i. the scope hierarchies used in the file formats document is not given here!
// type and modifier alternative aliases aliases // "alias" and "aliases" are synonymous { base type = race modifier = class modifier = experience modifier = background }
// Basic types race = Human { Strength = 30 cost = 100 }
// Modifiers background = Barbarian { strength += 10 toughness += 10 leadership -= 10 cost *= 1.1 } background = Rabble { strength -= 15 leadership -= 15 cost *= 0.60 } class = Warrior { strength += 5 toughness += 5 weapon skill += 10 } class = Archer { archery = +10 } experience = Veteran Warrior { prefix name = Veteran strength = +5 weapon skill = +5 } experience = Veteran Archer { replace name = Marksman archery = +5 toughness = +5 }
// Units unit { category = Footman //The display name is derived from the type and modifiers type = Human type += Barbarian type += Warrior type += Veteran Warrior } unit { category = Archer type = Human type += Archer type += Veteran Archer }
Personal tools
communication