Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - spike43884

Pages: [1] 2 3 ... 43
1
I suspect PHP.
Though, I'm just too out of touch with web programming and haven't ever properly done PHP. You'd have to check really.

If we get a proper web programmer down here, it'd be nice to have an internet page where we can see what's happening on an internet sim.

2
Darwinbots3 / Re: Bot testbed
« on: April 13, 2017, 04:45:09 AM »
Where'd 9600 come from?
Anyway, 9000 seems a pretty nice value.

Okay, I might just go with 9000, even though I think 9600 is better in a lot of ways, since 9000 is both a round number and evenly divided by 360, which should make math easier for humans.

In terms of where they come from: the prime factors help to determine how many different ways you can divide up the full circle evenly.  3, 4, and 6 are important, since triangles, squares, and hexagons form a full tesselation of the plane, and are the only regular shapes to do so, so you need some multiple of 12 at least (the lowest common multiple of 3, 4, and 6).

If you ever wondered why there's 360 degrees in a circle, it's because it's the closest round number to 365 in base 60 (which was the base the Sumerians used thousands of years ago).  Their number system was base 60 because it makes math easy: 60 divides cleanly in to all sorts of different divisors.  For Darwinbots, we have a similar requirement.  The more ways there are to divide the circle in to even parts, the more different symmetries are possible, or at least easy.  The prime factors show you the raw ingredients to combine to divide the circle up.

2 is an important prime factor, because splitting things in to halves, or quarters, or sixteenths, etc. are very natural ways to break things apart, and can easily mimic the way cells in biology cleave in half during reproduction.  3 is important, but multiple copies of 3 aren't so much: being able to split things in to thirds and being able to represent 30, 45, and 60 degrees is important, but being able to represent 40 degrees or divide things in to 9ths isn't very important.

Sunweaver is sort of built to be base 10, to make math easy for humans, so 5 is an important factor in so far as 10 is.

But 7 isn't an important factor.  It would let you split circles in to 7ths, but there probably isn't much call for that.    As the prime factors get larger, they become less useful.  About the only use 101 would be for is if the bot had 101 segments.  Otherwise there's not much call for splitting a circle evenly in to 101 pieces.

So generally speaking finding a good number is balancing the needs for 2, 3, and 5 as prime factors, taking up as much of the [0,9999] range as possible, and making it easy for humans to do the math.

I knew about prime factors, I just meant the number 9600 as an option in and of itself. It didn't divide cleanly at all into 360 so even as an option for better primes seemed a bit unusual.

I suspect actually having 7 could be a useful prime. Less useful then 2, 3 and 5, however there's still a reasonable chance a bot could have 7 segments, 11 and 13 and 17 being reasonably useful as it's not unimaginable for a bot to have that many segments, and in the case of multi-bots. As you get larger primes less numbers use them, however these are just the first few primes so will crop up regularly.

3
Darwinbots3 / Re: Bot testbed
« on: April 11, 2017, 08:53:22 AM »
How about one full circle = 9000 units.  That's 360 degrees * 25, which gives prime factors of 2^3, 3^2, 5^3.  And it's relatively easy to remember.  By comparison, 9720 gives prime factors of 2^3, 3^5, 5.

Another option is 8640, which is 360 * 24, which has prime factors 2^6, 3^3, 5.  Not as easy to remember as 9000, but lets you split the full circle in to 64 equal slices instead of just 8, at the cost of not being able to slice things in to as many 5ths.

Yet another option is 9600.  That's not a multiple of 360 degrees, but it does have a lot of nice dividers.  Its prime factors are 2^7, 3, 5^2.

Where'd 9600 come from?
Anyway, 9000 seems a pretty nice value.

If you want to get close to 9999 then the following options:
9360 is 360*26 giving 2^4,3^2, 5 and 13.
9720 as you mentioned is 360*27 giving 2^3, 3^5 and 5 however is a bit of a weirder one for remembering.
9900 is 55*180 giving 2^2,3^2, 5^2 and 11. (quite a nice pattern of squares there...)
9990 is 111*90 giving 2, 3^3 , 5 and 37.

I don't think there is really many other sensible alternatives as multiples of 45,90,180 or 360

4
Darwinbots3 / Re: Bot testbed
« on: April 10, 2017, 04:25:40 AM »
I decided to pull out desmos just to try a few sine graphs.

Equation 1 satisfies full wavelengths for 999 and 9990.
Equation 2 satisfies fitting a number of half wavelengths for 999 and 9999.
Equation 3 satisfies fitting a full number of wavelengths for 9999.
Equation 4 satisfies fitting a full number of wavelengths for 999 and 9999.



In this case 1 wavelength = 999. For that type of equation within a sine function the wavelength = the denominator

5
Darwinbots3 / Re: Bot testbed
« on: April 09, 2017, 04:46:30 PM »
i have me a crude swimmer :D finally..

Ah, it's pretty sweet :)  I haven't started with fluid stuff yet (fixing all the crashes you've been finding), but soon.

Quote from: spike43884
Do 9900 perhaps as it's a multiple of 180 (which is half of 360) -> 55*180 = 9999

Problem is you can't represent 45 degrees if 360->9900 (since 9900 doesn't divide evenly in to 8 parts), and that's a fairly important angle.

Quote
Also, I can't imagine you using 9999 memory locations (though, I may be wrong) so if you then made it so memory locations greater than 9900 (those which can't standardly be selected by cos/sin) as custom memory locations, for people to store their own data in (including epigenetic locations?) - 99 in most cases should be enough.

At the moment there are only 999 memory locations.  I'll probably expand that to 9999 at some point, but point is don't confuse how many memory slots there are (999) with what values they can store ([-9999, 9999]).

At some point I'll reserve a large contiguous memory block for user use.  At the moment I'm not sure how many sysvars I'll need for normal bot stuff yet, so I don't want to jump on to segmenting up the memory just yet.

Ahh k.
I just think trying to achieve a slightly nicer number to mark the end of sin/cos range might be better, so that people can memorise the division quicker to make coding bots a bit easier.

I can't imagine you needing even 999 memory slots, although expanding early on might be best just to ensure you don't run out, and so it doesn't end up with dedicated free slots sandwiched inbetween slots defined to a sysvar.


6
Darwinbots3 / Re: Bot testbed
« on: April 09, 2017, 04:14:37 AM »
I'm not against changing the range, as long as it's a multiple of 360 (so the mapping to degrees is easy).  How do people feel about mapping [0, 360] degrees to [0, 9720], since the max range of memory is 9999?  I wouldn't want to go higher, even though the stack has 9 digits, since you couldn't store the result easily in memory.

Do 9900 perhaps as it's a multiple of 180 (which is half of 360) -> 55*180 = 9999

You can't get any closer to 9999 via 90, 45 or 22.5 multiples.
Also, I can't imagine you using 9999 memory locations (though, I may be wrong) so if you then made it so memory locations greater than 9900 (those which can't standardly be selected by cos/sin) as custom memory locations, for people to store their own data in (including epigenetic locations?) - 99 in most cases should be enough.

7
Darwinbots3 / Re: Bot testbed
« on: April 07, 2017, 04:18:05 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.

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.

8
Darwinbots3 / Re: Bot testbed
« on: April 06, 2017, 05:28:34 PM »
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.

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.

9
Darwinbots3 / Re: Bot testbed
« on: April 05, 2017, 11:59:54 AM »
Ahh I understand the intentions for simplifying things.
For finite loops, I'm not sure you need code for that, you can just make repetitions of DNA to loop with any checks needed. Then it prevents easy setting up of huge loops, and shows truly how long a bots DNA is.

A few quick questions - Will bots be able to stick to things, like ties do in DB2, and will they be able to stick to "shapes" or such? Also, are shapes going to be reworked at all, perhaps being able to have some extra properties of their own like buoyancy or mass (allowing pushing of shapes by bots)?

10
Evolution and Internet Sharing Sims / Re: duel sim eco
« on: April 05, 2017, 11:54:45 AM »
you mean like my alga? lol
If that 900-odd memory location is to do with seeing other members of the species, yeah.

I'd also love to setup a bot which can form a string and be properly bouyant...Ah, so many things to do!

11
Darwinbots3 / Re: Bot testbed
« on: April 03, 2017, 02:08:07 PM »
Just partway through reading up that sunweaver manual file... I came up with a few ideas for changes, it'd be pretty sweet if you were able to implement them (if they haven't been yet)

One nice thing would be to include tan in mathematical operators (we currently only have sine and cosine), a 'proportional to' operator, and perhaps some sort of support for percentiles? I'd quite like to also see factorials, perhaps shortcuts for some constants (like pi, the golden ratio, eulers constant and so forth) - Some distinguishing between vector and scalar products would be quite useful too I do think. A couple of probability functions in DNA so we don't have to rely on total randomness...

Finally, and deviating from the maths side of things, a "return to line __" function would be quite nice to force part of the DNA to rerun...

12
Evolution and Internet Sharing Sims / Re: duel sim eco
« on: April 03, 2017, 01:28:51 PM »
well its not really rock solid but definitely helps. i've actually found that animal_min.. and alga_min.. aren't very compatible with each other which is why i made a alga that was.. you can get a sim with them though but it has to be huge weighed more towards the alga and the sim would run very slow...

also i just looked at the description of the mutations sim in red and its not far off from what i do.. definitely needs an update since the chloroplasts... i'll start one up..


i also let the sims interact a little and i think i need to start over because even though mutations seem to go well before it almost seemed to have stopped for algas in one sim and animals in the other before i interacted them... but was still interesting to watch happen.

I found that alga can be a bit weak at times too...
I've been trying to force an alga to reproduce a couple of times quite quickly if no other alga's surround it (similar to a spore of fungus or plant seed growing) and then stay stably growing in a cluster.

13
The Starting Gate / Re: All Hunter 2.1 [F1 - Spike43884]
« on: April 03, 2017, 01:24:56 PM »
Alright dude, it will be a while, I want to add a couple of my evolutions in here a well, then I will run a proper F1 league and a MB league with all these new bots.

Thanks for posting bots again btw. It was kind of dead in here, at least in this specific section of the forum.
Oh, and sorry for not including your crossover of FF and QuickDraw, it was kind of a pointless hack and ran too slow for me to care.
Ah don't worry, can't wait to see the new leagues.
It'd be nice if we could try get a few folks interested in DB again, I tried to pull some from a sciency forum a good few months back but nobody seemed to notice.

I'm hoping at some point to try and get a bot in the medal tables (1st, 2nd or 3rd) in at least on of the leagues, although I can never understand the code in moonfishers bots.

14
The Starting Gate / All Hunter 2.1 [F1 - Spike43884]
« on: March 26, 2017, 09:12:17 AM »
Quick n' dirty upgrade to my classic 'All Hunter'. Took a repro gene from another bot and dragged in just a couple of gimmick's genes. It's not able to last out quite so long so dies against some of the weaker F1 bots, but it does win against a notable proportion of the other F1 bots, with the exception of moonfisher's top 3 bots. Would love to see how it'd fair in the next F1 League.

Code: [Select]
'All Hunter
'By Spike43884
'
'Grabbed some gimmicks from, Gimmick! (And a repro gene from someone)
'Interestingly it loses against some lower-ranking bots, even though it wins against a good chunk of the higher ranking ones (with exception to top 3, those superbots from moonfisher).
'I suspect what has occurred, is that while it's capacity to fight in a crowded arena quickly is improved, it can't last out too long, so the non-aggressive bots outlive it instead.


def attack 50
def hunt 51

'Low Priority (WASTE REMOVAL)
cond
*.waste 100 >=
start
-4 .shoot store
*.waste .shootval store
stop


'Initialisation (EYES)
cond
*.robage 2 <
start
 135 .eye1width store
 135 .eye2width store
 135 .eye3width store
 135 .eye4width store
 15 .eye5width store
 135 .eye6width store
 135 .eye7width store
 135 .eye8width store
 135 .eye9width store
 410 .eye1dir store
 300 .eye2dir store
 190 .eye3dir store
 80 .eye4dir store
 0 .eye5dir store
 -80 .eye6dir store
 -190 .eye7dir store
 -300 .eye8dir store
 -410 .eye9dir store
stop


'Gene 1 No food = Hunt
cond
*.eye1 0 =
*.eye2 0 =
*.eye3 0 =
*.eye4 0 =
*.eye5 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
*.hunt 0 =
start
157 rnd .aimdx store
1 .hunt store
stop


'Gene 2 No food & Turned = Move
cond
*.eye1 0 =
*.eye2 0 = and
*.eye3 0 = and
*.eye4 0 = and
*.eye5 0 = and
*.eye6 0 = and
*.eye7 0 = and
*.eye8 0 = and
*.eye9 0 = and
*.hunt 1 = and
start
15 .up store
2 .hunt store
stop

cond
*.eye1 0 =
*.eye2 0 =
*.eye3 0 =
*.eye4 0 =
*.eye5 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
*.hunt 2 =
start
10 .up store
3 .hunt store
stop

cond
*.eye1 0 =
*.eye2 0 =
*.eye3 0 =
*.eye4 0 =
*.eye5 0 =
*.eye6 0 =
*.eye7 0 =
*.eye8 0 =
*.eye9 0 =
*.hunt 3 =
start
10 .up store
0 .hunt store
stop


' Gene 1 Food Finder (waiting)
cond
*.eye1 sgn
 *.eye2 sgn add
 *.eye3 sgn add
 *.eye4 sgn add
 *.eye5 sgn add
 *.eye6 sgn add
 *.eye7 sgn add
 *.eye8 sgn add
 *.eye9 sgn add 0 =
*.refeye *.myeye = or
start
10 rnd .aimdx store
stop


'Gene 2 Food Sighted
'*********************
cond
*.refeye *.myeye !=
*.eyef 0 !=
start
1 .attack store
stop

cond
*.refeye *.myeye =
*.eyef 0 = or
start
0 .attack store
stop

cond
*.eye1 0 >
*.attack 0 =
start
550 .aimdx store
stop

cond
*.eye2 0 >
*.attack 0 =
start
405 .aimdx store
stop

cond
*.eye3 0 >
*.attack 0 =
start
260 .aimdx store
stop

cond
*.eye4 0 >
*.attack 0 =
start
115 .aimdx store
stop

cond
*.eye6 0 >
*.attack 0 =
start
115 .aimsx store
stop

cond
*.eye7 0 >
*.attack 0 =
start
260 .aimsx store
stop

cond
*.eye8 0 >
*.attack 0 =
start
405 .aimsx store
stop

cond
*.eye9 0 >
*.attack 0 =
start
550 .aimsx store
stop
'*********************


' Gene 3 Chase Food
cond
*.eye5 0 >
*.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop

'Shot Regulation
cond
*.nrg 200 >
start
16 .shootval store
stop

cond
*.nrg 100 <=
start
0 .shootval store
stop


'Shell Regulation
cond
*.shell 500 <
start
'make shell
50 .mkshell store
stop


' Gene 4 Eat Food
cond
*.eye5 50 >
*.refeye *.myeye !=
start
-1 .shoot store
 *.refvelup .up store
stop


' Gene 5 Avoiding Family
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 314 rnd .aimdx store
stop


' Gene 6 Recombine
cond
*.robage 0 =
*.numties 0 =
start
1 .tie store
stop


'Runaway Gene
cond
*.pain 250 >
start
250 .sx store
stop


'Chameleon Genes
cond
*.in1 0 !=
*.in1 *.out1 !=
start
*.in1 .out1 store
stop
cond
*.in2 0 !=
*.in2 *.out2 !=
start
*.in2 .out2 store
stop
cond
*.in5 0 !=
*.in5 *.out5 !=
start
*.in5 .out5 store
stop


' Gene 7 Reproduce
cond
*.nrg *.body 10 mult add 2300 >
start
40 .repro store
stop


' Gene 8 Singulise
cond
 *.numties 0 !=
start
.deltie inc
.deltie inc
stop
end

15
Veggies / Algamomenta
« on: March 25, 2017, 06:37:48 AM »
I just decided to run my first DB sim in a while, and found a veggie I didn't release (no idea why). Anyway, it'd appear to be more effective than the standard ol alga. In my current simulations its population shoots up fairly rapidly, drops a bit, shoots up again pretty quick, then gradually steadily increases. It forms nice little clusters too. It's reproduction works quite nicely off a toggle between normal and cancerous, it seems a nice balance for a veg.

Code: [Select]
'Algamomenta (Veggie)
'By Spike43884


def count 175


'Gene 1 Chloroplast Making
cond
 *.chlr *.light <
start
200 .mkchlr store
stop


'Gene 2 Virus Defences
cond
*.waste 5000 <
start
*.nrg 400 div .mkslime store
stop


'Gene 3 Reproduction (Normal)
cond
 *.nrg 3000 >
 *.count 3 <
start
 30 .repro store
 20 .aimdx store
 10 rnd 2 rnd 1 add mult 5 add .dn store
 *.count 1 add .count store
stop


'Gene 4 Reproduction (Cancerous)
cond
 *.count 3 =
 *.nrg 300 >
start
 0 .count store
 10 .repro store
 15 .repro store
 20 .repro store
 25 .repro store
 1 .fixpos store
stop


'Gene 5 Tie Destruction
cond
 *.robage 1 =
start
 .deltie inc
stop


'Gene 6 Coagulation
cond
 *.refties *.myties =
start
 .tie inc
 *.tiepres .tienum
stop


'Gene 7 Tie Handling
cond
 *.numties 0 !=
start
 90 .stifftie store
 300 rnd 1 rnd 1 add mult 1 rnd 1 add div .fixlen store
 *.numties 20 mult 5 rnd 1 add mult 2 rnd 1 add div .fixang store
stop


'Gene 8 Old Age, Poisoning or Pain
cond
 *.robage 1500 >
 *.poisoned 0 !=
 *.poisoned 0 != and or
 *.pain 100 > or
start
 5 .repro store
 10 .repro store
 15 .repro store
 20 .repro store
 25 .repro store
 30 .repro store
 35 .repro store
 40 .repro store
 45 .repro store
 50 .repro store
 55 .repro store
 60 .repro store
 65 .repro store
 70 .repro store
 75 .repro store
 80 .repro store
 85 .repro store
 90 .repro store
 95 .repro store
stop


end

Pages: [1] 2 3 ... 43