FB1 Game Profile |
||
Version | 1.0 | |
Author | Tim Jones | |
Date | 6th June 1998 | |
Status |
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.
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.
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 |
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 |
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 |
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 |
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 |
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 |
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 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 |
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
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 only applies to
systems of weapon-type |
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 |
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
The fighter-group block is used to describe a launched fighter group.
fighter-block |
fighter-group |
|
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
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") |
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
This is used for a base installation. It may be a simple self contained unit or composed of Base Sectors.
base-block |
base |
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
This is an absolute associated component of a Base Block, it can have absolute associated component System Blocks.
base-sector-block |
base-sector |
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
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