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 - Billy

Pages: [1]
1
Suggestions / GPGPU acceleration?
« on: April 27, 2017, 10:04:56 AM »
I know it's pain to get working, but a simulation with many bots seems like an ideal problem for opencl or similar. One job for each bot, and perhaps even grouping similar bots into warps for SIMD execution on Nvidia chips. You wouldn't necessarily have to move much data between main memory and GPU memory if you don't need to observe the simulation in real time.

I've only dabbled with GPU programming though (circle detection in images), so maybe it's not as well suited as it seems. I am aware that it would take a lot of effort to port all of the DB simulation code to opencl, what with the physics, DNA interpretation, reproduction mutation... Maybe I'll try making something similar from scratch over the summer, specifically geared towards GPGPU execution.

2
Bug reports / Adding robot while autosaving
« on: September 04, 2014, 07:57:13 AM »
Sometimes, when I am adding bots to a sim, it decides to autosave. I then click to add a bot and an error comes up, then the program closes. Very annoying. Perhaps you could just disable the adding of bots while autosaves are taking place?

3
Internet Mode Commentary / Who else is online?
« on: September 01, 2014, 11:49:45 AM »
Hurrah, IM is working again!

I have a sim online right now, populated with a work in progress bot of mine, "Einstein". Occasionally I get something called "Mutate" through, but there isn't much variety other than that. So I was wondering, what is this bot and where does it come from? How is Einstein doing in other sims?

Also, to those who aren't on internet mode, and have a spare CPU core they aren't using, why not come join the fun? :)

4
The Gene depository / Ocu
« on: August 10, 2014, 09:10:37 AM »
I decided to write my own focusing line, mostly because I can't make head or tail of Oculus, and I don't really like using code I don't understand. As it turns out, it's a lot shorter than Oculus 2 and does almost the same thing. The only difference I can see is that, if the highest value in an eye is tied between several, it picks the one with the highest eye number, e.g. if it's a tie between eye5 and eye6, it will pick eye6. Does that make sense? Anyway, here's the code.

*.eye1 *.eye2 floor *.eye3 floor *.eye4 floor *.eye5 floor *.eye6 floor *.eye7 floor *.eye8 floor *.eye9 floor *.eye1 over sub ++ sgn 0 floor swap *.eye2 over sub ++ sgn 0 floor 2 mult swap *.eye3 over sub ++ sgn 0 floor 3 mult swap *.eye4 over sub ++ sgn 0 floor 4 mult swap *.eye5 over sub ++ sgn 0 floor 5 mult swap *.eye6 over sub ++ sgn 0 floor 6 mult swap *.eye7 over sub ++ sgn 0 floor 7 mult swap *.eye8 over sub ++ sgn 0 floor 8 mult swap *.eye9 swap sub ++ sgn 0 floor 9 mult floor floor floor floor floor floor floor floor 5 sub .focuseye store

Not as efficient as Ashton's Oculus III, but more compact, and I think it would also execute faster. It's not thoroughly tested, but as far as I can tell, it seems to work. Let me know what you think of it, and feel free to use it if you like.

EDIT: Ocul, longer but behaves exactly like Oculus II as far as I can tell.

*.eye1 *.eye2 floor *.eye3 floor *.eye4 floor *.eye5 floor *.eye6 floor *.eye7 floor *.eye8 floor *.eye9 floor *.eye1 over sub ++ sgn 0 floor swap *.eye2 over sub ++ sgn 0 floor 3 mult swap *.eye3 over sub ++ sgn 0 floor 5 mult swap *.eye4 over sub ++ sgn 0 floor 7 mult swap *.eye5 over sub ++ sgn 0 floor 9 mult swap *.eye6 over sub ++ sgn 0 floor 8 mult swap *.eye7 over sub ++ sgn 0 floor 6 mult swap *.eye8 over sub ++ sgn 0 floor 4 mult swap *.eye9 swap sub ++ sgn 0 floor 2 mult floor floor floor floor floor floor floor floor dup - 2 add 0 floor -4 mult swap dup 2 sub abs - ++ 0 floor 4 mult swap dup 3 sub abs - ++ 0 floor -3 mult swap dup 4 sub abs - ++ 0 floor 3 mult swap dup 5 sub abs - ++ 0 floor -2 mult swap dup 6 sub abs - ++ 0 floor 2 mult swap dup 7 sub abs - ++ 0 floor - swap 8 sub abs - ++ 0 floor add add add add add add add .focuseye store

5
Bug reports / Is sexual reproduction broken?
« on: July 27, 2014, 03:29:11 PM »
I've been writing a bot (Rapeseed) that's supposed to shoot sperm at other bots when attacked and force sexual reproduction, and if its gene appears in the child bot then it deletes the other genes, becoming a clone of Rapeseed, if you see what I mean. It isn't working. The attacker bot is fertilized and .sexrepro is set to 99, but it refuses to undergo sexual reproduction. The memory locations .fertilized and .sexrepro then become fixed at (usually) 9 and 99 respectively after Rapeseed is dead. To my knowledge, that isn't meant to happen.

Is this a bug, or does sexual reproduction perhaps only work between bots of the same species?

Edit: Here's the DNA of Rapeseed so far, just in case it's something to do with that.

Code: [Select]
'Rapeseed


def forcerep 100

start
*.thisgene 2 sub -1 mult 0 floor 2 mult *.thisgene 1 sub sgn add *.genes 1 sub sgn mult .delgene store
16000 *.chlr sub abs .mkchlr 16000 *.chlr sub sgn 0 floor mult .rmchlr *.chlr 16000 sub sgn 0 floor mult add store
*.nrg *.body sub abs .strbody *.nrg *.body sub sgn 0 floor mult .fdbody *.body *.nrg sub sgn 0 floor mult add store
.aimdx inc
*.nrg 5000 sub sgn 0 floor 50 mult .repro store
*.shang *.shflav sgn abs mult .aimshoot store
*.forcerep 1 sub abs .forcerep store
-8 *.forcerep 1 sub abs mult .sexrepro *.forcerep mult add *.shflav abs sgn mult .shoot store
99 *.forcerep mult .shootval store
stop

6
Yesterday Numsgil and I worked out a way to use file syncing software for IM. It seems to be working okay-ish. Definitely better than nothing. :)

Instructions:

  • Download and install Allway Sync
  • Download This File
  • In Allway Sync, go to File>Import>Import profile (all jobs) settings and load the file you just downloaded. Replace the word "Billy" with your Windows username in each file path which contains the word "Billy."
  • Start by disabling automatic synchronisation on all jobs. Then enable it, one job at a time, starting from the left, with one minute between each enablisation. So, enable it on the first job, wait one minute, enable it on the second job, wait one minute, etc.. You will have to do this every time you open Allway Sync.
  • Start a simulation in DB.
  • Click on the internet mode button and close the DOS window which pops up.

That's it! Your simulation is now connected to internet mode. :D

7
Evolution and Internet Sharing Sims / Internet Mode not working?
« on: February 11, 2011, 07:54:13 AM »
Is it just my computer, or is IM down? Every time it tries to download a bot it says there's an internal server error.

8
DNA - General / Why doesn't this bot work?
« on: July 12, 2010, 01:58:53 PM »
This is my first conditionless bot, and I thought I was being very clever while I was making it as I followed no tutorials, but it doesn't do anything! Nothing at all! Please help. :(

Code: [Select]
def runaway 51

start
628 rnd 314 sub .aimdx *.eyef sgn mult store
30 .up *.eyef sgn mult store
*.refxpos *.refypos angle 628 add .setaim *.eyef sgn *.refeye sgn mult mult store
50 .runaway *.eyef sgn *.refeye sgn mult mult store
50 .up *.runaway sgn mult store
.runaway *.runaway sgn mult dec
-1 .shoot *.eyef 50 sub sgn 0 floor *.refeye - 1 add 0 floor mult mult store
50 .repro *.nrg 3000 sub sgn 0 floor mult store
*.refvelup 50 add .up *.eyef sgn mult store
*.refveldx .up *.eyef sgn mult store
*.refvelup .up *.eyef 50 sub sgn 0 floor *.refeye - 1 add 0 floor mult mult store
.deltie *.robage - 1 add 0 floor mult inc
*.genes .delgene store
.delgene *.thisgene *.genes sub abs - 1 add 0 floor mult dec
*.body -- -- .fdbody 0 *.body sub sgn 1 floor -- - mult store
0 .strbody store

'OCULUS II
-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

-436 .eye9dir store
-327 .eye8dir store
-218 .eye7dir store
-109 .eye6dir store
 109 .eye4dir store
 218 .eye3dir store
 327 .eye2dir store
 436 .eye1dir store
109 .eye1width store
109 .eye2width store
109 .eye3width store
109 .eye4width store
109 .eye5width store
109 .eye6width store
109 .eye7width store
109 .eye8width store
109 .eye9width store
stop
Thanks.

9
Off Topic / Holiday
« on: May 15, 2010, 04:54:03 AM »
Hi,

I'm going on holiday tomorrow for six days. I won't be able to access the internet in that time, so I obviously won't reply to any posts. Don't worry, I'll be back soon!
Goodbye everyone.
Billy

10
Internet Mode Commentary / New IM Commentry Thread
« on: May 11, 2010, 09:46:17 AM »
I'll start.

I'm very excited about the different Pigs I released (work in progress)! Let me know if you see any.  If you see pigs fighting eachother, that's just different strains, and the most recent one is usually better.Fluffy and Tangley are mine too.

11
F2 bots / Tangley (F2)(Billy)-10/05/2010
« on: May 10, 2010, 09:14:53 AM »
I modified what was previously the birth tie delete gene so that it ties to anything and everything around it. I didn't label the genes this time because I just couldn't be bothered.
Code: [Select]
def venomcounter 51

cond
 *.eye5 0 >
 *.refeye *.myeye !=
start
 *.refveldx .dx store
 *.refvelup 30 add .up store
stop

cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 =
 *.refshell 0 =
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 >
 *.refshell 0 =
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refshell 0 >
 *.refpoison 0 =
start
 .venomcounter inc
16 .shootval store
-1 .shoot store
 *.refvelup .up store
stop

cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 >
 *.refshell 0 >
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 0 .venomcounter store
 314 rnd .aimdx store
stop

cond
 *.nrg 15000 >
start
 40 .repro store
stop

cond
*.robage 0 =
start
67 989 store
stop

cond
*.waste 40 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop

cond
start
 .fixpos *.fixed mult dec
stop

cond
start
 .tie inc
stop

cond
 *.poison 500 <
start
 .eye5 .ploc store
 50 .strpoison store
stop

cond
 *.shell 250 <
start
 100 .mkshell store
stop

cond
 *.robage 0 =
start
 .shoot .vloc store
 -2 .venval store
stop

cond
 *.venomcounter 19 >
 *.eye5 50 >
 *.refeye *.myeye !=
start
 50 .shootval store
 -3 .shoot store
 0 .venomcounter store
stop

cond
 *.venom 500 <
start
 50 .strvenom store
stop

cond
 *.mkvirus 0 !=
start
 *.mkvirus .delgene store
stop

cond
 *.eye5 *.eye5 =
start
 1 54 store
stop

end

12
Suggestions / Multi Core
« on: May 09, 2010, 05:39:16 AM »
Is there a way of modifying DarwinBots to make use of dual-, quad- or octo-core machines? This would mean that those running DB on dual core processors would have performance doubles, quad-core quadrupled, and so on. Computers are going to have more and more cores every year, so I think it's time to make this modification.

13
F2 bots / Fluffy (F2)(Billy)-07/05/2010
« on: May 07, 2010, 02:02:26 PM »
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
Code: [Select]
def venomcounter 51

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

' Gene 2 Eat
cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 =
 *.refshell 0 =
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

' Gene 3 Eat Poison
cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 >
 *.refshell 0 =
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

' Gene 4 Eat Shells
cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refshell 0 >
 *.refpoison 0 =
start
 .venomcounter inc
16 .shootval store
-1 .shoot store
 *.refvelup .up store
stop

' Gene 5 Eat Poisonous Shells
cond
 *.eye5 50 >
 *.refeye *.myeye !=
 *.refpoison 0 >
 *.refshell 0 >
start
 .venomcounter inc
16 .shootval store
-6 .shoot store
 *.refvelup .up store
stop

' Gene 6 SPIN!
cond
 *.eye5 0 =
 *.refeye *.myeye = or
start
 0 .venomcounter store
 314 rnd .aimdx store
stop

' Gene 7 Have Kids
cond
 *.nrg 15000 >
start
 40 .repro store
stop

' Gene 8 I'm a friend, Reprovirus!
' (That's a virus I'll release onto internet mode)
cond
*.robage 0 =
start
67 989 store
stop

' Gene 9 Poo
cond
*.waste 40 >
start
.backshot inc
-4 .shoot store
*.waste .shootval store
stop

' Gene 10 MOVE!
cond
start
 .fixpos *.fixed mult dec
stop

' Genes 11 & 12 I hate birth ties
cond
 *.robage 0 =
start
 .tie inc
stop

cond
 *.robage 1 =
start
 .deltie inc
stop

' Gene 13 Poison
cond
 *.poison 500 <
start
 .eye5 .ploc store
 50 .strpoison store
stop

'Gene 14 Shell
cond
 *.shell 250 <
start
 100 .mkshell store
stop

' Genes 15, 16 & 17 Venom
cond
 *.robage 0 =
start
 .shoot .vloc store
 -2 .venval store
stop

cond
 *.venomcounter 19 >
 *.eye5 50 >
 *.refeye *.myeye !=
start
 50 .shootval store
 -3 .shoot store
 0 .venomcounter store
stop

cond
 *.venom 500 <
start
 50 .strvenom store
stop

'Gene 18 Delete viruses
cond
 *.mkvirus 0 !=
start
 *.mkvirus .delgene store
stop

end

14
Newbie / Hello!
« on: May 07, 2010, 05:15:39 AM »
Hello everyone,

I found DarwinBots a while ago, and ever since I've been trying to register on the forum. I failed three times, using two different email addresses, with at least a month gap between the second and third. I was doing everything it told me to, but I never received the confirmation email. This was very irritating. But, this morning, I had a brainwave! Every time I registered I had unchecked the "Receive email from administrators" checkbox. Maybe, just maybe, disabling that option prevented me from getting the confirmation email! So I got on here, tried it, and... IT WORKED! So here I am, typing on the DarwinBots forum, excitement flooding my body. So many more opportunities will be open to me now! Fluffy and Tangley can now be entered into the F2 league! I can enter the zerobot evolution competition! Maybe even design and enter an F1 bot? The second version of Fluffy (haven't decided on the name yet) will be coming soon, another F2 challenger. In the future, I might even be able to help with the progress of DB3, as I have plenty of time, and I'm in the process of learning C#.

My hobbies include wildlife photography, DarwinBots (obviously), my pets (tortoise called Bea, tortoise called Kreacher, dog called Fuzzbox, nineteen year old cat called Batman, rabbit called Grandma Rosie, bearded dragon called Santa), and various computer games. Thank you for listening.

Billy.  I will put one of my photos at my display pic.

Pages: [1]