FB1 Game Profile

Version 1.0
Author Tim Jones
Date 6th June 1998
Status  

Introduction

Prerequisites

Readers are required to read and use as a reference the Ground Zero Format GZF Standard version 1.1. The GZF standard describes the basic formatting rules to be followed within a GZF compliant file and describes the notation that this document uses to define the Full Thrust Fleet Book Volume 1, game profile rules. The GZF standard contains a description of the general concepts within a GZF file and their general application. A working knowledge of its contents is prerequisite to understanding the FB1 profile.

Scope

This document describes file encoding rules for the transfer of FB1 game data between players and applications. The encoding is known as a game profile. The game profile attempts to describe various models that can be used to hold game state and system design information in a common way.

From the GZF standard the concepts of block-types are used to describe the important elements in an FB1 game. This as always is a matter of data abstraction, which is reducing a game object, to those essential parts, which are required for playing and designing in the FT universe. The FB1 game profile also adds user defined fields to the GZF header block.

Association

This profile expands the concept of component association. This is the way that a contains relationship is modelled in the file format, for example a Class 1Battery is a component of a Ship as the Ship contains the Class 1 Battery. This component relationship is modelled by the association of different block-types in the file or by a foreign key field.

Association by simple file order, is for absolute relationships, where there is no ambiguity in the association. As block-type B follows block-type A in the file, and these two block types have a defined absolute component relationship, then block A always contains block B.

Example

Ship:    EUS Huron
System:  Class 1 Battery
System:  Sensors

Ship:    EUS Reliant

In this example, the relationship is defined that a Ship block type has an absolute component association to a Weapon block type and a System block type. All blocks that are of the required types following the Ship block are always interpreted as components of the Ship. The association continues until a non associated record is encountered (in the example another Ship block) or the end of the file. The one exception where the absolute association does not apply is when the component blocks appear before the owning block types. This allows for the case when weapons and systems can be defined as a generality and not in association with a specific ship instance.

The second form of component relationship is an optional relationship and this is modelled by the component block having a field that identifies an associated block( a foreign key field). As the relationship is optional the field may or may not exist or point to an actual associated block.

Example

Ship:   Bogey 1
Fleet:  Unknown

In this example the Ship has optional relationship with the Fleet block. In this case we don't know which fleet the bogey is in so the field doesn't point to an actual Fleet block.

The ordering of blocks is only mandated in the GZF standard for the header block to be the first block in the file. The FB1 profile expands this concept with suggestions of what should be a logical block ordering within an FB1 profile. Although these are not hard and fast rules they are strong recommendations. The recommended block order is the same as the order of the block specifications that follow.

In each block specification the first field is always the block type identifier and must be the first field in the block. All field names and defined field-body values are case insensitive. All field names and defined field body values are spelling sensitive. Spelling of common words will accept America and British English spellings and any parser must cope with both. This is the list of known exceptions:

American English British English
Armor
Armour

 

 

Acronyms

Where the name of a FB1 is long and a common acronym exists the acronym willbe used. This is the list of known acronyms in use in this profile:

Salvo Missile Launcher SML
Salvo Missile Rack SMR
Salvo Missile Magazine SMM
Fire Control System FCS
Area Defence Fire Control ADFC
Point Defence System PDS
Faster Than Light FTL
Life Support System LSS

GZF User Defined Extensions

This profile adds two user-defined extensions to the GZF header block.

universe "Universe" ":" universe-name describes a universe extension eg Babylon 5
universe-version "Universe-Version" ":" version-number universe version
universe-name "Full Thrust" / "Babylon 5" / "Star Trek TOS"
/ "Star Trek TNG" / "Star Wars" / "Honor Harrington"
/ "Battlestar Galactica" / "Anime" / user-defined-universe
universe name the default is Full Thrust
user-defined-universe <Any agreed universe extension name which will supply additional values for other fields in the game profile>  
unit-type "Units" ":" ("cm" / "inches") game unit size

General Field Descriptions

This section defines some common fields and data definitions which are used in the specific block field definitions

sign "+" / "-"  
exponent "e" / "E"  
integer [sign]1*DIGIT [*LWSP-char] whole number no decimal point
efloat [sign][*DIGIT] "." [*DIGIT]exponent[sign]*DIGIT decimal form if over 6 figures
float [sign][1*6DIGIT]"."[1*2DIGIT] decimal form if 6 figures or less
clock 1*2DIGIT 1 - 12 clock course facing
arc "FS" / "F" / "FP" / "AP" / "A" / "AS" Forward Starboard, Forward, Forward, Port, Aft Port, Aft and Aft Starboard arc designations
firing-arc "Firing-Arc" ":" 1#arc firing arcs
turn-direction "P" / "S" Port or Starboard
roll-order "RO" roll the ship
acceleration-order sign integer +1 -2
turn-order integer turn-direction 1P 1S
cinematic-move-order #(1roll-order / acceleration-order / turn-order) movement orders list, zero or more order elements are supported, orders are evaluated left to right to allow flexibility when the actual ability of a ship may not be known in advance eg
1P 1S +3
+2 1S +3
main-drive-order "MD" integer eg MD4
rotation-order ("TP" / "TS") integer eg TP2 TS3
push-order ("PP" / "PS" / "PR") integer eg PP2 PS3 PR1
vector-move-order #(1roll-order / 1push-order
/ 1rotation-order / main-drive-order )
eg MD1 TP3 PS1 MD2 RO
mass "Mass" ":" integer components mass according to the design system
cost "Cost" ":" integer components point cost according to the design system
facing "Facing" ":" clock facing as a clock facing 1 - 12
course "Course" ":" integer ship course in degrees with 0 on positive y axis 90 on
positive x axis (navigation clockwise convention)
velocity "Velocity" ":" integer speed in game units
position position-x
position-y
position in space or on the board
position-x "Position-X" ":" (efloat / float) position in standard Cartesian space where +ve x
is to the right and +ve y is up
position-y "Position-Y" ":" (efloat / float)  
bounds low-x
low-y
high-x
high-y
bounding box or area
low-x "Low-X" ":" (efloat / float) lower corner of bound in standard Cartesian space
low-y "Low-Y" ":" (efloat / float)  
high-x "High-X" ":" (efloat / float) higher corner of bound in standard Cartesian space
high-y "High-Y" ":" (efloat / float)  
check-box "O" / "*" / "-"

check box O (ASCII 79) unchecked
crew factor check box * unchecked
- checked

check-row 1*check-box row of check boxes
launch-status "Launched" / "Docked" Launched and Docked refer to bays or ships at bases
activity-status "Active" / "Inactive" this refers to whether a system is on or off
damage-status "Damaged" / "Repaired" / "Destroyed"

Damaged systems can be Repaired, Destroyed systems
can't be Repaired. Repaired systems cannot be
Damaged only Destroyed

core-status "Powerless" / "Lifeless" / "Uncontrolled" core system states
status 1#(activity-status / launch-status
/ damage-status / core-status )
the status can be any combination of the status elements
but at least one must be specified and duplicates are
meaningless
capacity "Capacity" ":" integer systems current capacity usually energy or weapons
log "Log" ":" text free format text about what happened
convention is one entry per line following the rules
for folded fields
fleet "Fleet" ":" text fleet name eg Earth Alliance
carrier "Carrier" ":" text carrier name
pilot-quality "Pilot-Quality" ":" ("Ace" / "Turkey") fighter pilot quality
fighter-type "Fighter-Type" ":"
[("Fast" / "Heavy" / "Long Range") SPACE ]
("Standard" / "Interceptor" / "Attack" / "Torpedo")
fighter type the default is a standard fighter type
user-defined-system <Any agreed universe system name>  
class "Class" ":" text vessel class eg OMEGA
ship-type "Ship-Type" ":" ("Military" / "Civilian" / "Merchant") ship type eg Military
hull-integrity-type "Fragile" / "Weak" / "Average" / "Strong" / "Super"  
hull-integrity "Hull-Integrity" ":" hull-integrity-type Hull integrity
captain "Captain" ":" text commander eg Ludo Toen
armour/armor-track ("Armour" / "Armor") ":" 1#(check-box) hull armour/armor level eg - O O O
orders "Orders" ":" text orders for fighter groups, weapons for example
free format
damage-track "Damage-Track" ":" 1#4check-row ships damage track eg O / * unchecked - checked
eg ---- -OOO O*OO OO*
payload-box (("H" / "P" / "S" / "T") integer) / "-" H10 unchecked
- checked
payload-track "Payload-Track" ":" 1#4payload-box eg - P5 P5 P5

 

Scenario Block

scenario-block

scenario
turn
[scenario-location]
[scenario-date ]
[scenario-extent ]
[log]
*CRLF

scenario meta data the embellishments are
optional
scenario "Scenario" ":" text scenario title eg A Call To Arms
turn "Turn" ":" integer turn number, 0 is by convention the setup turn
scenario-location "Location" ":" text location eg Wolf 359
scenario-date "Date" ":" text date eg Stardate 3511.2
scenario-extent "Extent" ":" bounds scenario bounds if applicable

Example

Scenario:  Playing With Fire
Turn:      9
Location:  Mars
Date:      2257

 

Fleet Block

fleet-block fleet
admiral
[morale]
[log]
*CRLF
fleet meta data, membership is in a ship-block
attribute
admiral "Admiral" ":" text admiral's name eg John Sheridan, JS@b5.com
morale "Morale" ":" integer "%" fleet morale level as percentage of fleet remaining
eg 100% is highest possible morale

Example

Fleet:    Earth Alliance
Admiral:  Clarke, traitor@scum.com
Morale:   60%

Fleet:    Shadow
Admiral:  Morden, shadow@everywhere.com
Morale:   100 %

 

Ship Block

ship-block

ship
[class]
[hull-integrity]
[ship-type]
[streamlining]
[mass]
[cost]
[captain]
[crew]
[fleet]
[status]
[facing]
[course]
[velocity]
[position]
[movement-system]
[movement-orders]
[orders]
thrust-rating
[thrusters]
[armour-track]
damage-track
[log]
*CRLF
[*system-block]

ship information followed by on board
components. The ship status and ship
design can be represented by the use of appropriate
fields
ship "Ship" ":" [text] ship id and or name eg HMS Thor
streamlining "Streamlining" ":" ("None" / "Partial" / "Full") hull streamlining quality
movement-system "Movement-System" ":" ("Vector" / "Cinematic")  
movement-orders "Move" ":" (vector-move-order / cinematic-move-order) ships movement orders
eg 1P +2 1S or MD1 TP3
thrust-rating "Thrust-Rating" ":" integer ships current main drive thrust rating eg 6
thrusters "Thrusters" ":" integer ships thruster power eg 3
crew "Crew" ":" text number of ratings and officers

Example

Ship:            HMS Thor
Class:           Arapaho
Captain:         Tim Jones
Fleet:           NAC
Position-X:      79.1
Position-Y:      23.4
Velocity:        4
Course:          45
Facing:          6
Mass:            12
Thrust-Rating:   6
Thrusters:       3
Armor:           O
Damage-Track:    O *
Movement-System: Vector Move: MD2 TP2 MD4 Orders: Fire both class 1 batteries at ESU Zorin Log:
In nebula cloud

 

System Block

Systems are the general term for the equipment on the ship. Weapons are a subclass of a ship's systems in that they have firing arcs and can cause damage. It is recommended that the weapons systems are grouped together.

system-block

system
[firing-arc]
[cost]
[mass]
[status]
[failure]
[capacity]
[magazine]
[rounds]
[ammo-type]
[fighter-type]
[pilot-quality]
[orders]
[log]
*CRLF

firing-arc only applies to systems of weapon-type
fighter-type and pilot-quality only applies to a
Hangar Bay system

system "System" ":" ( weapon-type / system-type) the type of system
missile-type "Standard" / "EMP" / "Needle"  
salvo-type "Standard" / "ER" Standard or Enhanced Range
rounds "Rounds" ":" #(check-box) number of rounds in magazine or weapon eg - O O
ammo-type "Ammo-type" ":" salvo-type ammunition type in magazine
magazine "Magazine" ":" text

magazine id is used to link magazines to launchers. If in launcher block it identifies the magazine block the laucher is linked to. if in a magazine block it identifies the magazine itself.

failure "Failure" ":" integer

core system failure
Command bridge, turns out of control
Power Core, saving roll for breach
LSS, turns to total failure

weapon-type ("Class" SPACE integer SPACE "Battery") / "Needle Beam"
/ "Ortillery" / "PDS" / "Pulse Torpedo" / "Submunition Pack"
/ ([missile-type SPACE] "Missile") / "Minelayer"
/ "Minesweeper" / "Wave Gun" / "Nova Cannon" /
"SML" / "SMR" / "SMM" / user-defined-system
weapon types
system-type "FTL" / "FCS" / "Screen Generator" / "Reflex Field"
/ "ADFC" / "Cloaking Field" / "Enhanced Sensors"
/ "Superior Sensors" / "Individual ECM"
/ "Area ECM" / "Hangar Bay" / "Weasel" / "Drone"
"Dock" / "Command Bridge" / "Power Core" / "LSS"
/ user-defined-system
system types

Example

System:     Class 4 Battery
Firing-Arc: F
Status:     Inactive Damaged

System:     SML
Firing-Arc: FP F FS
Magazine: 	 Mag1
Status:     Active
Log:        15 damage pts on Dionysus

System:     SMM
Status:     Active
Magazine:   Mag1
Ammo-Type:  ER
Capacity:   6
Rounds:     - O
Log:         

System:     Enhanced Sensors
Status:     Active

System:     Power Core
Status:     Active Damaged
Failure:    3

System:     FTL
Capacity:   6
Status:     Inactive

System:        Hangar Bay
Fighter-Type:  Fast Interceptor
Pilot-Quality: Ace
Status:        Launched Destroyed
Log:           Launched turn 6

 

Fighter-Group Block

The fighter-group block is used to describe a launched fighter group.

fighter-block

fighter-group
craft
position
[course]
[facing]
[velocity]
[fighter-type]
[pilot-quality]
[endurance]
[status]
[carrier]
[screening]
[orders]
[log]
*CRLF

 
fighter-group "Fighter-Group" ":" text fighter group identifier eg SQR63
craft "Craft" ":" 6#check-box number of remaining fighter craft in group
endurance "Endurance" ":" 6#9check-box active endurance O remaining - expended
screening "Screening" ":" text id of ship the fighters are screening

Example

Fighter-Group:  Rudel
Craft:          - - - - O O
Type:           Heavy Attack
Quality:        Ace
Position-X:     53.0
Position-Y:     35.0
Endurance:      - - O O O O
Screening:      EAS Agrippa
Carrier:        EAS Theseus

 

Launched System Block

This is used to represent any system that has been launched from the carrying ship, this may be for example a missile, mine or nova-cannon

launched-block launched-system
launched-type
position
[course]
[facing]
[velocity]
[status]
[detection-range]
[endurance]
[carrier]
[orders]
[log]
*CRLF
 
launched-system "Launched-System" ":" text launched system identifier eg M19
launched-type

"Type" ":" ([missile-type SPACE] "Missile")
/ ([salvo-type SPACE] "Salvo") / "Nova Cannon" / "Mine"
/ "Drone" / user-defined-system

type of system launched
detection-range "Detection-Range" ":" integer use as blast radius for a Nova Cannon shell or a
mine's detection range,

Example

Launched-System: Ms-1
Type:            EMP Missile
Position-X:      60.0
Position-Y:      73.9
Course:          12
Detection-Range: 6
Endurance:       - 0 0

Launched-System: SLM-9
Type:            Standard Salvo 
Position-X:      60.0
Position-Y:      73.9
Detection-Range: 6

 

Base Block

This is used for a base installation. It may be a simple self contained unit or composed of Base Sectors.

base-block

base
[class]
[hull-type]
[mass]
[cost]
[captain]
[fleet]
[status]
[course]
[facing]
[velocity]
[position]
[armour-track]
[damage-track]
[payload-track]
[orders]
[log]
*CRLF
[ *system-block / *base-sector-block ]

base either has systems like a ship or is composed
of sectors each of which is like a ship
base "Base" ":" text base indentifier eg Babylon 5

Example

Base:           Babylon 5
Class:          Babylon
Captain:        Sheridan
Fleet:          Earth Alliance
Position-X:     79.1
Position-Y:     23.4
Mass:           900
Damage-Track:   --------- --------- --------- ---OOOOOO OOOOOOOOO OOOOOOOO OOOOOOOO
 OOOOOOOOO OOOOOOOO OOOOOOOO OOOOOOOOO OOOOOOOO OOOOOOOO OOOOOOOOO OOOOOOOO OOOOOOOO
Orders:         Launch Rudel Group
                Launch Baker Group
Log: 3 damage pts from Coeus turn 2
     2 damage pts from Montana turn 4

 

Base Sector Block

This is an absolute associated component of a Base Block, it can have absolute associated component System Blocks.

base-sector-block

base-sector
[mass]
[cost]
[armour-track]
[damage-track]
[payload-track]
[orders]
[log]
*CRLF
[*system-block]

Weapons located in sectors use the sector firing arc:
and don't have or use their own firing arcs
Sector firing arcs are arbitrary and depend on the base
SSD
base-sector "Base-Sector" ":" integer base sector indentifier eg 1

Example

Base-Sector:    1
Damage-Track:   ---------- -----OOOOO OOOOOOOOOO

System: FCS
Status: Active

System: FCS
Status: Damaged Inactive

System: FCS
Status: Repaired Active

System:      Class 1 Battery
Firing-Arc:  FP F FS
Status:      Active
Log:         1 damage pt on Dionysus

 

Terrain Block

This is to hold the more general sort of terrain such as asteroids, moons and planets.

terrain-block terrain
terrain-type
(position diameter) / bounds
[course]
[facing]
[velocity]
[damage-track]
[log]
*CRLF
terrain its extent can be defined by a position
and diameter or bounds.
Terrain delimited by bounds will typically not move.
The damage-track is for Asteroids which can be
destroyed by offensive fire.
terrain "Terrain" ":" text terrain indentifier eg Talus IV
terrain-type "Type" ":" "Nebula" / "Dust Cloud"
/ "Debris" / "Battle Debris" / "Meteor Swarm" / "Star"
/ "Planet" / "Moon" / "Asteroid" / "Atmosphere"
/ user-defined-terrain
type of terrain
diameter "Diameter" ":" (efloat / float) terrain diameter in game units
user-defined-terrain <Any agreed user defined terrain type>  

Example

Terrain:    Ceti Alpha III
Type:       Planet
Position-X: 100.2
Position-Y: 66.8
Diameter:   24.0

Feedback on using this standard

Last Updated 12th June 98

1