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.


Topics - bacillus

Pages: [1] 2 3 ... 6
1
DNA - General / SS (Single Store) Bot Guide
« on: March 14, 2014, 06:47:14 PM »
I just got asked by MysticalDumpling to make a SS Bot guide. Sounded like a fun exercise, so I'll do my best, but bear in mind I haven't touched DB in around three years.

The Inofficial SS Guide 1.0

Step 1: Conditions

The most important, and hardest part, of writing a SS bot, is writing up your conditions. I'll start with some simple examples and move from there:

Code: [Select]
*.eye5 40 sub sgn 0 floor
This statement is equivalent to *.eye5 40 >. How?

First, we subtract 40 from *.eye5; if *.eye5 was larger than 40, the value will be negative, if it was equal to 40, zero, and if it was less than 40, negative. the sgn operator reduces these possibilities to {-1, 0, 1}. Finally, the floor multiplier folds -1 and 0 into 0. End result is 0 if it's less than or equal, or 1 if it's greater.

Here's some more examples:

Code: [Select]
*.refeye *.myeye sub sgn abs
*.refeye *.myeye !=. Same deal as before. the sub sgn reduces us to {-1, 0, 1}, depending on whether *.refeye is smaller, equal, or greater than *.myeye, respectively. abs turns -1 into 1, so we have 0 if they're equal, and 1 if they're not equal.

Code: [Select]
*.refeye *.myeye sub sgn abs -- abs
*.refeye *.myeye =. The same example as above, but inverted.  -- abs is a very handy tool, as it inverts the result of a condition (i.e. it's our NOT operator).

Step 2: Compounding Conditions

This step's actually fairly easy. Once you have all your conditions written out, you AND them together by multiplying their values, like so:

Code: [Select]
2000 *.nrg sub sgn 0 floor
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult

We'll only get 1 if both the conditions are one, otherwise the result is 0.

OR isn't much tricker. We add the conditions together and apply the abs operator.

Code: [Select]
2000 *.nrg sub sgn 0 floor
*.refeye *.myeye sub sgn abs add abs
39 *.eye5 sub sgn 0 floor add abs

XOR's the only tricky one here. We need to check that the sum of the two conditions is exactly one. add -- abs will give us 0 if that's true and 1 otherwise, so we invert it using the NOT operator (-- abs):

Code: [Select]
2000 *.nrg sub sgn 0 floor
*.refeye *.myeye sub sgn abs add -- abs -- abs
39 *.eye5 sub sgn 0 floor add add -- abs -- abs

(Does this even come up?  :huh:)

Step 3: Applying Conditions

Short and simple. Just string your conditions together, then multiply the target value by it:

Code: [Select]
2000 *.nrg sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult

Step 4: Building Your Bot

The part you really wanted to get to! I honestly can't remember too much about this, so I'll give you the tools to string the bots together and leave it to someone else to write up some clues on writing good SS bots.

Code: [Select]
cond
start

'Values here

'Locations here

store
stop

This is your skeleton for every Single Store bot. For every potential store command, you'll need two corresponding blocks: one in the Values and one in the Locations. Same as any other bot really. I'll do a quick walkthrough of my first SS Bot, Dominis:

Code: [Select]
cond
start

'Values
-6
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

'Locations
.shoot
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

store
stop

Stores -6 into .shoot if:
  • *.eye5 40 <
  • *.refeye *.myeye !=

The way it works is that -6 and .shoot get pushed onto the stack and read by the store command if the conditions are true. Otherwise, 0 and 0 get pushed. The 0/0 is important, you'll see why next:

Code: [Select]
cond
start

'Values
-6
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

5
2000 *.nrg sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult
add

'Locations
.shoot
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

.up
2000 *.nrg sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult
add

store
stop

Same as before, but with 5 .up on the following conditions:
  • *.eye5 40 >=
  • *.refeye *.myeye !=
  • *.nrg 2000 <

Note that due to the first condition, the two condition pairs are mutually exclusive and only (at most) one will return a non-zero value/location pair. This is what makes SS bots work - only one "gene" at a time must return a non-zero value; that way, when you add all the values up and add all the locations up, you get a sensible value pair. If more than one pair returns a non-zero value, then you get some jibberish (or worse yet, you don't) and waste the store command.

Code: [Select]
cond
start

'Values
-6
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

5
2000 *.nrg sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult
add

50
*.nrg 2000 sub sgn 0 floor mult
39 *.eye5 sub sgn 0 floor mult
add

314 rnd
*.refeye *.myeye sub sgn abs -- abs mult
add

'Locations
.shoot
*.eye5 40 sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult

.up
2000 *.nrg sub sgn 0 floor mult
*.refeye *.myeye sub sgn abs mult
39 *.eye5 sub sgn 0 floor mult
add

.repro
*.nrg 2000 sub sgn 0 floor mult
39 *.eye5 sub sgn 0 floor mult
add

.aimdx
*.refeye *.myeye sub sgn abs -- abs mult
add

store
stop

A turning and reproduction pair (I'll let you figure out the conditions), and we're done!

The only hint I can give regarding the design of your bot is to remember that you only have one store a cycle, so prioritize. Design your conditions in such a way that the most important functions take precedence. You don't want to starve to death because you're executing .up instead of .shoot if there's something in your sight.


Hope that helps!

2
Darwinbots3 / Chromosomes and Sexual Rproduction
« on: August 17, 2010, 12:48:53 AM »
Hey, I was just giving this topic some thought recently and realized that the reason sexual reproduction in DB is so wobbly is that there is only one DNA. What if instead of coding the entire DNA into one section, large chunks of genes can be separated into chromosomes, which were assigned an ID to recognize pairs and a random one from each parent matched. If the chromosomes are properly coded (eg. a fair degree of independence), you could then activate one of your pair, and leave the other one to be still passed on (there's probably better ways to handle this, please discuss!). Instead of having very similar bots of different species, you could then check species by chromosome IDs (if they can breed, they're the same species) and thus introduce strains.

This would solve a lot of current issues - mainly the reproduction glitches, speciation definition, and would also allow for some funky new mutations. I know this has been discussed before, but the main difference is actually having more than one DNA strand present. Thoughts??  :D

3
Bot Challenges / Building Bots
« on: May 14, 2010, 05:41:47 PM »
Just something that seemed like a cool idea that wouldn't go out of my head. Say a simulation had two species of algae; one is something like A. minimalis, the other one is a 'building block'. This means it produces vast amounts of poison and shell to make it hard to feed off. When a bot ties to it, it starts producing vast amounts of slime as well, to stop any future ties. The two would use an I/O channel or some other method of communication to differentiate from each other.

The challenge is to create a bot that, without trying to feed off the building blocks, uses them to create a nest or defensive structure. For example, you could place them in a circle around a fixed point to creature a fortress, with other bots inside the fort harvesting the normal algae and other bots pushing on the opposing structures to try destroy them. To make it interesting, ties cannot be used to share resources or information (strictly physical bond), no viruses, .sexrepro or venom is allowed (eg. no messing with the algae), and no poison or shell (this forces you to use the algae as protection). Summary: F3 plus physical ties.

4
Suggestions / DB ate my Hard Drive!
« on: January 25, 2010, 04:02:16 AM »
In a spring cleaning of my system, I found out that the DB folder, which I had previously assumed to be of negligible size, had eaten up 2GB of my hard drive! Deleting and zipping simulations cut this down to about 35MB, but still raises an issue. Is there any way to save simulations so they don't take up a huge amount of space? I ask as it strikes me as some part of the original spaghetti code that nobody's been willing to touch for years. (And I won't blame you for avoiding it   )

5
Interesting behaviour bots / Sentinel3
« on: January 16, 2010, 02:04:38 AM »
You'd expect version three to be halfway decent, eh?
While not exactly a 'good' bot, I like the idea behind a double-layered conspec that differentiates 'conspec' 'non-conspec but friendly' and 'enemy' , and decided to rewrite my old Sentinel bot (one of my first successful Viral bots apart from Occura Amplificis, which still packs a punch).

Code: [Select]
'Sentinel 3
'Teaching an old bot new tricks
'999-gene deactivator
'998-aim setter


cond
 *.robage 1 >
 *999 4285 !=
start
 50 .repro store
 *.tiepres .deltie store
 *.thisgene .mkvirus store
 *.nrg 5 div .vshoot store
 618 .eye5dir store
 *.thisgene ++ .delgene store
 .fixpos inc
 4285 .out2 store
 .backshot inc
 *.nrg 10 div .shootval store
 -1 *.in1 482 sub sgn abs -- abs mult -- .shoot store
0 998 store
 200 *.shell sub .mkshell store
 100 *.slime sub .mkslime store
stop

cond
 *.robage 0 =
start
 482 .out1 store
 4285 999 store
stop

start
 50 *.poison sub .strpoison store
 50 *.shell sub .mkshell store
 1 .mkvirus store
 200 *.nrg 10 div ceil .vshoot store
 500 *.body sub dup .strbody store - .fdbody store
 20 *.velup sub .up 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
 *.eyef 0 !=
 *.in1 *.out1 !=
start
 *.refxpos *.refypos angle .setaim store
stop

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

cond
 *.eye5 40 >
 *.in1 *.out1 !=
 *.in2 4285 =
start
 *.refxpos *.refypos angle .shootval store
 .setaim .shoot store
stop

cond
 *.nrg 15000 >
start
 418 rnd .aimdx store
 40 .repro store
stop

6
Single store / Mythos 1.1(SS)(Bacillus)
« on: January 14, 2010, 05:00:22 PM »
Thanks Moonfisher, the rnd tip really helped me out. It also helped me solve that problem I was having with birthties eariler on...
Code: [Select]
'Mythos
'The new Single-Store bot by Bacillus

def threshold 2000

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 .threshold 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 .threshold 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 .threshold sub sgn 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 .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn mult
add

40 *.velup sub
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn -- abs mult
add

50 *.eye5 sub 0 floor *.velup sub
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold 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

.deltie
 *.numties sgn mult

.strbody
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor -- abs mult
add

.aimdx
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor
 *.eye5 30 sub sgn 0 floor mult
 *.eye5 sgn
 *.myeye *.refeye sub sgn abs -- abs mult
 add sgn mult
add

.repro
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor mult
 *.eye5 30 sub sgn 0 floor -- abs mult
 add

.shoot
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.myeye *.refeye sub sgn abs mult
 *.eye5 40 sub sgn 0 floor mult
add

.aimsx
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn mult
add

.up
*.numties sgn -- abs mult
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold 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

7
Single store / Mythos(SS)(bacillus)14/01/10
« on: January 13, 2010, 07:13:26 PM »
I tried to iron out the glitches in Dominis, my last SS bot, but a new one came up: The bot shuts down after its body level drops below 50. Any help on this would be much appreciated.

Code: [Select]
'Mythos
'The new Single-Store bot by Bacillus

def threshold 1000

start

100
*.body 50 sub sgn 0 floor -- abs mult

0 628 rnd
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor
 *.eye5 30 sub sgn 0 floor mult
 *.eye5 sgn
 *.myeye *.refeye sub sgn abs -- abs mult
 add sgn mult
add

 
30
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor mult
 *.eye5 30 sub sgn 0 floor -- abs mult
 add


-6
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.myeye *.refeye sub sgn abs mult
 *.eye5 40 sub sgn 0 floor mult
add

-60
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn mult
add

40 *.velup sub
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn -- abs mult
add

50 *.eye5 sub 0 floor *.velup sub
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold 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

.strbody
*.body 50 sub sgn 0 floor -- abs mult

.aimdx
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor
 *.eye5 30 sub sgn 0 floor mult
 *.eye5 sgn
 *.myeye *.refeye sub sgn abs -- abs mult
 add sgn mult
add

.repro
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor mult
 *.eye5 30 sub sgn 0 floor -- abs mult
 add

.shoot
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.myeye *.refeye sub sgn abs mult
 *.eye5 40 sub sgn 0 floor mult
add

.aimsx
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold sub sgn 0 floor -- abs mult
 *.eye5 sgn -- abs mult
 *.eye9 sgn mult
add

.up
*.body 50 sub sgn 0 floor mult
 *.nrg .threshold 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

8
Off Topic / Strange Attractors
« on: January 12, 2010, 08:26:05 PM »
Just asking around if anybody's messed with these before. I got some pretty decent-looking Lorenz, Lorenz-84 and Pickover (All quite primitive trig/poly chaotic equations) renders from my own program, and am aiming to recreate the functions from Chaoscope. The main problem I'm facing with my version is the implementation of the IFS fractal. As you can (hopefully) see below, they're quite amazing (hope you like then, they took hours of tweaking), but don't seem to follow the dot-by-dot iterative structure of the others. Anybody know anything about this?

9
Bot Tavern / 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?  

10
Interesting behaviour bots / Diatomus Lorius
« on: January 07, 2010, 05:35:16 PM »
Not the best bot ever made, basically a better version of Animal Minimalis. I just wrote this to refresh my DB coding skills, as well as try out a thing or two...

Code: [Select]
def conspec 4291

def head 1
def tail 2


cond
 *.robage 0 =
start
 .conspec dup .out1 store .tout1 store
 .head dup .out2 store .tout2 store
 *.in3 dup .out3 store .tout3 store
 .tie inc
stop

cond
 *.numties 0 =
start
 -32000 32000 rnd dup .out3 store .tout3 store
 50 .repro store
 .tail dup .out2 store .tout2 store
stop

cond
 *.tout1 *.tin1 !=
 *.numties 1 > or
start
 *.tiepres .deltie store
stop
 
cond
 *.tin3 *.tout3 !=
 *.tin3 0 !=
start
 *.tin3 dup .out3 store .tout3 store
stop

start
5 *.velsx sub .sx store
 40 .stifftie store
 50 .tielen store
 *.body 500 sub dup .fdbody store
 - .strbody store
 50 .sharenrg store
 20 *.velup sub .up 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
 *.in1 *.out1 !=
 *.eye5 40 > and
 *.refshoot 0 >
 *.refshoot 0 =
 *.body 1000 <
 *.refbody 100 > and and or and
start
 *.refxpos *.refypos angle .setaim store
 -6 .shoot store
 *.refxpos .out4 store
 *.refypos .out5 store
 *.timer .out6 store
stop

cond
 *.eyef 0 >
 *.in1 *.out1 !=
 *.refshoot 0 >
 *.refshoot 0 =
 *.refbody 100 > and or and
start
 *.refxpos *.refypos angle .setaim store
 35 *.velup sub .up store
stop

cond
 *.in1 *.out1 =
 *.out2 .head =
 *.in3 *.out3 !=
 *.in2 .tail =
start
 *.refxpos *.refypos angle .setaim store
stop

cond
 *.in6 *.out6 >
 *.in1 *.out1 =
 *.in3 *.out3 !=
start
 *.in4 *.in5 angle .setaim store
stop

cond
 *.eyef 0 =
 *.out6 0 >
start
 *.out4 *.out5 angle .setaim store
stop

cond
 *.tin6 *.tout6 >
start
 *.tin4 dup .tout4 store .out4 store
 *.tin4 dup .tout5 store .out5 store
stop

cond
 *.nrg 8000 >
start
 500 .aimdx store
 *.tiepres .deltie store
stop

11
Bot Tavern / Plausible tactic?
« on: January 03, 2010, 08:09:17 PM »
I was just wondering if you could construct a 'crab-bot' that rotates everything 90 degrees, so it walks, sees, and shoots to one side. The reason for doing so would be to allow reproduction to occur at right angles to everything else, and won't disrupt normal behaviour. Is this an efficient strategy, and has this been done before?

12
Evolution and Internet Sharing Sims / Effective Evosim Method
« on: December 29, 2009, 07:13:03 PM »
I recently rediscovered DB, and decided to try find a better way of getting an evosim running. After a few attempts, I got a pretty good system running, and got results much faster than any other way. Basically, the environment is made up of a chain of simulations, each connected to the next and set up to evolve a certain kind of behaviour. For example, the initial simulation would have veggies that both feed and force reproduction in the target cells. The cells are all clustered in one spot, with an out-teleporter leading to the next simulation so that only mobile bots can proceed. In this next simulation, the veggies still feed the bots, but do not get them to reproduce. Usually the mobile bots in the previous simulation reproduce more frequently (more area covered), so a steady supply of bots are available to evolve. This would then have a third out-sim to a simulation where the veggies do not feed at all or very unreliably, so to encourage feeding behaviour. This method allows some control over the evolution path of the bots, and I have gotten one or two simulations after a few hours that display some form of stable reproduction.

13
Formula 1 / F1 League Standings
« on: December 03, 2008, 07:31:58 PM »
Last updated 3/12/08:

#F1
1 - Quickdraw(F1)(Moonfisher)
2 - Saber
3 - Fruit_Fliesv0.21
4 - Etch Mk II(F1)(abyaly)-15.03.2008
5 - Occura Amplificis(F1)(bacillus)-25.03.08
6 - TieFighters
7 - Pacifist (5G) (Moonfisher) 19-02-08
8 - Spinnerv1.52
9 - Locust(F1)(Moonfisher)
10 - Ebola (F1Vir) (Moonfisher)
11- Multiply4(F1)(F2)(Peter)19-12-07
12- Excalibur 1.12 (F2)(Light)-06.03.07
13- Callidus(F1)(Shen)-05.04.05
14- Blue on blue (F2)(Jez)-05.08.06
15- Bubbles (F2)(Jez)-21.08.06
16- Reaper (F1)(Googlyeyesultra)-17.07.07
17- Detonator v1.2(F1)(bacillus)-24.04.08
18- Martian Tank 3 (F2)(Martian)-06.07.2007
19- Singula Haloculus v2.1(F1)(bacillus)21.04.08
20- The One (1G)(Shen)-23.04.05

14
Interesting behaviour bots / Arborea
« on: November 25, 2008, 02:57:38 AM »
This veggie started out as a nice fractal, but got more blob-like as I tried to deal with tie physics and size control.
Still looks okay.
Code: [Select]
'Arborea
'A multibot veggie/failed fractal bot
'by Bacillus

def iteration 991
def initang 992
def status 993
def prevrepro 994
def branching 3
def maxiterands 6
def step 2

def stepsize 998

cond
 *.robage 0 =
start
 *.aim .initang store
 .tie inc
stop

cond
 *.robage 20 =
start
 *.tin1 .iteration store
 *.tin2 .step add .status store
 *.iteration ++ *.stepsize *.status sub sgn -- abs  

sgn .iteration mult store
 0 *.stepsize *.status sub sgn -- abs  sgn .status

mult store
stop

cond
 *.numties 0 =
 *.nrg 5000 <
start
 50 .dx store
stop

start
 *.prevrepro 1000 sub sgn 0 floor .fixpos store
 *.velup 5 add .dn store
 100 .tielen store
 .maxiterands *.iteration .step mult sub .stepsize  

store
 50 .sharenrg store
 50 .shareshell store
 .prevrepro inc
 *.iteration .tout1 store
 *.status .tout2 store
 *.body 400 sub .fdbody store
 100 *.shell sub .mkshell store
 100 *.poison sub .strpoison store
stop

cond
 *.nrg 10000 >
start
 2000 .shootval store
 628 .aimshoot store
 -2 .shoot store
stop

cond
 *.prevrepro 30 >
 *.nrg 7500 >
 *.numties 2 <
 *.status 0 =
 *.iteration .maxiterands <
start
 *.initang 628 add .setaim store
 0 .prevrepro store
 50 .repro store
stop

cond
 *.prevrepro 20 >
 *.nrg 7500 >
 *.numties .branching <
 *.status 0 >
 *.iteration .maxiterands <
start
 1256 .branching div *.numties mult add *.initang

add .setaim store
 0 .prevrepro store
 50 .repro store
stop

15
Bot Tavern / MB rant
« on: November 11, 2008, 02:52:01 AM »
Darn, the topic got wiped.
Anyway, I can't be bothered writing everything out again, so I'll shortly summarize:
-Split DB into two different programs. one will be focused on the league as it is, the other on diversity and complexity. This version will include MB-biased features, such as:
Stronger ties, both physically and functionally. Eg. allow for ties that support more tension, communication in bulk, changing tie values, and in0cycle tie switching.
A larger degree of specialization, eg. muscle ties that can stretch and contract ties more efficiently than others, or variable eyesights.

Regarding the current MB league, the environment should be upscaled, eg. multi veggies (I think Fractal should be the base for this veggie) and huge field size.

Doesn't sound as convincing and is going over a whole lot of old stuff, but I'll write out the entire thing when I have time.

Pages: [1] 2 3 ... 6