Darwinbots Forum

Welcome To Darwinbots => Newbie => Topic started by: MrMound on April 16, 2005, 09:42:31 PM

Title: hi everone
Post by: MrMound on April 16, 2005, 09:42:31 PM
I just wanted to say hi.  I am the newest member and would like any suggustions to darwin bots  B)
Title: hi everone
Post by: PurpleYouko on April 16, 2005, 10:00:01 PM
Best ways to learn are

1) My DarwinBots v2.3 tutorila which can be found on the "Old FTP server" just follow the link at the bottom of the forum.

2) Reverse engineering some of the bots from the league, beastiary or from the DarwinBots Database site (Another link at the bottom of the forum)

Other than that just ask specific questions here and someone will answer them.

Hope you enjoy your stay with us
Title: hi everone
Post by: MrMound on April 16, 2005, 10:07:14 PM
where can I find a list of comands :)
Title: hi everone
Post by: Numsgil on April 16, 2005, 10:08:39 PM
That's a harder one.

The help menu has a DNA command list with alot of the sysvars, but it's not exhaustive.  The readme has some of the newer commands.
Title: hi everone
Post by: MrMound on April 16, 2005, 10:13:22 PM
so where can I find the read me and the help menu
Title: hi everone
Post by: PurpleYouko on April 16, 2005, 10:14:39 PM
The only place with an absolute list is the "sysvars 2.21.txt" file in your DarwinBotsII directory.

That has a full list of ALL the sysvars and is used by the program itself to create them when you start it up.
Problem is that there are no explanations there.

The in-game help menu has most of them with the exception of the latest additions.
Title: hi everone
Post by: PurpleYouko on April 16, 2005, 10:15:40 PM
I like your Avatar!

What is that? An amonite or a Nautilus?
Title: hi everone
Post by: Numsgil on April 16, 2005, 10:17:14 PM
Help Menu:

In your program, look at the menu bar (the thing with 'file' in most applications).  There's a help field.  In that help fied is DNA help.

Readme you unzipped with your patched version.  It's called 'readme V2.36.txt'.
Title: hi everone
Post by: MrMound on April 16, 2005, 10:17:23 PM
I cant extract any darwin bots .zip files.  they show up as pdf files.  I can extract other .zip files though :)
Title: hi everone
Post by: Numsgil on April 16, 2005, 10:19:18 PM
Oh that's right.  Um...


Important Information about DarwinBots V2.35

If you are reading this it means that you have downloaded DarwinBots Version2.36 31-03-05

Changes for V2.36
1  Automated League Running.  Set up your own leagues quickly and easily.

2  Streamlined simulation.  I've clocked my computer quadrupling the speed of 1000 robot simulations.

3  Physics system reworked to give more realistic collisions.

4  New sysvars:
   A  .thisgene - returns the current gene's number.  Designed for *.thisgene .mkvirus store to create self perpetuating viruses.
   B  .aimshoot - fires a shot at an angle compared to the eye spot.  Usage:
      20 .aimshoot store
      -1 .shoot store

5 Several tiny bug fixes.  You probably won't notice them.

6 Reworked Options Panel.  Should look more proffessional.

7 Pond Mode seperated.  You can now run corpses outside of Pond Mode for instance.

8 If (okay, when) minor bugs are found and I get PY's code I'll release 2.36.1 and put any new changes I can think of here.

Changes for V2.35

1  Numsgil joins the programming team!  YAY!

2  Major overhaul to the newly introduced mutations trigger system. Now able to simultaneously run up to 9 scripts.

3  Loads of new operators and functions added
   A. addstore, substore divstore multstore - number .memoryplace addstore same as *.memoryplace number add .memoryplace store.  For those who know C, it is similar to the += commands.
   B. dup - places a copy of the top of the stack onto the top of the stack.
   C. sqr - places the square root of the top number on the stack on the stack.
   D. abs - returns the absolute value of the top number on the stack onto the stack.
   E. sgn - returns the sign on the top number on the stack onto the stack.
   F. ^ - takes the second value on the stack to the first value on the stack power.  Ie: 5 2 ^ places 25 onto the stack
   G. pyth - finds the magnitude of a vector given its coordinates.  That is, given two numbers, it will return sqr(number1 ^ 2 + number2 ^ 2)
   H. mod - similar to div but returns the remainder instead.
   I. ceil and floor - ceil lowers a value that is too high to a threshhold value.  Floor does the opposite.  This is useful if you want to set a limit on how high or low a number should be. 
                For instance, "*.refslime 200 ceil *.slime sub .mkslime store" for a single bot.

4  A new conditions stack
   A. and - takes top two conditions and 'and's their values together.  Similar with or, xor
   B. not - takes top value on conditions stack and negates it.
   C. All conditions on conditions stack that aren't evaluated at the end of the cond are 'and'ed together

   5 6 >
   5 6 < or not

   This sample cond will return false, meaning that the gene won't be executed.  5 6 > is false, 5 6 < is true, or "or"s them together, so it returns true.  Then not negates that true, making it false.

5  New evaluation functions.  Here's a list of all of them you now have
   A. <=, >=, !>=, <, >, !<=, =, !=, %=, !%=, ~=, !~=, !<, !>
   B. ~= takes three values from the stack.  10 20 30 ~= will see if 10 and 20 are within 30% of each other

6  Slew of new sysvars:
   A. velX functions (velup, deldn, veldx, velsx) give bots velocity from its frame of reference
   B. bodgain, bodloss - similar to pain/pleas combo, but with body.  Could be very useful for detecting -6 shots getting through.
   C. velscalar - gives you the scalar (ie: magnitude) of your velocity.  People familiar with physics will recognize velscalar as 'speed' as opposed to velocity.
   D. shflav - where shang gives the angle of a shot without its flavor (type), this does the opposite, that is, gives the flavor of the shot without the angle
   E. trefbody - gives the body points of a robot at the other end of a tie.
   F. trefshell - gives the shell points of a robot at the other end of a tie.
   G. trefxpos, trefypos - gives the coordinates of a tied robot.
   H. trefvelmysx, trefvelmydx, trefvelmydn, trefvelmyup - gives the velocity of a robot at the other end of your tie from your frame of reference.
   I. trefvelscalar - the speed of a robot at the end of your tie.
   J. trefvelyoursx, trefvelyourdx, trefvelyourdn, trefvelyourup - gives the velocity of a tied robot from its point of view.  That is, how fast does it think it's moving.
   K. refmulti - is the robot you're looking at a multibot?
   L. refshell - how much shell does the robot you're looking at have?
   M. refbody - how much body does the robot you're looking at have?
   N. refxpos, refypos - where exactly is the robot you're looking at?
   O. refvelscalar - how fast is the robot you're looking at moving.  In absolute terms, not in relative terms.
   P. refvelsx, refveldx, refveldn, refvelup - how fast is the robot you're looking at moving FROM YOUR POINT OF VIEW.  If you're heading towards a stationary object, it's refvelup will appear to be negative.
   Q. hit - Has your bot been hit by another bot?

7  Returned shot vector bug fixed.
   A. For those who noticed long trails of energy shots trailing behind two bots engaged in a dogfight, this has been fixed.  The problem was that the returned energy shot was negative half the speed of the    instigating body or energy shot.  This has been changed to negative half the velocity with respect to the shot bot's vector.  Bottom line: dogfighting

8  Waste level of alzheimer's tentatively set to 400 instead of 1000.  Also changed from a constant to a variable, so a future custom set level by the user is easier to implement.

9  Massive simulation speedup.  The simulation has been drastically streamlined, allowing both larger and longer simulations.  Individual results may vary, but the effects are most pronounced on simulations with     >1000 bots.  My computer has managed to quadruple the speed of those simulations.

10  Info shots (shots of positive value) now degrade shell the same amount as body shots do.

11  New bot files loaded from the options form are now automatically assigned a random color, 5 bots and 3K energy for the sim.

12  Shot decay changed to be relative to the firing bot's vector, so fast bots can fire a shot ahead of them that travels as far ahead of them as a stationary bot's shot would.

13  Bots are now charged energy for how much their velocity changed instead of how much they wanted it to.  That is, if a bot stores a value of 32000 in .up, it doesn't get charged 32000 * movement cost.  It gets      charged change in velocity * movement cost (actually: change in velocity * movement cost * mass, but since mass is factored out in figuring velocity change, mass had to be factored back into the cost at the     end).

14  Long standing status bar bug fixed - The status bar wouldn't start properly when a simulation was restarted.  This has been fixed.

15  One more bug fixed that always caused an overflow. The level of Vloc (venom location) now cannot exceed 32000.

16  Problems with saving / loading settings files have been sorted out.

Changes for 2.34

1  Fixed walls so that they don't get knocked around or killed by tie feeders.

2  Added "dist" operator so that a robot can calculate the distance between its own coordinates and those of another.

3  Modified the effects of shell to include defence against information shots and viruses. Shot strength depends on distance and the body size of the bot firing it.

4  Raised the upper limit of shell to 200 for uni-bot and 400 for multi-bot

5  Raised upper limit of slime to 200 for uni-bot and 400 for multi-bot. Also changed the way that slime degrades. Now loses 1/50 of its current value per cycle.

6  Disabled venom and shot attacks on delgene memory location.

7  placed limits of 100 points for externally stimulated memory locations mkshell, mkslime, strpoison, strvenom, fdbody, strbody

8  Modified movement routines such that a single up, dn, sx or dx from any part of an MB (within reason) will efect the whole MB with respect to accelerations.
    This only extends to robots that are currently directly attached to the robot using the move command.

9  Added .shang to supplement .shup, shdn, etc. .shang returns the angle of a shot that hits the robot but doesn't give the flavor.

10  New and improved mutations interface. Fixed a bunch of bugs in the mutations routines and added a lot of new readbacks for the information window.
     2 new controls also added.

Changes for 2.33

1  A whole bunch of bugs relating to internet sharing fixed. Now working perfectly every time on my test version. Please report errors

2  A new era of messing about has arrived! The new "operator", "angle" has arrived on the scene. This allows the robots an even greater sense of direction.
   They can now calculate the exact angle needed to reach a specific destination
3  Added a button to the toolbar to disable "POFF"s when robots die. The piccy leaves a bit to be desired but what the heck.

4  Severely modified database saving in response to some questions and suggestions.
    The database now saves a complete DNA of each robot when it dies. The DNA is split into separate genes for ease of reading.

5  Added a "Snapshot" button to the toolbar. It is only active when database saving is enabled. The "Snapshot" buttom saves a copy of every living robot's DNA
   into the database.
   Open it into a spreadsheet or database program as a "CSV" ("comma separated value" or "comma delimited value") file.
   This should spruce up the ability of evolution breeders to check out their robots to find the best one.

6  Modified Snapshot so that it is now completely independant of database storage

7  Added error handling to Snapshot and database routines

8  Added gene transferal (viruses). Robots use a series of new commands and functions to manage their own genomes.
    a. Store a value into .mkvirus to copy a specific gene, represented by the stored value, into a virus. A timer is used to count down the cycles remaining until
        the virus is complete.
    b  .vtimer allows the robot to check on the progress of its new virus particle
    c  .genes reads back the number of genes currently in the robot's genome.
    d  .genelen reads back the length of the robot's genome.
    e  Store a number into .vshoot to fire a particle containing a the virus. The number determines the amount of energy (shot range) given to the virus.
    f   .delgene allows a robot to delete a specific gene from its own genome.

    This whole section is still a little experimental and will most likely be refined more later.

Changes for 2.32

1  Venom bug fixed. Now .venom reads back the correct value at all times.

2  Added new Trefvar --- .trefaim. Now you can read the aim value of a tied robot.

3  Added new command --- .setaim. Now you can directly set the exact aim angle of a robot.

4  Statistical wins are now needed to acheive a victory in F1 contest mode. If the result of a contest is a statistical draw then extra rounds are automatically
    added until a clear winner emerges. In order to win a contest a robot has to win rounds equal to or greater than sqrt(rounds)+rounds/2.

5  Racial memory. During the birthing cycle, baby robots copy certain information from the memory of the parent. The copied locations are 971 through 990
   and one location is copied each cycle after the 20th cycle of the birth tie. Robots who cut their gestation periods short will miss out on the valuable
   opportunity to pass on vital information to their offspring.

6  Body shots (-6) weakened a little. Now the value contained in the shot is half of the value of the shooting robot's body instead of equal to it. After all, the
   body shots were designed to make for more efficient feeding from corpses, not to be a secret weapon.

7  Fixed problem with sharing energy. It was killing robots due to shock.

8  Modified shot feeding efficiency for MBs. They now have greater range and shot strength.

9  Modified Acceleration routines for MBs. When one part of an MB accelerates, approximately 80% of its acceleration value is transferred to any robot tied to it.
    This make the other parts of an MB accelerate too, but at no additional energy cost.

10 Lessened the effect of shell on mass. Was shell / 100 added to mass (ie. 100 shell = 1 mass). Now shell / 400 (ie. 100 shell = 0.25 mass)

11 Discovered and fixed a bug in the refvars. The robot was only scanning the viewed robt's occur list (up shoot eye etc.) to copy it into his own refvars, when
    the currently viewed robot was not the same as the one it viewed in the last cycle. Only turns out to be a problem when you overwrite a value in the refvars
    from the DNA. If this happens while viewing a member of a robot's own species then the robot it is viewing suddenly becomes prey because the value stored in
    .refeye ( .refaim etc.) stays the way it has been set until the robot views something new.

12  Added .kills to sysvars. Now a robot can directly see how many victims he has killed

13  Added custom Venom and Poison to strike specific memory sites. .Ploc sets the memory location for poison shots to hit. That location will be set to zero
     for as long as the victim is poisoned. .Vloc does the same thing for venom except that we can now use .Venval to specify a value to insert at that position. If we
     omit .Venval then a random value from 1 to 32000 is inserted instead. You can insert negative numbers also when using .Venval.

14  Fixed some bugs relating to the order in which tie functions are carried out. This was causing a few problems with specific addresses for poison and venom.

15  Poison now works on ties. It is necessary to have a poison level equal to or greater than 1/20 of the tie feeder feed rate in order for it to activate. This makes a
     maximum poison dose size of 50. Poison is only activated by a negative value in .tieval (tie feeding)

16  Fixed a bug that made -6 shots way too powerful. -6 shots are also now unable to penetrate shells at all. They just lower the shell value slightly. Should level the
     playing field a little.

17  Made tie feeding proportional to the amount of body that the feeding robot has. Value is set to 1/10 of the body vale as a maximum feed rate. Upper limit has been
     increased to 3000 to bring it back in line with shot bots which can now reach 3000 shot power also.

18  Changed the amount of poison needed to overcome an opponent's tie feeding rate. Now need 1/4 of the tie feed rate so it should be easy to overcome small tie
     feeders but much more difficult with big ones. It was too easy to overcome the tie feeding of a very large bot. Now tanks should have an advantage over mobs.

19  Modified shots routines so that the extended firing range of large bots and MBs is now also feeding range. ie. shoot a veggie with a big MB from a long distance
     and the returned -2 shot (or poison shot) will have the same range as the attacking shot.

20  Fixed a bug with shell values becoming negative after being hit by -6 shots

21  Fixed another bug with fixpos. Robots were maintaining their velocity values even though they are stationary when fixed. This make their shots shoot off at weird
     angles since the angular velocity of shots includes a component based on the robot's current velocity.

That is it for the test version so far. let me know how it works out.

Changes for 2.31

Nothing too groundbreaking here. A few bugs sorted out and one new DNA command.

1 Bug discovered and fixed --- Information transferred by ties was never cleared from the .tieval and .tieloc memory locations. This only applied to
   information transfer and not to tie feeding so unless you are trying to use one robot to program another's memory locations, you probably never
   even noticed

2 Added a new feature which enables a robot to control the "bounciness" of ties attached to him. The command is called "stifftie". The default value is zero but you can
  enter any value up to 40. The higher the number, the stiffer the ties get. There is also a slight penalty in reduced movement when using this command.

3 A couple of other very minor bugs fixed that I can't even remember.

4 Modified the new "custom color" option in the robot selection window. We now have RGB sliders with an active color panel that displays the new color.
   Also fixed the routine that made the "custom color" window pop up every time a robot with a "custom" color was selected from the robots list.

NOTE:   The tutorial for V2.3 WILL NOT work unless you run V2.31 as fix 1 and 2 enable "Multi-Bot" to function correctly.

Changes for 2.3

1 Costs have been altered and a new movement cost setting has been included in the options screen.

2 Contest mode (or Formula 1 mode) has been added to the game. In it you can choose the number of contests required for your match.
   You can also select the sampling frequency of the calculation routines. These can be quite memory intensive so I designed them not to
   check for a winner on evey cycle. I would recomend a setting of somewhere between 20 and 100.
   A checkered flag will appear on the tool bar to show that you are in contest mode.
   An information window will also be displayed. This contains the color, name and current population of the competing species.

3 Corpses can now be made to decay in a number of ways.
   a  Normal mode. They just lose a bit of body each round.
   b  Waste mode. They emit shots in random directions containing a small amount of waste as they decay. Good for a veggie garden maybe?
   c  Energy mode. They emit shots of energy in random directions.

4 The size and frequency of the corpse decay can also be defined from the options menu.

5  Restart mode added. Check this box to automatically re-start a SIM when all of your robots have died.

6  DNA Help feature added to the "help" menu. All of the new and old DNA stuff is in there in a (hopefully) easy to follow format.

7  Body points now contain 10 energy points so energy storage is much larger than before. However it is much less likely for robots to get physically bigger now.
   Of course you can store energy away as much as you like and your robot will eventually get tubby.

8  Backward compatability added to all save files for options, single robots and entire simulations. In theory, internet sharing should also work now
    Thanks to Carlo for a backward compatability routine on the save/load routines.
    You should be able to load up all of your old save files. (should!!! not Will!!)

9  Security feature added to save/load routines. Should prevent people from releasing mutated robots with changed names back to the server.
    Again thanks to Carlo for that routine.

10 New commands

    a .reffixed and treffixed.   Now you can tell if someone else is fixed of not.

    b .xpos and .ypos.   Complete co-ordinate system. .ypos shares the same mem location as .depth. They are completely interchangable.

    c .trefbody  Read the body value of a tied robot.

    d Myvars  A complete set of memory locations that mirror the refvars. Self explanitory really.

    e .memloc and .memval   Allows a robot to read the value stored in the viewed robot's .memloc. Value is returned to .memval.

  Example of a rather complex way to recognize conspecs. I am sure you will find better uses for the pair.
   *.eye5 0 !=
   600 .memloc store

   *.eye5 0 !=
   *.memval *.myeye =
   628 .aimdx store

    f .tmeloc and .tmemval   As above but for tied robots. Requires .readtie.

Changes in 2.2

1 New controls and read backs added
  a  .fixed  A value of 0 means the robot can move freely. A value of 1 means it is fixed in place (like a blocked alga)
  A robot can freely switch this on and off by means of .fixpos
  b  .fixpos   Set this to non-zero to fix your robot in place. You can pretend to be a mussel or a coral polyp. Maybe the root
  of a gently swaying multibot that stings everthing it sees for food that is then shared through the whole MB
  c  .daytime   Why have a day / night cycle if the robots can't tell when they change. Reads back 1 for day and 0 for night.
  d  .depth   Again why try to simulate a water column environment unless a robot has a sense of depth. Reads back the
  Y co-ordinate from the program. In larger size sims this becomes MUCH larger at the bottom of the pond. Use
  it in combination with bouyancy and .daytime to create a day / night cycle of migrations up and down the water

2 Other changes
  a     Damage from shots (-1 and -6) is now proportional to the body size of the robot firing the shot. Damage from a -1 shot
   is body/20 so a robot with a body size of 20,000 will do 1000 points of damage per shot but a robot with a 2000 body will only do 100
  b     Critical damage. If a robot is damaged to a total of more than 1/2 of his initial energy points, he dies of shock. His remaining
   energy points will be added to his body points and will be available as "corpse" meat
  c   Program streamlined considerably. Now runs a whole lot faster (at least on my PC). The difference will mainly be noticed when a
   large number of corpses begin to build up. The program largely bypasses corpses to make this possible. Also bypasses robots
   that currently have no ties during a number of procedures. Makes shot-bot sims run faster.

That is all the changes I can think of right now.

have fun and let me know if it doesn't work


There you go.
Title: hi everone
Post by: MrMound on April 16, 2005, 10:21:07 PM
thanks a bunch
Title: hi everone
Post by: PurpleYouko on April 16, 2005, 10:22:50 PM
Bloody hell Num!  :blink:

That is some pretty heavy reading for the poor guy.

Mrmound - Are you saying that you still can't get the updates from the DB sites?

You are only running V2.1?

Do you want one of us to email you the latest version?
Title: hi everone
Post by: MrMound on April 16, 2005, 10:25:20 PM
sure I have no idea why your guys' downlods dont work on my computer B)
Title: hi everone
Post by: shvarz on April 17, 2005, 12:18:22 AM
Did you try this: Right-click on file, choose "Open with", select your unzip program?  This should open your file just fine, then extract.
Title: hi everone
Post by: MrMound on April 17, 2005, 12:23:46 AM
ill try it
Title: hi everone
Post by: PurpleYouko on April 17, 2005, 10:45:54 AM
I have emailed you the 2.36.5 upgrade  :D
Title: hi everone
Post by: MrMound on April 17, 2005, 03:41:32 PM
thanks PY

on my computer when I right click on it it only has open not open with
Title: hi everone
Post by: Numsgil on April 17, 2005, 03:45:41 PM
I think it's safe to say that your computer is very ill.
Title: hi everone
Post by: MrMound on April 17, 2005, 03:49:23 PM
me too. its also rather old B)
Title: hi everone
Post by: PurpleYouko on April 17, 2005, 03:59:33 PM
What version of windows are you running and what zip program do you have.

I use Winrar. It is more versatile than Winzip and can open a whole bunch of different types of compressed files.

Get it here (http://www.rarlab.com/download.htm)

Download the beta version (the top one) because that way it is free.
Title: hi everone
Post by: MrMound on April 17, 2005, 04:02:55 PM
its windows 98 and I will download winrar
Title: hi everone
Post by: MrMound on April 17, 2005, 04:40:30 PM
wahoo! :boing: it works.thanks PY winwar actually extracts the files.  you wont have to send me any more emails.  thanks again.