![]() |
|
|
|
|
|
|
|
|
![]() |
|
1 - Introduction 2 - Obstacles 3 - Programs 4 - Mapping 5 - Commands 6 - Options 7 - Future+Downloads
1) Introduction Over time mutation occurs. Instructions will be removed, added or altered. Each unique program is called a 'species'. There can be any number of species in the world at any given time. The success of a species is measured by its ability to propogate. You can play with the bug world in several ways. You can place bugs, species and obstacles. You can edit the programs directly. You can also alter the settings for mutation and movement. Bugs will find a variety of solutions to the problems they face. As you set them with different rules and challenges, they will find different solutions. They won't always find the BEST solution. But they will frequently find a GOOD ENOUGH solution. AND they might actually surprise you from time to time.
2) Obstacles Walls will prevent a bug from moving forward. The bugs can still turn (if they are smart enough) and eventually get away from the wall. Water will slow bugs down. While moving through water, their physical and mental processes run at 20% of normal speed. Radiation will kill bugs dead! Any bug that touchs a radioactive rock will become 'brain-dead'. It will stop thinking and moving. It's lifeless husk will not move again until another bug transfers its code.
3) Programs Instruction Pointer points to an instruction. Once an instructin is complete, the pointer is 'incremented' (increased by one so that the pointer looks at the next instruction). Some instructions will move the pointer more than one space - or move it to a completely different part of the program. Wraparound occurs when the instruction pointer goes past the end of the program. The pointer then 'wraps around' to the first command. When this happens, the bug is paralyzed for a significant period of time . This 'wraparound penalty' is designed to encourage bugs to create perpetual programs (programs that don't hit the end). The Register is memory for a bug. Bugs can only remember one number at a time. Bugs can put new values into the register. This happens when they use their senses (look, smell, touch). It also happens when certain instructions are performed. When a new value is loaded into the register, the 'flags' are set to true or false. Flags are true/false values that are changed whenever the register is loaded. The HIGH_FLAG and LOW_FLAG are set depending on the size of the new value (compared to a maximum possible value). If the new value is under 35% of maximum (say 3 vs 10 max) then LOW_FLAG is set true. If the new value is over 65% of maximum (say 6 vs 10 max) then HIGH_FLAG is set true; New values are also compared to the old value. When the two values are within 15% of each other (like 5 is to 6) then the NEAR_FLAG is true. If the values are at least 50% apart (like 2 is to 7) then the FAR_FLAG is true. Startup - When an insect transfers or recieves a new program, then the bug will have to go through a startup procedure. First, a value of zero is placed into the register. Second, the value (genotype - see below) is placed into register, settting the flags. Finally, the instruction pointer is moved to the first CODE_TAG in the program. If there is no CODE_TAG, then the bug suffers a Wrapround Penalty.
4) Gene Mapping: Genotypes vs Phenotypes A Map is simply a list of the genes with a description of which command they become. This map can change due to mutation. It is possible for maps to favor one or more commands. It also possible for maps to completely ignore some commands. Program instructions look like this: #14 CODE_TAG The Number is the gene, while the Word is the command. It is possible to get the same command from different genes. This is important for some commands (like TEST_CODE), and might also be important during evolution. When a map changes because of mutation, this can also change some of the program commands. You can examine how maps correspond to commands by looking in the EDIT screen. The command menu shows the choices like this:(5)CODE_TAG The Number is the number of times that the command 'CODE_TAG' appears in the mapping table. As a consequence, this number is the odds out of 64 (in this case 5 out of 64) of that command being produced during mutation.
5) Commands CODE_TAG this command does nothing. It marks a point in the program for the CODE_JUMP command. When a CODE_JUMP is hit, it moves the instruction pointer forward to the next CODE_TAG command. CODE_JUMP this command moves the instruction pointer to the next CODE_TAG command. CODE_REVERSE this command reverse the direction of the instruction pointer. Once this command is reached, the program starts to read backwards. MOVE_FORWARD will move the bug forward in the world. If the bug hits another bug while moving forward, then it copies its code into the other bug. If the bug hits a wall, then it doesn't move. If the bug hits radiation, then it dies. MORE_LEFT + MOVE_RIGHT will turn the bug 45 degrees to the left or right. TEST_SMELL + TEST_SIGHT + TEST_TOUCH these commands will load a value into the register based on one of the bugs senses. Smell will measure the number of other bugs near this bug (many bugs are LARGE, no bugs are SMALL). Sight will look forward and measure the distance to the closest obstable (near objects are LARGE, far objects are SMALL). Touch will examine the point directly in front of the bug and measure the 'danger' of that spot (radiation is LARGE, clear space is SMALL). TEST_CODE this will load the genotype value of the TEST_CODE command into the register. In order to set the flags properly, this genotype value is compared to a maximum value of 64. TEST_RANDOM this will load a completely random value into the register. SKIP_ALWAYS this command will skip the next command. The instruction pointer will move ahead two spaces instead of one. SKIP_HIGH + SKIP_LOW these commands will skip the following instruction based on the HIGH and LOW flags. If the respective flag is true, then the instruction pointer moves ahead two instead of one. SKIP_NEAR + SKIP_FAR these commands will skip the following instruction based on the NEAR and FAR flags. If the respective flag is true, then the instruction pointer moves ahead two instead of one.
6) Options Mutate Breeding this number is the rate at which breeding (insects transfering their code) creates a mutation. The default value is 250. This means that one mutant will occur for every 250 transfers. If you put in zero then on breeding mutation will occur. Mutate Cosmic Rays this number is the rate at which mutants occur spontaneously (due to cosmic rays). The default value is 100,000. This means that there is one chance in a hundred thousand per bug per cycle of a mutant occuring spontaneously. With 100 bugs, this chance becomes one in one thousand of a mutant occuring spontaneously each cycle. If you put in zero, then no spontaneous mutation will occur. Ticks Per Cycle ticks are a way of measuring time for the insects. Each cycle every insect is given this much time to process its program. The default of 50 ticks is selected to match the time it takes an insect to step forward one space. Ticks In Water when a bug is in a water space, it moves and thinks slower (or faster if you want). The default value of 10 means that the bug will operate at 1/5 of its default speed (10 ticks vs 50 ticks). Wraparound Penalty this is the number of ticks that a bug will wait when it's program 'wraps around'. The default value of 250 is a very significant penalty. It is equal to five cycles of waiting around doing nothing (5 cycles * 50 ticks = 250 ticks penalty). Walking Ticks this is the amount of time it takes for an insect to step forward one space. The default value of 50 means that moving takes a lot more time than thinking or looking (50 ticks for moving vs 1 tick for thinking). Turning Ticks this is the amount of time it takes for an insect to turn to the left or right. The default value of 10 means than an insect can turn five times in the time it takes to move forward one space. Thinking Ticks this is the amount of time it takes for an insect to process one non-movement command from it's program. The default value of 1 tick means that the insect can perform 50 instructions in the time it takes to step forward one space. Mutation Ratios: Add, Drop, Sub, Map There are four types of mutations that can occur. The numbers in these fields create a 'ratio' between the four types. If you put zero into a field, then that type of mutation won't occur. Add will insert a new command. Drop will remove and old command. Sub will substitute a new command for an old command. Map will change the way that genes are mapped to commands.
7) Future
Download Bugz Source If you don't know how to play with java, you can start on this page: Java/C++ Forum DON'T FORGET TO READ THE FAQS! (before asking questions) Java/C++ Faqs November 21st, 2000 -Fred- |
|
©1997-2006 Fred's Friends, Inc. and Fiends.com -
Privacy Policy
Home - Games - Archive - Blast Doors [Portal] - About Us - Survey |