Skip to main content
reference 3 min read

Competition task formats

The four competition task formats we-fly reads — XCTrack .xctsk and QR codes, FS/Airscore .fsdb, XCSoar .tsk and SeeYou .cup — with interactive specs you can test in the browser.

What this is

A competition task is an ordered list of turnpoints — each a WGS84 position with a radius in metres — plus the rules that turn that geometry into a race: where the speed section starts, when its gates open, where it ends, and what shape the goal is.

Four file formats describe exactly that, and every one of them is in daily use somewhere. we-fly reads all four into a single task model, and exports .xctsk. If you produce or consume task files, these are the references.

Interactive specifications

Each format has a self-contained, interactive spec you can read and test right in the browser — no upload, nothing leaves the page:

FormatSpecTest it with
XCTrack .xctsk + XCTSK: codesXCTrack task formatA live decoder and a polyline z-field codec
FS / Airscore .fsdbFSDB competition formatA role-derivation simulator and a file inspector
XCSoar .tskXCSoar task formatA zone-reduction tool and a file inspector
SeeYou .cupSeeYou CUP formatA coordinate converter and a file inspector

.cup has its own guide too — SeeYou CUP waypoint & task format — because it doubles as a waypoint format.

The four formats at a glance

.xctsk.fsdb.tsk.cup
Written byXCTrack, SeeYou NavigatorFS, AirscoreXCSoarSeeYou
SyntaxJSONXMLXMLCSV
Tasks per file1many — a whole comp1many
Start gates
ESS
Deadline
Date
Zone shapescylinder, line, sectorcylinder, line13 zone typescylinder, line
we-flyread + writereadreadread

Two things follow from that table. .fsdb is the only format that carries a date, because it wraps a whole competition; and .tsk is the only one with a rich zone vocabulary but no timing at all, because it comes from gliding.

Reading them into one model

  • Turnpoint roles are positional. No format has a GOAL type — the last turnpoint is the goal. .fsdb points at the start and end of the speed section with 1-based indices (ss, es); .xctsk tags turnpoints TAKEOFF / SSS / ESS; .tsk uses Start / Turn / Finish.
  • Times are UTC times of day, with no date — except in .fsdb, where they are full ISO datetimes with an offset. Convert those to UTC rather than slicing the time out of the string, and an FSDB task and its XCTrack twin reduce to the same gates.
  • Non-cylinder zones are lossy on the way out. A .tsk keyhole or sector becomes the cylinder it is inscribed in. Fine for display and route length; never re-score against a reduced task.
  • .tsk has no gates to import, so a task from one will not compare equal to the same task carrying real gates from .fsdb or XCTrack.

Uploading tasks

The task-file endpoint accepts .xctsk, .fsdb, .tsk and .cup, detecting the format from the extension and falling back to a content sniff. Single-task formats yield one task; .fsdb and multi-task .cup files yield several.

Size limits: 64 KB for single-task files, 4 MB for .fsdb (which can carry a full pilot list you do not need), and a maximum of 60 tasks per competition file.

Sources

Each interactive spec lists its own sources. The primary ones are XCTrack's Competition Interfaces (the model all four are normalised into), the Airscore FSDB importer (the reference for role derivation), the XCSoar source and Naviter's SeeYou file formats.