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:
| Format | Spec | Test it with |
|---|---|---|
XCTrack .xctsk + XCTSK: codes | → XCTrack task format | A live decoder and a polyline z-field codec |
FS / Airscore .fsdb | → FSDB competition format | A role-derivation simulator and a file inspector |
XCSoar .tsk | → XCSoar task format | A zone-reduction tool and a file inspector |
SeeYou .cup | → SeeYou CUP format | A 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 by | XCTrack, SeeYou Navigator | FS, Airscore | XCSoar | SeeYou |
| Syntax | JSON | XML | XML | CSV |
| Tasks per file | 1 | many — a whole comp | 1 | many |
| Start gates | ✓ | ✓ | — | — |
| ESS | ✓ | ✓ | — | — |
| Deadline | ✓ | ✓ | — | — |
| Date | — | ✓ | — | — |
| Zone shapes | cylinder, line, sector | cylinder, line | 13 zone types | cylinder, line |
| we-fly | read + write | read | read | read |
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
GOALtype — the last turnpoint is the goal..fsdbpoints at the start and end of the speed section with 1-based indices (ss,es);.xctsktags turnpointsTAKEOFF/SSS/ESS;.tskusesStart/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
.tskkeyhole or sector becomes the cylinder it is inscribed in. Fine for display and route length; never re-score against a reduced task. .tskhas no gates to import, so a task from one will not compare equal to the same task carrying real gates from.fsdbor 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.