Code center > Darwinbots3
Bot testbed
spike43884:
--- Quote ---Yes they'll be reworked. One of the archetypes I'm working towards is an "ant" bot that can make colonies by digging out shapes. Probably also, in addition to nrg, bots need some physical substance (ie: nutrients) to grow that they can only get from shapes. From some light research, it seems a large part of why rain forests are so biodiverse is that they're energy rich but nutrient poor, so I want to be able to simulate that.
I'm not sure of the specifics yet, but my thought is basically that when a dead bot decays, it leaves behind inorganic blobs that can float around in the sim. Blobs that touch each other stick together, so over time blobs will combine together to form larger and larger shapes. Something like that.
--- End quote ---
In a rainforest style sim most energy would be stored in the bots, not shapes (I do geography, that premise is part of why deforestation of the rainforest is SO bad as growing it back isn't too easy, when the trees are gone, so are the nutrients). Perhaps considering bots and shapes have a volume, express nutrients within them as a "density/concentration", and then when the decay or are dug out, when volume decreases by x amount one unit of nutrient is released. (E.g. when the concentration of glucose is 1 part per 10, once volume decreases by 1, one glucose will be emitted). That system could allow for multiple nutrients to exist simultaneously if you so wished.
Shadowgod2:
as i understand it that would be the case if you so wished it. consider shapes as the decaying bots with all the energy and nutrients in the bot still there but locked up till another bot picks it up. the nutrients might be everywhere but concentrated in the shapes and living bots, where in the open the nutrients can be livable but not necessarily enough to grow much. at the start of a sim that would be a different story but as time went on less so forcing evolution to diversify and keep those nutrients in circulation in the environment.
i have figured out mirroring, now i can work on the waves..
seg = segment numbers:
const seg 120
seg 2 div 1 add { 10 rand swap store } loop
seg 2 div 1 add { dup ref swap neg seg add 2 add store } loop
spike43884:
--- Quote from: Shadowgod2 on April 06, 2017, 06:41:01 PM ---as i understand it that would be the case if you so wished it. consider shapes as the decaying bots with all the energy and nutrients in the bot still there but locked up till another bot picks it up. the nutrients might be everywhere but concentrated in the shapes and living bots, where in the open the nutrients can be livable but not necessarily enough to grow much. at the start of a sim that would be a different story but as time went on less so forcing evolution to diversify and keep those nutrients in circulation in the environment.
--- End quote ---
Yep, although at the beginning of a sim, the larger proportion of nutrients would be outside of bots (either in shapes or in the general environment). As more life (bots/veggies) exists in a sim, the pool of nutrients is drained (unless an option to periodically add nutrients is added).
That would allow a self-limited mechanism to be able to be implemented as to the amount of bots or veggies that can be sustained by an area, by causing a sim to slowly tend towards a rain-forest style environment if all other conditions are favourable, causing a huge drain on ambient (shape-locked or free) nutrients, allowing for growth to only usually occur as a result of death of other bots or veggies.
I feel it'd also help evolution sims a bit too, as it wouldn't be a case of getting a huge population, but of having a sustainable population and ensuring each bot is effective.
Numsgil:
I've uploaded a new version at the top of the thread (A01330) that fixes the render thread crashes. If you notice any more, send them my way (note you can copy+paste from the exception dialog if the repro is awkward).
Shadowgod2:
i tried the randomizing mirroring code i had above (which i realized wasn't complete for some reason and had fixed) and the render crashed so here's the log:
--- Code: ---RootLevelException = {
Description = "System.Exception",
Message = "Encountered another boundary edge when building monotone polygon for boundary edge.",
Source = "Annulus.CSG.StraightSkeletonDecompose",
Stack Trace = {
File = "\Modules\Annulus\Annulus\CSG\StraightSkeleton.cs:137:25",
File = "\Modules\Blacklight\Core\Core\Drawables\Polygon.cs:48:13",
File = "\Modules\Darwinbots3\Bot.Testbed\Renderer.cs:200:17",
File = "\Modules\Darwinbots3\Bot.Testbed\Renderer.cs:101:13",
File = "\Modules\Darwinbots3\Bot.Testbed\Renderer.cs:149:17",
},
Data = {
radiiOut = {
0 = "0.0199909991 //0x3F9478853D64D7A4",
1 = "0.0109990999 //0x3F8686B23330D729",
2 = "0.0199909991 //0x3F9478853D64D7A4",
3 = "0.0199909991 //0x3F9478853D64D7A4",
4 = "0.0159945995 //0x3F9060E3665F5248",
5 = "0.0139963996 //0x3F8CAA24F5B91F34",
6 = "0.0179927993 //0x3F926CB451E214F6",
7 = "0.0199909991 //0x3F9478853D64D7A4",
8 = "0.0119981998 //0x3F8892831EB399D7",
9 = "0.0199909991 //0x3F9478853D64D7A4",
10 = "0.0119981998 //0x3F8892831EB399D7",
11 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
12 = "0.0179927993 //0x3F926CB451E214F6",
13 = "0.0129972997 //0x3F8A9E540A365C85",
14 = "0.0179927993 //0x3F926CB451E214F6",
15 = "0.0169936994 //0x3F9166CBDC20B39E",
16 = "0.0179927993 //0x3F926CB451E214F6",
17 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
18 = "0.0189918992 //0x3F93729CC7A3764C",
19 = "0.0169936994 //0x3F9166CBDC20B39E",
20 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
21 = "0.0169936994 //0x3F9166CBDC20B39E",
22 = "0.0129972997 //0x3F8A9E540A365C85",
23 = "0.0129972997 //0x3F8A9E540A365C85",
24 = "0.0199909991 //0x3F9478853D64D7A4",
25 = "0.0169936994 //0x3F9166CBDC20B39E",
26 = "0.0159945995 //0x3F9060E3665F5248",
27 = "0.0139963996 //0x3F8CAA24F5B91F34",
28 = "0.0119981998 //0x3F8892831EB399D7",
29 = "0.0159945995 //0x3F9060E3665F5248",
30 = "0.0109990999 //0x3F8686B23330D729",
31 = "0.0109990999 //0x3F8686B23330D729",
32 = "0.0139963996 //0x3F8CAA24F5B91F34",
33 = "0.0179927993 //0x3F926CB451E214F6",
34 = "0.0159945995 //0x3F9060E3665F5248",
35 = "0.0109990999 //0x3F8686B23330D729",
36 = "0.0199909991 //0x3F9478853D64D7A4",
37 = "0.0159945995 //0x3F9060E3665F5248",
38 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
39 = "0.0129972997 //0x3F8A9E540A365C85",
40 = "0.0189918992 //0x3F93729CC7A3764C",
41 = "0.0189918992 //0x3F93729CC7A3764C",
42 = "0.0139963996 //0x3F8CAA24F5B91F34",
43 = "0.0169936994 //0x3F9166CBDC20B39E",
44 = "0.0169936994 //0x3F9166CBDC20B39E",
45 = "0.0199909991 //0x3F9478853D64D7A4",
46 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
47 = "0.0119981998 //0x3F8892831EB399D7",
48 = "0.0139963996 //0x3F8CAA24F5B91F34",
49 = "0.0129972997 //0x3F8A9E540A365C85",
50 = "0.0189918992 //0x3F93729CC7A3764C",
51 = "0.0129972997 //0x3F8A9E540A365C85",
52 = "0.0139963996 //0x3F8CAA24F5B91F34",
53 = "0.0119981998 //0x3F8892831EB399D7",
54 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
55 = "0.0199909991 //0x3F9478853D64D7A4",
56 = "0.0169936994 //0x3F9166CBDC20B39E",
57 = "0.0169936994 //0x3F9166CBDC20B39E",
58 = "0.0139963996 //0x3F8CAA24F5B91F34",
59 = "0.0189918992 //0x3F93729CC7A3764C",
60 = "0.0189918992 //0x3F93729CC7A3764C",
61 = "0.0129972997 //0x3F8A9E540A365C85",
62 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
63 = "0.0159945995 //0x3F9060E3665F5248",
64 = "0.0199909991 //0x3F9478853D64D7A4",
65 = "0.0109990999 //0x3F8686B23330D729",
66 = "0.0159945995 //0x3F9060E3665F5248",
67 = "0.0179927993 //0x3F926CB451E214F6",
68 = "0.0139963996 //0x3F8CAA24F5B91F34",
69 = "0.0109990999 //0x3F8686B23330D729",
70 = "0.0109990999 //0x3F8686B23330D729",
71 = "0.0159945995 //0x3F9060E3665F5248",
72 = "0.0119981998 //0x3F8892831EB399D7",
73 = "0.0139963996 //0x3F8CAA24F5B91F34",
74 = "0.0159945995 //0x3F9060E3665F5248",
75 = "0.0169936994 //0x3F9166CBDC20B39E",
76 = "0.0199909991 //0x3F9478853D64D7A4",
77 = "0.0129972997 //0x3F8A9E540A365C85",
78 = "0.0129972997 //0x3F8A9E540A365C85",
79 = "0.0169936994 //0x3F9166CBDC20B39E",
80 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
81 = "0.0169936994 //0x3F9166CBDC20B39E",
82 = "0.0189918992 //0x3F93729CC7A3764C",
83 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
84 = "0.0179927993 //0x3F926CB451E214F6",
85 = "0.0169936994 //0x3F9166CBDC20B39E",
86 = "0.0179927993 //0x3F926CB451E214F6",
87 = "0.0129972997 //0x3F8A9E540A365C85",
88 = "0.0179927993 //0x3F926CB451E214F6",
89 = "0.0149954995 //0x3F8EB5F5E13BE1E1",
90 = "0.0119981998 //0x3F8892831EB399D7",
91 = "0.0199909991 //0x3F9478853D64D7A4",
92 = "0.0119981998 //0x3F8892831EB399D7",
93 = "0.0199909991 //0x3F9478853D64D7A4",
94 = "0.0179927993 //0x3F926CB451E214F6",
95 = "0.0139963996 //0x3F8CAA24F5B91F34",
96 = "0.0159945995 //0x3F9060E3665F5248",
97 = "0.0199909991 //0x3F9478853D64D7A4",
98 = "0.0199909991 //0x3F9478853D64D7A4",
99 = "0.0109990999 //0x3F8686B23330D729",
},
},
}
--- End code ---
hopefully ill get a basic swimmer tonight.. ill edit to here if no one posts like usual..
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version