2023-04-04 01:57:29 +10:00
|
|
|
Introduction
|
|
|
|
============
|
|
|
|
The quest file format is a declarative computer language. It is made up
|
|
|
|
of statements that when read by the software define how it should behave and
|
|
|
|
statements that are written by the software to declare what it recorded.
|
|
|
|
Each statement begins with a directive followed by options or arguments indented
|
|
|
|
by one tab on the following lines.
|
|
|
|
The order of the directives is important, they are read by the program
|
|
|
|
line by line and may inherit data from those placed above.
|
|
|
|
If a line does not begin with a recognizable directive, it is ignored.
|
|
|
|
Care should be taken when inserting comments as one program may recognize
|
|
|
|
directives that another does not, for this reason double backslashes (//) are
|
|
|
|
reserved for leaving comments
|
|
|
|
|
|
|
|
List of directives
|
|
|
|
==================
|
|
|
|
The indented section of the directives reference show example values first,
|
|
|
|
followed by the range of possible values or brief explaination in brackets
|
|
|
|
|
|
|
|
Option directives
|
|
|
|
-----------------
|
|
|
|
Any client is free to define their own directives to look for in this section.
|
|
|
|
These directives override a programs defaults, they should be placed at the
|
|
|
|
top of the file alongside MetaData directives
|
|
|
|
|
|
|
|
Foreground-Color
|
|
|
|
247, 248, 242 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Background-Color
|
|
|
|
47, 53, 66 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Best-Color
|
|
|
|
249, 255, 79 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Ahead-Gaining-Color
|
|
|
|
24, 240, 31 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Ahead-Losing-Color
|
|
|
|
79, 255, 85 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Behind-Gaining-Color
|
|
|
|
255, 79, 79 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Behind-Losing-Color
|
|
|
|
224, 34, 34 (0-255, 0-255, 0-255)
|
|
|
|
|
|
|
|
Comparison
|
|
|
|
Personal-Best (Personal-Best/World-Record/Sum-of-Best)
|
|
|
|
|
|
|
|
Show-Delta-Column
|
|
|
|
True (True/False)
|
|
|
|
|
|
|
|
Show-Segment-Column
|
|
|
|
True (True/False)
|
|
|
|
|
|
|
|
Show-Time-Column
|
|
|
|
True (True/False)
|
|
|
|
|
|
|
|
Show-Comparison-Column
|
|
|
|
True (True/False)
|
|
|
|
|
|
|
|
Toggle-Hotkeys
|
|
|
|
t (See key name section)
|
|
|
|
|
|
|
|
Start-Key
|
|
|
|
r (See key name section)
|
|
|
|
|
|
|
|
Stop-Key
|
|
|
|
f (See key name section)
|
|
|
|
|
|
|
|
Pause-Key
|
|
|
|
y (See key name section)
|
|
|
|
|
|
|
|
Split-Key
|
|
|
|
e (See key name section)
|
|
|
|
|
|
|
|
Unsplit-Key
|
|
|
|
g (See key name section)
|
|
|
|
|
|
|
|
Skip-Key
|
|
|
|
v (See key name section)
|
|
|
|
|
|
|
|
MetaData directives
|
|
|
|
---------------
|
|
|
|
These directives provide metadata to runs that follow them,
|
|
|
|
multiple of these can appear in a single file if multiple
|
|
|
|
games or categories are run after one another
|
|
|
|
|
|
|
|
Title
|
|
|
|
Elden Ring (Title of the game being run)
|
|
|
|
|
|
|
|
Category
|
|
|
|
Any% (Name of the category being run)
|
|
|
|
|
|
|
|
Runner
|
|
|
|
SuperCoolGuy04 (The name you as the runner are known by)
|
|
|
|
|
|
|
|
Segment and Route Directives
|
|
|
|
----------------------------
|
|
|
|
Runs by themselves are simply a list of events that occured
|
|
|
|
(such as splitting or pausing) in the quest language, in order to give meaning
|
|
|
|
to this data, these more complicated directives are used to define segments
|
|
|
|
that are played between splits and routes made up of these segments.
|
|
|
|
Define all your possible segments first, followed by all routes.
|
2023-07-18 23:53:22 +10:00
|
|
|
If no segments are defined, a single unnamed segment is to be assumed.
|
2023-04-04 01:57:29 +10:00
|
|
|
If no routes are defined, a single unnamed route that passes through all
|
2023-07-18 23:53:22 +10:00
|
|
|
segments in the order of their definition is to be assumed.
|
2023-04-04 01:57:29 +10:00
|
|
|
|
|
|
|
Segment
|
|
|
|
Shortname
|
|
|
|
Stage One (A name for the segment that should identify it
|
|
|
|
within the file and refer to the single
|
|
|
|
objective completed.
|
|
|
|
This name should not change.)
|
|
|
|
Longname
|
|
|
|
Murderize Chad (The display name for the segment if it should
|
|
|
|
differ from the proper name, this name can be
|
|
|
|
changed freely and may be used for
|
|
|
|
inside-jokes without issue.)
|
|
|
|
Description
|
|
|
|
Go to the golden palace and kill
|
|
|
|
the big dude with the ugly sunglasses
|
|
|
|
(Optional third argument for use as a more
|
|
|
|
detailed note or reminder of the objective
|
|
|
|
for the segment that may be displayed
|
|
|
|
alongside the name)
|
|
|
|
|
|
|
|
Route
|
|
|
|
Name
|
|
|
|
Magic Swordless (Name for the route, keeping in mind routes
|
|
|
|
are not categories, you may simply run
|
|
|
|
multiple different routes because you're unsure
|
|
|
|
yet which strategies are the fastest)
|
|
|
|
Segments
|
|
|
|
Stage One (The ordered list of segments the route
|
|
|
|
Stage Two consists of, these names should match the
|
|
|
|
Stage Four segment Shortnames)
|
|
|
|
|
|
|
|
Run Directives
|
|
|
|
--------------
|
|
|
|
These directives are much more complicated and are not intended to be written
|
|
|
|
by a human but rather by the timer software, they will make up the majority
|
|
|
|
of a file as they are the run history which may be quite long.
|
2023-07-18 23:53:22 +10:00
|
|
|
The data passed by these directives exists agnostic of segments, route, games,
|
2023-04-04 01:57:29 +10:00
|
|
|
or categories, rather they are either explicitly matched with metadata that is
|
|
|
|
applicable, or by default is matched with the last set of metadata declared by
|
|
|
|
the time of the run directive
|
|
|
|
|
|
|
|
Run
|
|
|
|
Route
|
|
|
|
Magic Swordless
|
|
|
|
Start
|
|
|
|
2016-10-23 10:03:12.034Z
|
|
|
|
(The first event in a run must be Start, and it
|
|
|
|
must be accompanied by an RFC 3339 timestamp)
|
|
|
|
Split
|
|
|
|
120052 (Following events may be accompanied by
|
|
|
|
RFC 3339 timestamps or simply a millisecond
|
|
|
|
offset from the previous event)
|
|
|
|
Skip
|
|
|
|
323481
|
|
|
|
Split
|
|
|
|
3121111
|
|
|
|
Pause
|
|
|
|
421397
|
2023-07-20 01:18:44 +10:00
|
|
|
Resume
|
2023-04-04 01:57:29 +10:00
|
|
|
2016-10-23 11:16:04.175Z
|
|
|
|
Stop (The last event in a run is always a Stop)
|
|
|
|
123111
|
|
|
|
|
|
|
|
The 'Then' Directive
|
|
|
|
------------------
|
|
|
|
The default behaviour the timer should exhibit when multiple games, catagories,
|
|
|
|
or routes exist in the same quest file is to allow the user to select
|
|
|
|
which one should be run, but the 'Then' directive instead allows for multiple
|
|
|
|
routes or catagories to be run one straight after the other as a single longer
|
|
|
|
"route". The timer should insert a dummy "segment" between the two routes for
|
|
|
|
the user to spend resetting the game and record the resulting run in two places:
|
|
|
|
A run directive should be recorded with every event including the dummy split
|
|
|
|
that can be exported and shared as one marathon attempt
|
|
|
|
AND
|
|
|
|
Individual run directives for each of the individual routes should be created
|
|
|
|
without the other included routes or the dummy split that can contribute to the
|
|
|
|
attempt history and stats of those individual catagories
|
|
|
|
If multiple routes exist on both or either side of a Then directive, the routes
|
|
|
|
to be stitched together should be selectable out of the options given, just as
|
|
|
|
they are normally.
|