It's ok, I like helping.

I found the new problem, 971 wasn't increasing with each generation. That should fix it.

`cond`

*.robage 1 =

start

971 inc

stop

I didn't even see this...

Here's one way I would do it it a much more more liberal system - not sure if it's possible here:

Each bot has 4 variables:

A. Personal identifier.

B. The identifier it will give to its next child.

C. The identifier it's parent had.

D. The "no shoot" array.

At Birth:

Add C to D

During Reproduction:

Add B to D

Tell new child to make A it's C

Randomly determine a new B

A. Could just have it store a random number in a memory location, 50-150 are the safest "free" memory locations. So just 9999 rnd 50 store

B. Give the child the number so put a number in 971 - 990, 9999 rnd 973 store.

C. Have the parent post its A in another hand-me-down like 974. Or in out3

D. I have no clue how to implement arrays in dna.

Could just have the offspring code be in a fixed range. Like +- 100 from parent ID.

I think what you have going on now would be far less complicated, we already have it coded anyways...

On a whole different topic...

**(Tutorial Mode)** you can ask me what ever questions you have. Sorry if I confuse you.

`'You can define custom names for memory locations and you can make constants.`

' Just put def followed by a name then memory number to name a location

def count 51

' That names the memory location 51, count

def age 100

' Here I set the constant "age" to 100

' Use custom names like any other sysvar, *.variable .variable

' Only refer to constants by .constant (else you'll get errors with *.constant)

' Example

cond

' When bot age is greater than the constant age(100) (use .age to refer to the 100)

' (*.robage 100 >)

*.robage .age >

start

' Look at the variable count(51) add 3, then store that back into count(51)

' (*51 3 add 51 store)

*.count 3 add .count store

stop

To help with debugging, you can click on a bot and open up it's console, here you can see what genes activate, set the energy, and look at the eyes.

You can also look at the bot's memory by opening the info panel and pressing memory, and looking over the dna in the dna panel will show you if you make a typo by usually saying "0" instead of ".aimdx" ect. You can also move bots around in the sim window.

For coding, I have found that looking at other

**non-complex** and preferably commented bot code helps. Also, commenting someone else's bot dna is a good way to see how things work.

Try figuring out how "SexBot" by d-EVO works.

http://forum.darwinbots.com/index.php/topic,3037.0.htmlIn bot dna, the bot's controls and senses are operated by referring to 1000 memory addresses. Storing a number in one makes the bot do something.

The * tells the dna what is currently in that memory address. The words on the sysvar page are just for us humans. Saying .up means use memory location 7.

Saying *.up says look at what is in memory location 7. That's why we use *.eye5, it says "what does eye 5 see" Which is technically "what's in memory location 505"

The stack is really crazy to me also. For some reason, numbers in dna get put in a pile that is worked on and stays there till the cycle ends.

"5 5 5 add store" would put three 5's on the stack, then add the last two numbers on the stack (the second and third 5), then store the first number on the stack (the first 5) in the result of 10. It's the same as:

5 10 store

The stack is not confined to just one gene or action either.

`cond`

*.eye1 *.eye9 >

start

mult -145

stop

cond

*.eye9 *.eye1 >

start

mult 145

stop

cond

start

.aimdx store

stop

This code will get rid of previous stuff on the stack with "mult" (I don't know how...) and then place a number. The last gene will use the last number placed and store it in .aimdx.

I would not worry about figuring out how condition-less or single store bots work until you get a feel for the simple stuff.

Condition-less (Less Boo!!) (I made This

)

`cond`

start

' Ident

123 .out1 store

'Move

2 .up

*.eye5 0 sub sgn abs 1 sub -

*.out1 *.in1 sub sgn abs 1 sub -

add sgn abs mult

store

'See

-140 .aimdx

*.eye1 *.eye9 sub sgn 0 floor mult

store

140 .aimdx

*.eye9 *.eye1 sub sgn 0 floor mult

store

-15 .aimdx

*.eye4 *.eye6 sub sgn 0 floor mult

store

15 .aimdx

*.eye6 *.eye4 sub sgn 0 floor mult

store

' Follow

*.refvelup 20 add .up

*.eye5 0 sub sgn 0 floor mult

*.out1 *.in1 sub sgn abs mult

store

*.refveldx .dx

*.eye5 0 sub sgn 0 floor mult

*.out1 *.in1 sub sgn abs mult

store

'Shoot

-1 .shoot

*.eye5 40 sub sgn 0 floor mult

*.out1 *.in1 sub sgn abs mult

store

*.refvelup .up

*.eye5 40 sub sgn 0 floor mult

*.out1 *.in1 sub sgn abs mult

store

0 .aimdx

*.eye5 40 sub sgn 0 floor mult

*.out1 *.in1 sub sgn abs mult

store

'Conspec

*.refaim .setaim

*.out1 *.in1 sub sgn abs 1 sub - mult

store

'Repro

30 .repro

*.nrg 10000 sub sgn 0 floor mult

store

stop

end

Single Store (Boo!!)

**Viewer's Discretion is Advised!**` start`

*.tiepres *.numties sgn mult 100 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor -- abs mult add 628 rnd *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor *.eye5 30 sub sgn 0 floor mult *.eye5 sgn *.myeye *.refeye sub sgn abs -- abs mult add sgn mult add 40 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor mult *.eye5 30 sub sgn 0 floor -- abs mult add -6 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub abs 0 floor -- abs mult *.myeye *.refeye sub sgn abs mult *.eye5 40 sub sgn 0 floor mult add -60 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.eye5 sgn -- abs mult *.eye9 sgn mult add 40 *.vel sub *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.eye5 sgn -- abs mult *.eye9 sgn -- abs mult add 50 *.eye5 sub 0 floor over *.vel sub *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.myeye *.refeye sub sgn abs mult *.eye5 sgn abs mult *.eye5 40 sub sgn 0 floor -- abs mult add 467 *.numties sgn mult 313 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor -- abs mult add 5 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor *.eye5 30 sub sgn 0 floor mult *.eye5 sgn *.myeye *.refeye sub sgn abs -- abs mult add sgn mult add 300 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor mult *.eye5 30 sub sgn 0 floor -- abs mult add 7 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.myeye *.refeye sub sgn abs mult *.eye5 40 sub sgn 0 floor mult add 6 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.eye5 sgn -- abs mult *.eye9 sgn mult add 1 *.numties sgn -- abs mult *.body 50 sub sgn 0 floor mult *.nrg 2000 sub sgn 0 floor -- abs mult *.eye5 sgn -- abs *.eye9 sgn -- abs mult *.myeye *.refeye sub sgn abs *.eye5 sgn abs mult *.eye5 40 sub sgn 0 floor -- abs mult add sgn mult add store

stop