-
Notifications
You must be signed in to change notification settings - Fork 996
DataFormat
For editing the data files, make sure you have a text editor that:
- Saves files with Unix-style line endings. (That is, don't use Notepad.)
- Does not convert straight quotes
"..."
into curly quotes“...”
. - Inserts a tab character, rather than some number of spaces, when you press the TAB key.
Some text editors support an EditorConfig file, and will read settings from the file provided in this repository. This can help ensure your contributions match the format of existing data files.
A data file consists of any number of lines, each of which can contain any number of items or "tokens." Tokens are separated by spaces. For example, this is a line with four tokens in it:
this is a test
If you want to enter a single token that contains spaces, it must be enclosed in double quotation marks "..."
to signify that it is a single token. For example, this line contains two tokens:
text "This is a test."
If the text you are trying to enter contains double quotation marks and spaces, you can enclose it in backticks `...`
rather than quotation marks:
text `He said, "Hello!"`
Entries in data files are tree structures, where each non-empty line of the file is a "node" of the tree and indentation is used to represent its structure:
"root node"
"first child node"
"second child node"
"child of second child node"
"third child node"
That is, each data element is presented in the form of a hierarchical outline. In the hierarchy, a sub-item is called a "child," and the item that contains it is its "parent." Two nodes that have the same parent are called "siblings."
Unless otherwise noted, the order in which the lines in a particular data element appears is not important. For example, this:
object
pos 1.23 4.56
name "Test"
is completely equivalent to this:
object
name "Test"
pos 1.23 4.56
In various other wiki pages, I describe the syntax of data files using notation that is similar to how command line arguments are specified in Unix man pages:
-
plain text
specified keywords that appear verbatim in the file. -
<text in angle brackets>
should be replaced with a particular value:-
pos <x#> <y#>
means you could enter something likepos 1.23 4.56
orpos 1000 2000
.- A "#" sign means the value is expected to be a number.
-
name <name>
means you could enter something likename Example
orname "A Longer Name"
.
-
-
vertical | bars
represent options you choose between:-
on (offer | accept | decline)
meanson offer
oron accept
oron decline
.
-
-
[square brackets]
denote optional arguments, and can be nested:-
item <name> [<count>]
means the count is optional (e.g. defaulting to 1 if left out). -
range [<min> [<mean>]] <max>
meansrange <max>
orrange <min> <max>
orrange <min> <mean> <max>
.
-
-
ellipses...
mean an argument can appear more than once.-
<value>...
means a list of 1 or more values. -
[<value>...]
means a list of 0 or more values. -
...
on a line by itself means any number of lines can be included here (following the grammar given in previous lines).
-
This wiki is based on files at https://github.com/endless-sky/endless-sky-wiki If you find any errors or omissions, or would like to suggest a change, please do so there.
Gameplay
Story
Contributing
- Help wanted
- Development Roadmap
- Art and storytelling style
- Quality Checklist
- Story Ideas
- Donations
- Development Vision
Creation
- Creating plugins
- Creating missions
- Writing conversations
- Creating game events
- Creating new ships
- Creating person ships
- Creating outfits and weapons
- Creating effects
- Creating systems and planets
- Creating system hazards
- Creating minable asteroids
- Creating planet sprites
- Creating spaceport news
- Creating governments
- Creating fleets
- Creating phrases
- Creating starts
- Creating text substitutions
- Editing interfaces
- Player conditions
- Ship personalities
- Location filters
- Sprite animation parameters
Compiling or modifying the source code
Descriptions of game engine technology