Author Topic: Ambitious MB project  (Read 15896 times)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« on: January 11, 2010, 09:42:41 PM »
If anybody is interested in creating a multibot, I'm free for the next few days, so will have time to start a commune bot project. The idea is to have a bot that has several specialized cell types, each of which follows a set behaviour. Feel free to work on your strength, be it creating a competitive cell, creative strategies, communications etc. I don't really care how good you are, the idea is not to make the best bot, or even a bot that can survive against other non-veggies, but to create a diverse and interesting multibot. I can probably handle the main structure; to start, the following cells will need to be implemented:

-Body cell-this will tie everything together, and handle communications, food sharing etc. I should manage this as long as all required inputs and outputs are documented.

-Tentacle cell-the idea is to have these cells spawn a straight line of tentacle cells-the one connected to a body cell is the root, the tip is the feeding cell and the middle ones are tentacles that move the tip. Ideally, they won't generate information, but will be able to read information, so not to disrupt the body cell's mechanism.

-Eye cell-these will feed info into the body cells about food, which then get transmitted through the body and read by the tentacles.

-Brain cell-these cells will read multiple eye cells and send compiled information to the root body cell (not required, but could make it easier)

-Reproduction cell-asexual for now. This bot won't neccessarily interact much with the rest of the bot, but is important as any new cells it spawns must NOT connect to the main organism.

We'll see how we get this bit down before coming up with more elaborate body bits, so we can get a feel of standard interaction techniques.
So who's game?  
« Last Edit: January 11, 2010, 09:43:37 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #1 on: January 11, 2010, 10:03:25 PM »
I should probably clarify the bit about the body cells. The idea is to have a central line of cells that act as a sort of spine/stem cell for the bot; the body cells will then spawn all other kinds of cells. How we do this will probably be random to boot, but can be worked out later.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #2 on: January 11, 2010, 10:05:45 PM »
I'd help but im not very skilled in making regular bots, let alone multi bots. If its ideas you want though you could have your tentacle cells form a defensive bubble around any veggies they capture, kind of like shielding them against other bots and taking advantage of the unlimited nrg they provide.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #3 on: January 11, 2010, 10:11:23 PM »
Doesn't matter if you can make MBs or not, or if you understand all the code. All you need is to know to read tie info (tinX vars) and whatever code you need to write what you want to do. If you've ever done anything involving programming, just think of all the tasks as interfaces. Just tell me what data you need to read, and I'll provide it. I can handle the structure, as long as you handle the behaviour of the individual cells. For example:

'NOTE-I need the x-position for food in port 2, and y-pos in port 3
cond
 *.type .tip =
start
 *.tin2 *.tin3 angle .setaim store
 5 .up store
stop

I would then make sure that this bot gets the information it needs, and is put in the correct part of the organism, and then all you have to do is focus on making the tip move or eat or whatever you want it to do. the Type var can be used to remember what sort of cell you are supposed to be, and just write the name of the cell type as above and I'll integrate it.
« Last Edit: January 11, 2010, 11:09:07 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Ambitious MB project
« Reply #4 on: January 11, 2010, 10:31:18 PM »
Are you starting from scratch, or using something like seasnake as a base?

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #5 on: January 11, 2010, 10:52:58 PM »
I'm going from scratch. I've learned a lot about MB control through recent trial and error experiences, and although I wanted to do this project for ages, only now I believe to be able to make a bot modular enough that people can plug in individual genes without having to completely rewrite everything.

EDIT=> I have the glimmerings of the beginnings of a core structure. The front body bit will only spawn 'head' components, the middle will only spawn up to two 'tentacle' components (later we could change this to lateral nerves to allow for more complex structures), and the back acts as the reproductive component and is capable of growing new body bits, thus making it a body cell itself and creating a new end tip...
...well, that's the plan anyway  

Once somebody starts coding something, I think I'll have enough to start properly designing the bot. Seriously, at this point something simple that moves or turns to look for food and eats will be enough.
« Last Edit: January 11, 2010, 11:07:48 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #6 on: January 11, 2010, 11:09:00 PM »
So the back part of the organism produces the body pieces and the rest are sterile? This could be a good defense against random mutations since you won't have a completely cancerous arm that unfairly steals nrg from the rest of the organism. However how do the individual cells travel from their place of birth to where their needed without getting lost.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #7 on: January 11, 2010, 11:10:55 PM »
Not really. As mentioned above, body bits spawn specialized cells, which in turn may spawn more cells (like tentacles). The back will be the only cell to further the central 'spine' growth/make a new organism.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Ambitious MB project
« Reply #8 on: January 11, 2010, 11:13:35 PM »
Will we use one of the HLL implementations of DB language? Or will we code in DB "assembly"? I thought there was something called pybot at one time to write dbcode in a hll...

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #9 on: January 11, 2010, 11:15:06 PM »
As long as the code is compatible, I don't think it matters. I will put everything together in good ole-fashioned DB code though.
« Last Edit: January 11, 2010, 11:15:16 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #10 on: January 11, 2010, 11:24:08 PM »
Currently I'm watching a giant snake threading itself slowly through a field of veggies   . As sign of progress!

Code: [Select]
'Primordius
'Community MB
'BOT NOTES
'The spine bits will alternate between tie numbers 2 and 3. This allows them to
'communicate both ways. Ties are used to identify each adjacent bot's
'function, and by using .readtie we can than switch between those.


'IO PORT DESCRIPTION
'01-Conspec
'02-Birth control-What is assigned type?
'03-Birth control-What should my tie number be?

'CUSTOM LOCATIONS
'type-what kind of cell am I?
'firsttie-what is the tie ID of the first tie I made?
def type 989
def firsttie 990

'CUSTOM VARS

'TYPE VARS
def head 0
def spine 1
def tail 2

cond
 *.robage 0 =
start
 1221 .out1 store
 1221 .tout1 store
 *.in3 ++ .tie store
 *.in3 ++ .firsttie store
stop

cond
 *.robage 20 =
start
 *.tin2 .type store
stop

cond
 *.tin1 *.tout1 !=
start
 *.tiepres .deltie store
stop

start
 *.firsttie 2 sub sgn abs .out3 store
*.nrg *.body add 15 div *.body sub dup .strbody store
 - .fdbody store
 40 .stifftie store
 5 *.velup sub .up store
 50 .sharenrg store
stop

cond
 *.numties 0 =
 *.nrg 5000 >
 *.robage 20 >
start
 .tail .tout2 store
 1 .out3 store
 .head .type store
 50 .repro store
 628 .aimdx store
stop

cond
 *.type .head =
start
 100 .sharewaste store
   -4 *.eye1 *.eye9 sub sgn 0 floor mult *.eye1 *.eye8 sub sgn 0 floor

mult *.eye1 *.eye7 sub sgn 0    floor mult *.eye1 *.eye6 sub sgn 0

floor mult *.eye1 *.eye5 sub sgn 0 floor mult *.eye1 *.eye4 sub   sgn 0

floor mult *.eye1 *.eye3 sub sgn 0 floor mult *.eye1 *.eye2 sub sgn 0

floor mult 4 *.eye9     *.eye8 sub sgn 0 floor mult *.eye9 *.eye7 sub

sgn 0 floor mult *.eye9 *.eye6 sub sgn 0 floor mult
*.eye9 *.eye5 sub sgn 0 floor mult *.eye9 *.eye4 sub sgn 0 floor mult

*.eye9 *.eye3 sub sgn 0 floor  mult *.eye9 *.eye2 sub sgn 0 floor mult

*.eye9 *.eye1 sub sgn ++ sgn mult add -3 *.eye2 *.eye9 sub   sgn ++ sgn

mult *.eye2 *.eye8 sub sgn 0 floor mult *.eye2 *.eye7 sub sgn 0 floor

mult *.eye2 *.eye6  sub sgn 0 floor mult *.eye2 *.eye5 sub sgn 0 floor

mult *.eye2 *.eye4 sub sgn 0 floor mult *.eye2    *.eye3 sub sgn 0

floor mult *.eye2 *.eye1 sub sgn ++ sgn mult add 3 *.eye8 *.eye9 sub

sgn ++ sgn     mult *.eye8 *.eye7 sub sgn 0 floor mult *.eye8 *.eye6

sub sgn 0 floor mult *.eye8 *.eye5 sub sgn 0   floor mult *.eye8 *.eye4

sub sgn 0 floor mult *.eye8 *.eye3 sub sgn 0 floor mult *.eye8 *.eye2

sub   sgn ++ sgn mult *.eye8 *.eye1 sub sgn ++ sgn mult add -2 *.eye3

*.eye9 sub sgn ++ sgn mult *.eye3    *.eye8 sub sgn ++ sgn mult *.eye3

*.eye7 sub sgn 0 floor mult *.eye3 *.eye6 sub sgn 0 floor mult
*.eye3 *.eye5 sub sgn 0 floor mult *.eye3 *.eye4 sub sgn 0 floor mult

*.eye3 *.eye2 sub sgn ++ sgn   mult *.eye3 *.eye1 sub sgn ++ sgn mult

add 2 *.eye7 *.eye9 sub sgn ++ sgn mult *.eye7 *.eye8 sub     sgn ++

sgn mult *.eye7 *.eye7 sub sgn 0 floor mult *.eye7 *.eye6 sub sgn 0

floor mult *.eye7 *.eye5  sub sgn 0 floor mult *.eye7 *.eye4 sub sgn ++

sgn mult *.eye7 *.eye2 sub sgn ++ sgn mult *.eye7     *.eye1 sub sgn ++

sgn mult add -1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn

++ sgn     mult *.eye4 *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn

0 floor mult *.eye4 *.eye5 sub sgn 0    floor mult *.eye4 *.eye3 sub

sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub    

sgn ++ sgn mult add 1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8

sub sgn ++ sgn mult *.eye4    *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6

sub sgn ++ sgn mult *.eye4 *.eye5 sub sgn 0 floor mult
*.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult

*.eye4 *.eye1 sub sgn ++ sgn     mult add 0 *.eye5 *.eye9 sub sgn ++

sgn mult *.eye5 *.eye8 sub sgn ++ sgn mult *.eye5 *.eye7 sub     sgn ++

sgn mult *.eye5 *.eye6 sub sgn ++ sgn mult *.eye5 *.eye4 sub sgn ++ sgn

mult *.eye5 *.eye3   sub sgn ++ sgn mult *.eye5 *.eye2 sub sgn ++ sgn

mult *.eye5 *.eye1 sub sgn ++ sgn mult add .focuseye store
stop

cond
 *.numties 0 =
start
 .head .type store
stop

cond
 *.type .head =
 *.eyef 0 >
 *.in1 *.out1 !=
start
 *.refxpos *.refypos angle .setaim store
stop

cond
 *.type .tail =
 *.nrg 10000 >
start
 628 .aimdx store
 50 .repro store
 .tail .tout2 store
 .spine .type store
stop

cond
 *.in1 *.out1 !=
 *.eye5 40 >
start
 -6 .shoot store
stop

cond
 *.waste 250 >
 *.type .head =
start
 *.waste .shootval store
 -4 .shoot store
stop
« Last Edit: January 12, 2010, 05:21:12 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #11 on: January 12, 2010, 05:06:40 PM »
Okay, the basic structure is almost complete. I had to relabel 'body' to spine, as the bots were doing funny things to their body mass levels; the only problem I'm having now is to get the damn bots to tie on birth.

EDIT=> I think I fixed the problem. It might make the spine connection only work one way, but the many-to-one inputs should still works using .tieloc and .tieval.

OK, the current bot should be enough to get started. ATM, if you want to design a new cell type, just post the genes along with a description with its position on the bot and I'll try massage it in. Otherwise, improvements on the current bot, such as steering, feeding etc. are also welcome.
« Last Edit: January 12, 2010, 05:18:59 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
Ambitious MB project
« Reply #12 on: January 13, 2010, 11:13:13 AM »
This reminds me, I was trying to modify Seasnake so it would use Peter's "caterpillar" movement scheme. Do you think that would be easy to do? I was thinking of using that as the basis for a 0% bang efficiency evosim. . . The goal is to encourage MB evolution.

Offline Houshalter

  • Bot Destroyer
  • ***
  • Posts: 312
    • View Profile
Ambitious MB project
« Reply #13 on: January 13, 2010, 03:55:13 PM »
I have an idea which im trying at the moment. Its the tentacles. They would sweep around (actually they don't even have to move, just keep up with the main bot.) and snatch up veggies and fire at enemies. when a tentacle grows big enough it could form into a body segment and sprout more tentacles, like a tree grows branchs that grow more brances. This would make reproduction easy since all the bot would have to do to reproduce is to detach one of these branches and send it out on its own. Anyway im working on some of the basic code for them if anyone has ideas or anything.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Ambitious MB project
« Reply #14 on: January 13, 2010, 05:28:07 PM »
Ooh, fascinating. The 'branching out' idea was one I was thinking of putting in later on, as to create a branched 'nerve network'. The tricky bit, though, is coordinating motion in vastly non-linear systems. The original idea of reproduction was to create a new cell and delete the tie it makes, but I think generalizing to breaking off should work. After all, each cell knows its initial tie ID, so if it realizes it broke off from the main body it could easily become a new head. The new tail is a different story altogether...

I can't actually remember Caterpillar. Is it the one that stretches and contracts ties? Easy with two cells, but in such a huge system...
« Last Edit: January 13, 2010, 05:28:58 PM by bacillus »
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan