-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathconfig.yaml
154 lines (131 loc) · 5.82 KB
/
config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
dna:
# A creature's DNA contains a fixed number of chromosomes.
number_of_chromosomes: 16
# During copy, a gene can mutate. The likelihood of that
# happening is mutation_rate. If it does mutate, then the
# gene's value is either incremented or decremented by a
# random amount in the range [0, mutation_range].
mutation_rate: 0.08
mutation_range: 15.0
physics:
# The effort of a creature moving is measured in an arbitrary
# unit - call it a "joule". This is the amount of energy that
# is needed for one such unit.
energy_expense_per_joule: 0.1
# Once a creature's tangential velocity gets over this value,
# it starts getting impacted by viscosity - which means that
# it will level off to its maximum value quick. This is to
# avoid creatures getting longer and faster forever. It doesn't
# impact rotation.
viscosity_kickin_velocity: 300
# A higher metabolic rate has many advantages (mainly you move
# faster), but one disadvantage: it raises energy consumption
# by a non-linear factor. This factor equals the metabolic
# rate to the power of metabolic_consumption_pow.
metabolic_consumption_pow: 1.5
# If two objects get closer than this, then they're colliding.
collision_distance: 60.0
creature:
# The dish is populated with seed creatures, with an energy of
# seed_energy. Their maximum energy is that value multiplied by
# max_energy_to_initial_energy.
seed_energy: 25000.0
max_energy_to_initial_energy: 5.0
# A creature cannot live more than max_lifespan ticks, and it
# cannot reproduce before mature_age ticks.
max_lifespan: 100000
mature_age: 5000
# The base frequency of a creature's wave.
base_wave_frequency: 0.01
# A creature "skews" its movements depending on the current angle
# of the target (up to a maximum absolute angle of lateral_viewfield).
# The skewing is not instantaneous - to change its skewing, a
# creature has a base_skewing_velocity, that is then multiplied
# by its metabolic rage.
lateral_viewfield: 135.0
base_skewing_velocity: 0.1
# A creature will give at least this amount of energy to its
# offspring, and refuse to reproduce if it doesn't have enough
# energy.
min_energy_to_children: 10000.0
organ:
# At birth, an organ has a minimum length and thickness. Both
# grow at growth_rate until they reach their genetically
# determined values. (Note that the rate is not the same
# for all organs - organs farther away from the head grow
# faster).
minimum_length_at_birth: 5
minimum_thickness_at_birth: 1
growth_rate: 0.01
egg:
# Eggs have a radius (which is purely a graphical thing) and
# a mass (influencing how fast they move after being "fired"
# from a creature).
radius: 25
mass: 0.1
# An egg's incubation time varies randomly in this range.
min_incubation_time: 400
max_incubation_time: 800
# As a newly laid egg moves, its velocity decays: with each
# tick, the velocity is multiplied by velocity_decay. Once
# it gets below min_velocity, the velocity is zeroed.
velocity_decay: 0.98
min_velocity: 0.1
food:
# Food pieces have a radius (which influences collisions)
# and provide a certain amount of energy to the creature
# that eats them.
radius: 7
energy: 30000
ecosystem:
# A "block" is a 1000x1000 square. The entire dish is a
# square whose edges are measured in blocks. The default
# number of blocks per edge is different in the "narjillos"
# app (with graphics) and the "experiment" script (without
# graphics).
blocks_per_edge_in_app: 40
blocks_per_edge_in_experiment: 40
# The dish is populated with eggs and food. The density
# of both is calculated based on the total number of blocks.
eggs_density_per_block: 0.18
food_density_per_block: 0
# Food keeps respawning with an average interval (which is
# calculated based on a single block - so the total interval
# is food_respawn_average_interval_per_block divided by the
# total number of blocks). If food density ever gets over
# a maximum (defined by max_food_density_per_1000_blocks),
# then food stops respawning.
food_respawn_average_interval_per_block: 800000
max_food_density_per_1000_blocks: 0.3
# Every update_food_targets_interval ticks, the creatures
# get a chance to point at a new target.
update_food_targets_interval: 1000
# The initial level for each element (Oxygen, Hydrogen and Nitrogen)
# in the atmosphere. Narjillos breathe by converting each element
# into another, so the maximum theoretical level for an element is
# three times this number, assuming that the other elements drop to
# zero. In practice, the higher this number, the longer it takes to
# change the composition of the atmosphere (other things being equal,
# such as the number of Narjillos in the system). As this number grows,
# the system becomes more "inertial", taking longer to switch, for
# example, from an atmosphere with a prevalence of Oxygen to an
# atmosphere with a prevalence of Hydrogen.
initial_element_level: 1000000000
# The amount of Catalyst in the atmosphere. The Catalyst is used by
# the creatures to convert elements and breathe. If the Catalyst is
# 0, then nobody can breathe.
# The Catalyst is a constant amount - no matter how much of it the
# Narjillos consume during one tick, it's always fully replenished
# at every tick.
# The total amount of Catalyst is subdivided amongst the creatures,
# so the higher this number, the higher the number of creatures that
# can can take full advantage of breathing. In practice, this number
# constrains the amount of creatures that can populate the dish at
# once.
catalyst_level: 100
experiment:
# Every sample_interval_ticks, an experiment reports its
# current status on the console. Every save_interval_seconds,
# it saves its state to an .exp file.
sample_interval_ticks: 10000
save_interval_seconds: 600