A vessel class is a ship type — the design. Missions place instances of
it. It is the largest record in the game and the one that decides what a crew's
consoles look like.
The sections
| Group | Sections |
| Core | General, Presentation, Model, Animations, NPC |
| Collections | Damage Teams, Cameras, Decks, Docks, Effects, Hard Points, Lights, Occupants, Roles, Statuses, Weapon Groups |
| Defaults | Cargo, Objects, Ordnance |
| Tools | Shipyard |
| Interface | Widgets |
Some of the class lives only in its file: damage sections, processors, hull markings
and scoring have no section yet. The editor saves the whole class, so those blocks
survive an editor save untouched.
Roles: the most important section
The roles a class declares are the seats it offers, and each one names the console
screen it opens. The flagship declares six:
<role id="Captain" screen="captain" abbr="CAP" commander="true" visible="false" />
<role id="Flight" screen="flight" abbr="FLT" visible="true" />
<role id="Tactical" screen="tactical" abbr="TAC" visible="true" />
<role id="Operations" screen="operations" abbr="OPS" visible="true" />
<role id="Sciences" screen="science" abbr="SCI" visible="true" />
<role id="Engineer" screen="engineer" abbr="ENG" visible="true" />
Each carries a short abbreviation and a color used consistently across consoles
and GM displays. commander marks the command seat.
Two optional attributes, written in the file, tie a role to the controls:
input names the input role the station's gamepad and key bindings come
from, and widget names the station widget a lobby shows for the seat.
Nothing requires these six. A small craft can offer one role; an unusual hull can
offer a role that exists nowhere else, pointed at a screen your module provides. This
is the main lever for making a module feel different: give the crew different seats.
Hard points and the Shipyard
Hard points are the mounting positions on the hull — where a component can be
installed, and where it sits in space for aiming and for damage. The Shipyard tool
fits Components to them, and also places the ship's cameras, docks, lights and
effects.
Hard points define the ship's capability envelope; components define what is
actually installed. Getting the hard points right first saves rework, because
everything else attaches to them.
A component installs only where the hard point is big enough and of the same type
(or of type Any). When the class's default loadout names a component that
does not exist or does not fit, that hard point is left empty and the server log says
which and why.
Damage sections
A class can divide its hull into sections, each with its own armor and internal
structure, so that a ship loses an engine pod or a wing rather than just hit points:
<sections bind="Box">
<section name="Bridge" box="-20 50 60 20 90 140" armor="200" internal="300"
crit-chance="0.3" vital="true" />
<section name="Port Nacelle" box="…" armor="150" internal="250" propagates-to="Hull" />
</sections>
- A hit lands on the first section whose box contains it, and otherwise on the one
along the shot's line or the nearest. Armor absorbs first; only the overflow reaches
internal.
- Internal damage can roll a critical (
crit-chance) that damages a
component on that section.
- When a section's internal reaches zero, every component on its hard points is
destroyed and the rest of the damage passes to
propagates-to. A section
marked vital="true" (or mode="Destruction") destroys the whole
vessel.
- The sections' internal values add up to the hull's maximum.
bind="Mesh" uses mesh="…" names from the model instead of
boxes. Mixing the two rejects the whole block, and the class falls back to a single
hull.
A hard point joins a section with section="…"; without one, it belongs to
the first section box that contains it. The Hard Point dialog's Mount
field no longer does anything, so set the section in the file.
Statuses: the alert conditions
A class can define its own alert conditions. Leave the section empty and it gets the
standard four — Blue for docking, Green standard, Yellow elevated, Red
battlestations — each restricting which component types may be brought up. Those
restrictions are what stop Tactical arming weapons below Red.
Define your own and you take on the whole job: a condition set needs a base, an
elevated, a docking and a critical condition for the rest of the game to reason about
it. This is a powerful place to express a faction's doctrine and an easy place to make
a ship that cannot fight.
Write a custom set in the file. On a class that started with the standard four, the
editor's status edits are not saved.
Cameras
Cameras are named viewpoints with a position, a target and a field of view, and they
are what the Main Viewer and viewport panels show. Author them generously: a bridge
forward view, side views, an astern view, and a set of external cinematic angles.
<camera name="Forward" position="0 70 130" target="0 70 -70" mode="Perspective" fov="55" showvessel="false">
The main Bridge view
</camera>
showvessel decides whether the ship itself is drawn — false for a
view from inside it, true for anything outside.
Occupants and crew
Large ships are populated by a mix of named people and generator rules: an
<occupant> row is one person, and a <generate> row
makes so many officers of this rank, so many enlisted, so many marines, with health and
efficiency defaults and tags. Operations and the decks display read this. A warship
with no occupants authored is a warship where nothing internal can go wrong.
Either kind of row can carry a character sheet: the four abilities (strength,
constitution, intelligence, speed, 0 to 1) and the eight temperament traits (mood,
disposition, honor, humor, impulsivity, persistence, social, valor, −1 to 1). In the
occupant dialog each is "auto" until you pin it; an unpinned value is rolled per person.
An occupant can also name its own archetype and deck. One with no faction takes the
ship's.
The class itself can name an Archetype in General: the role the
ship's commander plays when nothing more specific gives him one. Unmanned hulls get
their commander from a processor instead. See NPC Archetypes.
Decks and docks
Decks are the interior: the compartments that matter when boarders, fires or
atmosphere become the story. Docks are where other craft attach, which is what makes
a carrier a carrier.
A dock is one shape with its berths inside it, placed and sized with the Shipyard's
dock handles and filled in with the Docks section's dialog (General, Shape, Openings,
Speeds):
<dock name="Main Bay" type="Bay" flow="Both" position="0 -20 40" orientation="0 0 0"
park="Out" shape="Box" size="120 40 200">
<berth position="0 0 0" halign="Center" valign="Bottom" />
<opening direction="-Z" flow="Inbound" approach="Nose" />
</dock>
- type —
Bay, Pad (set down gear first),
Port (two ships mate, and only with a port of the same
connector) or Tube (a launch tube).
- openings — the faces ships enter and leave by, each with its own
flow and approach (
Nose or Translate). With none, ships enter
nose first along the dock's forward axis.
- park — how a ship sits once in:
Out, nose toward the
first exit; Frame, along the dock; Travel, as it came in.
- speeds — approach, final, terminal and capture speeds, on the dock
or per opening.
A dock with no shape is treated as an old‑style sphere of its maximum radius, and
forward= on an old dock is still read and turned into an orientation. A dock
currently parks one ship, in its first berth.
Damage teams
The pool of repair teams Engineer distributes. The number is a real balance
decision — it sets how quickly a ship recovers from anything.
Scoring
A class can keep score, which suits racing and arena modules:
<scoring collision-cost="…" weapon-cost="…" credit="Weapon" credit-own-hit="true" />.
Each hit costs its victim the cost for that kind of damage times the share of the hull
it took, and the loss is paid to the attacker if the kind is credited. Only hulls that
keep score are charged or paid.
The class can push extra panels onto specific consoles, in addition to the ones its
components bring. See Widgets for what a widget is; the short version is that a
console is assembled from declarations like these rather than being a fixed layout.