Skip to main content
This schema documents the structure of game data files used in Utopia Fleet Builder. All data is stored as JavaScript module exports containing arrays of card objects.

Overview

The Utopia data model consists of several card types, each with specific fields and structure:
  • Ships - Starship cards with stats and abilities
  • Captains - Captain cards with skill and abilities
  • Admirals - Admiral cards with fleet-wide effects
  • Ambassadors - Ambassador cards with diplomatic negotiation mechanics
  • Upgrades - Upgrade cards (weapons, tech, crew, elite talents)
  • Resources - Fleet-wide resource cards
  • Missions - Scenario and mission definitions
  • Others - Special cards and tokens

Common Fields

All card types share these base fields:
type
string
required
Card type identifier: "ship", "captain", "admiral", "ambassador", "upgrade", "resource", "mission", etc.
id
string
required
Unique identifier for the card (e.g., "S415", "Cap053", "A044")
gameId
number
default:1
Game identifier (always 1 for Star Trek Attack Wing)
set
array
required
Array of set identifiers this card belongs to (e.g., ["75016"], ["OP1Participation2"])
name
string
required
Display name of the card
image
string
URL to card image (typically imgur links)
unique
boolean
default:false
Whether this is a unique card (only one allowed per fleet)
factions
array
Array of faction strings: "federation", "klingon", "romulan", "dominion", "borg", "independent", etc.
cost
number
required
Squadron point cost of the card
text
string
Card ability text with HTML formatting and special image tags for icons

Ship Cards

type
string
required
Always "ship"
class
string
required
Ship class name (e.g., "Sovereign Class", "Galaxy Class")
attack
number
required
Primary weapon attack dice
agility
number
required
Base agility (defense dice)
hull
number
required
Hull points
shields
number
required
Shield points
actions
array
required
Array of action types available:
  • "evade"
  • "target-lock"
  • "scan"
  • "battlestations"
  • "cloak"
  • "sensor-echo"
  • "regenerate"
upgrades
array
required
Array of upgrade slot types:
  • "tech"
  • "weapon"
  • "crew"
  • "talent"
  • "borg"
  • "squadron"

Captain Cards

type
string
required
Always "captain"
skill
number
required
Captain skill number (typically 1-10)

Admiral Cards

type
string
required
Always "admiral"
skill
number
required
Skill bonus when admiral replaces captain (typically 0-3)

Ambassador Cards

Ambassadors are diplomatic cards that offer negotiation mechanics with two possible outcomes.
type
string
required
Always "ambassador"
cost
number
required
Squadron point cost (typically 3-5 SP)
text
string
required
Contains two sections:
  • NEGOTIATIONS ACCEPTED: Benefits for both players
  • NEGOTIATIONS DENIED: Consequences or penalties

Upgrade Cards

Upgrade cards have different subtypes: tech, weapon, crew, talent, borg, squadron, question
type
string
required
"tech" for technology upgrades
alliance
boolean
default:false
Alliance restriction
{
  "type": "tech",
  "id": "T312",
  "set": ["75016"],
  "name": "Advanced Shields",
  "image": "https://i.imgur.com/example.png",
  "cost": 3,
  "text": "<b>ACTION:</b> Disable this card...",
  "unique": true,
  "alliance": false,
  "factions": ["federation"]
}

Special Upgrade Fields

Upgrades may have additional constraint fields:
OnePerShip
boolean
Only one copy allowed per ship
shipFederation
boolean
Requires Federation ship
costFederation
string
Additional cost for Federation ships (e.g., "+1")
sovereignLimit
boolean
Limited to Sovereign class ships
hullConstraint
string
Hull requirement (e.g., "4+", "5+")

Resource Cards

type
string
required
Always "resource"
opBanned
boolean
default:false
Whether this resource is banned in organized play
showShipResourceSlot
boolean
default:false
Display option for resource slot

Mission Cards

type
string
required
Always "mission"
missionSet
array
required
Array of mission set identifiers
missionID
string
required
Unique mission identifier
Componets
string
Components required (note: typo in source - “Componets”)
description
string
Mission narrative and background
setUp
string
Setup instructions including point limits and requirements
specialRules
string
Special rules for the mission
objectives
string
Victory conditions and objectives

Other Card Types

Special game tokens and rules references:
{
  "type": "token",
  "id": "rule_starshipconstruction",
  "gameId": 1,
  "set": ["AdditionalRules"],
  "name": "Starship Construction",
  "text": "Starship Construction Cards are cards featuring..."
}
Special utility cards for fleet building:
{
  "type": "question",
  "id": "Q036",
  "gameId": 1,
  "set": ["75016"],
  "name": "Systems Upgrade",
  "cost": 2,
  "text": "This card may fill a [weapon_text] or [tech_text] Slot.",
  "OnePerShip": true,
  "shipFederation": true,
  "factions": ["federation"]
}

Text Formatting

Card text uses HTML and special image tags:
<b>ACTION:</b> - Action ability
<b>WHEN ATTACKING:</b> - Attack timing
<b>WHEN DEFENDING:</b> - Defense timing  
<b>END PHASE:</b> - End phase timing
<b>PLANNING PHASE:</b> - Planning phase timing

Data File Structure

All data files follow this pattern:
module.exports = [
  {
    // Card object 1
    type: "ship",
    id: "S001",
    // ... other fields
  },
  {
    // Card object 2  
    type: "ship",
    id: "S002",
    // ... other fields
  }
  // ... more cards
];

Available Data Files

ships.js

All ship cards with stats and abilities

captains.js

Captain cards with skills and talents

admirals.js

Admiral cards with fleet abilities

ambassadors.js

Ambassador cards with negotiation mechanics

upgrades.js

All upgrade cards (tech, weapon, crew, talents)

resources.js

Fleet resource cards

missions.js

Mission scenarios and objectives

others.js

Special tokens and rules cards

sets.js

Set and expansion definitions

ship_classes.js

Ship class definitions and groupings

missionSets.js

Mission set collections

starship_construction.js

Starship construction rules and cards

rulings.js

Official game rulings and clarifications

Validation Rules

When working with this data:
Required Fields - All cards must have type, id, name, and cost
Unique IDs - Card IDs must be unique across all cards of same type
Valid Types - Type must be one of the documented card types
Faction Arrays - Factions must be arrays, even for single faction
Numeric Fields - Stats (attack, agility, etc.) must be numbers
Some legacy data may have inconsistencies (e.g., “Componets” typo in missions). Preserve these for compatibility.

Usage Examples

const ships = require('./data/ships.js');
const federationShips = ships.filter(ship => 
  ship.factions && ship.factions.includes('federation')
);

FAQ

Frequently asked questions

Rulings

Official game rulings and clarifications

Build docs developers (and LLMs) love