Darwinbots Forum
General => Leagues => Bot Challenges => Topic started by: PhiNotPi on February 07, 2014, 08:42:24 PM
-
This contest is similar in style to the "Obfuscated-C" programming contests. The main idea is to take a simple robot, say Animal_Minimalis or something not-too-complex, and re-write its DNA such that it is unreadable yet similarly functioning.
- Your goal is to cause onlookers to ask "How does that even work?!" Try to take advantage of "hidden" functionality. Impress people with your knowledge.
- The DNA should be hard to understand, yet not too long. It is relatively easy to write a humongous unreadable math expression, but your submission should not rely on sheer size to create unreadability.
- The underlying robot behavior ("phenotype") should be relatively simple. Write super-complex DNA for a simple bot.
- Basic ideas include substituting numbers with their associated Sysvar names, or messing around with the data stack, or making certain things "conditionless."
For your submission, simply include the "before and after" of the obfuscation.
There's not going to be an official judging/awards process, but I'm simply interested in seeing what people can write. It's somewhat open-ended. Have fun!
-
This sounds like fun. Do evobots count? Or just hand-authored?
-
I prefer that the bots be handwritten. I think it is more challenging that way.
-
OK. Is there a specific limit to size? I want to use oculus III, but it is 500+ bp long.
-
I would prefer a hard limit on the size. In a way that you're doing a lot of complicated stuff, but it doesn't take a lot of room. The way it works also needs to be explained.
A good example is this: http://perl.plover.com/obfuscated/
Only 312 characters, and you don't have a clue what it is doing. Read the explanation and still you're overblown.
-
Do you think that 200 BP is enough, or should that be reduced to 100 BP?
-
I would just go with as short as possible (ASAP) :P
-
I got a bot- you have to run it in a toroidal sim.
'A bot with confuscated code
'Forms lots of tiny little bots that spread around a large sim
'SG bot, for xtra confuscation!
'Actions:
'Reproduce (alot)
'"Play footbal" w/ food using -1 shoots
'Once finished playing with food, fling away!
start
800 inc *310
500 sub sgn 0 floor
5 mult 300 store *9 1
sub ' '
sgn abs - ++ 467 mult inc *9 1
sub sgn abs
- ' ' '
++ ' ' '
614 mult 19 store
*510 0 sub sgn abs *689 *690 angle
mult 19 store *510 0 sub sgn abs - ++ 50 mult abs 3 store *810
*510 0 sub sgn abs mult ' '
*689 *690 dist mult -- abs 1 store
*728
*708 sub sgn abs *510 10 sub 1 add
sgn 0 floor and 7 mult dec
stop
-
lol, that looks awesome 8)
-
It is. It creates diagonally moving bands of tiny bots that go psychotic once they see something. After a while, this pattern disappears, but they reproduce like fruitflies- 800+ alive, 1000 born in about 600 cycles.
-
As I am the only contestant, looks like I won! 8)
-
Here is my current entry, although it is pretty short. Just let it loose in an area with some veggies. (tested in 2.46.02beta)
start
++ *.refeye = *.eye5 = .setaim 300 *.refvelsx .tieval 6 or
store
not &
store
*.refvelup
*.eyef dup sgn 50 mult *.eyef >
add dup sgn store -
not 7 and store
1000 mult *.nrg <
store
end
-
Shoot. I like winning by default. However, mine kicks their butts in a balanced sim.
-
Try and figure out how my bot works. It's probably not that hard, since it's pretty short. I did use some different techniques than you.
Here is my attempt at understanding your bot's DNA:
cond
start
.out1 inc
stop
cond
*.nrg 500 >
start
5 .repro store
stop
cond
*.robage 1 =
start
.deltie inc
614 .setaim store
stop
cond
*.eye5 0 > 'eyef and eye5 are the same since focuseye has not changed
start
*.refxpos *.refypos angle .setaim store
stop
cond
*.eye5 0 =
start
50 .sx store
stop
cond
*.in1 0 >
*.eye5 0 > and
start
*.refxpos *.refypos dist -- abs .up store
stop
cond
*.eye5 9 > 'an error in your code made the *.refeye *.myeye part go unused
start
.shoot dec
stop
end
I did find one error in your code, which is that 'and' should be 'mult' in the second-to-last line. Overall, you did a pretty good job.
-
OK. if you want to find a judge to de-confuse the code (to judge who's was hardest)
Go to shadowgod2.
If you don't believe he is the best
Look at Aggressive dwarfs, and try to understand and simplify the code without changing the functionality. He did this, allowing mk2 to be made