Each line in f0 describes one object in the model. The syntax is:
CLASSID:PROPERTY1,PROPERTY2,...
CLASSID – alphanumeric identifier of the class. Currently, there are 4 object classes (see f0 Semantics)
PROPERTY1,PROPERTY2,... – a set of properties of the object. Each class defines the sequence of properties and a reasonable default value for each one. The full definition of the property is NAME=VALUE. You can skip NAME= if the given property is next in the sequence. Object descriptions with omitted property names are not recommended as they may be misinterpreted by future GDK versions with different property sets. There is an exception for easier editing: skipping inside the "natural" (= "unlikely to change") property sequences like x,y,z is allowed, you can write "x=1,2,3" instead of "x=1,y=2,z=3". You can also skip the whole definition of a property and accept the default value. If you want to pass special characters (for ex. a comma) or set the empty string value (""), VALUE can be placed between quotes (").
Examples
Let's assume the following class definition: CLASSID=ob and 4 properties with default values: a=0, b=1, c=2, d=3
Some valid f0 descriptions:
| all properties are set explicitly | ob:a=9,b=8,c=7,d=6 |
| you can omit property names if the sequence is obeyed | ob:9,8,7,6 |
| some properties have no names, but they are deduced from the sequence | ob:d=6,a=9,8,7 |
| "b" and "c" are not defined – default values will be used (b=1,c=2) | ob:9,,,7 |
| b="", c=2 | ob:9,"",,7 |
| b="," (comma), c=2 | ob:9,",",,7 |
| default values used for "a","c" and "d" | ob:b=8 |
| default values used for all properties | ob: |
Parts, Joints and Neurons have reference numbers used to attach other objects. References start with 0 and every new object in the class gets the next reference number.
Creates instance of the Part object.
Creates instance of the Joint object.
Creates instance of the Neuro object.
A neuron is a signal processing unit, a sensor (receptor) or an actuator (effector).
Add an input – a weighted connection to the other neuron. Both objects must be already created.
To see these in Framsticks application, you have to start writing f0 genotype with "//0" (two slashes and zero and new line). The shortest f0 genotype – a single part ("atom")
p:
A single stick, "X" in f1
p: p:1 j:0,1
Three sticks in line, "XXX" in f1, no "delta option" – absolute coordinates used in all parts
p: p:1,m=2 p:2,m=2 p:3, j:0,1 j:1,2 j:2,3
Three sticks line, "XXX" in f1, with "delta option" – relative positioning (dx=1)
p: p:m=2 p:m=2 p: j:0,1,dx=1 j:1,2,dx=1 j:2,3,dx=1
Three sticks star (120 degrees), "X(X,X)" in f1, no delta option, absolute coordinates are awkward and the sticks' length cannot be seen
p: p:1, m=3 p:1.50017, -0.865927 p:1.50017, 0.865927 j:0, 1 j:1, 2 j:1, 3
Three sticks star (120 degrees), "X(X,X)" in f1, using delta option, dx=1, note that 120 degrees / 2 = 1.047 rad
p: p:m=3 p: p: j:0, 1, dx=1 j:1, 2, rz=-1.047, dx=1 j:1, 3, rz=1.047, dx=1
Neuron net example, "X[|G:1,1:2.3][@-1:3.4,0:4.5,T:5.6]" in f1
p: p:1 j:0, 1, dx=1 n:p=1 n:j=0, d="|:p=0.25,r=1" n:j=0, d=G n:p=1 n:j=0, d=@:p=0.25 n:p=1, d=T c:0, 2 c:0, 3, 2.3 c:1, 0 c:3, 0, 3.4 c:3, 3, 4.5 c:3, 5, 5.6 c:4, 3
Cyclic structure, parts are connected 0->1->2->3->0. Not possible in f1 or f4 formats.
p:0,0 p:1,0 p:1,1 p:0,1 j:0,1 j:1,2 j:2,3 j:3,0