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

Pages: [1] 2 3 ... 12
Announcements / 2.44.01 Released
« on: November 29, 2008, 08:14:07 PM »
2.44.1 has been released.  The source code has also been posted.

There are very few changes between 2.44 and 2.44.1.  A few minor bug fixes is all, in the area of the species list on the options dialog.

Regrettably, this is the last and final release you will see from me.   For serveral reasons I will not go into, I am unable to play a role in DB development going forward.  My hope is that someone with the skill set and inclination to take over the code from here will emerge.  I will attempt to honor requests for assistance along these lines if they are sent to me as email.

You may still see me around the site occasionally, but most likely seldomly.

It's been an honor.


Bugs and fixes / Auto-Species forking algorithm issue with big berthas
« on: September 20, 2008, 09:18:36 PM »
The algorithm used for forking a species once the forking conditions have been met has a problem in 2.43.1M which can result in species proliferation in certain cases.   Currently, when the forking conditions are met, the code chooses a bot at random on which to base the new species and adds to the new species all of that bot's descendants and any closely related extant ancestors.  This can miss the case where the sole reason a species meets the forking criteria in the first place is due to a single, long lived "big bertha" bot whose accumulated mutations and generational distance are the sole reason for the forking in the first place.

It's probably too computationally intensive to perform a genomic or generational grouping analysis of a species in order to determine clumping of extant members, but the current algorithm has the problem of leaving the long-lived, genetically and generationally distant bot grouped in with it's distant cohorts, making it likely the species will be forked again and again.      

Not precisely sure what I'm going to do about this in 2.43.2 - I need to play around a little - but I will likely include all extant ancestors regardless of generational distance in the new species as well as potentially choosing the oldest bot in the species to form the basis of the new species.

Bugs and fixes / Internet Pop Graph Display issue when large # of species
« on: September 20, 2008, 08:47:40 PM »
The Internet Populations graph can give bogus info when the number of species in IM exceeds the max number of things graphs can display (66 I think).   I am aware of this issue and working on a fix for the next version.

Bugs and fixes / 2.44 Released
« on: September 20, 2008, 08:02:41 PM »
This topic is just a place for me to keep track of the changes I make from one version to another, in this case from 2.43.1M to version 2.44. It is not the complete list of stuff in the next drop (yet) just the stuff I have completed to date. I will edit this post as I complete changes and start a new topic for each new release.

If there is a link to an interim release attached to this topic, it is a stable buddy drop which you are encouraged to try. Such 'between release' exes will have letters following the release version e.g. 2.43a.

If you have feature requests or bug reports for this version, please report those as separate topics in the Bug Reports forum and be sure to include the specifc version, a complete description of the behaviour and how it differs from what you expect and if possible, an attached sim file.

1) Lots of bug fixes.
2) New automated species forking capabilities.  Uses genetic distance and generational distance (see below).  When automatic species forking is used, species are forked once the maximum genetic distance and maximum generational distance for the species exceeds the values set in this dialog.  Note that setting values below 100 for either of these can result in species proliferation.   Note also that a species must have at least 10 members to be forked.  A future version will allow this value to be human modified.
3) New Genetic Distance (Maximum) graph replaces Subspecies Distance graph.  This graph displays the maximum genetic distance within each species.  The genetic distance is the number of mutations separating two extant bots.  If two extant bots A and B are of the same species, ignoring the case of sim startup, they share a most recent, common, perhaps long dead ancestor bot C.  The genetic distance between bots A and B is the sum of the number of mutations that have occurred between bots C and A and the number of mutations that have occurred between bots C and B.   The maximum genetic distance for a species is the number of mutations separating the two most distantly related bots (as measured by number of mutations) in the species.
4) New Generational Distance graph.  This graph is similar to genetic distance except that it measures generational distance.   Generational distance is the number of generations separating two extant bots.  If two extant bots A and B are of the same species, ignoring the case of sim startup, they share a most recent, common, perhaps long dead ancestor bot C.  The generational distance between bots A and B is the sum of the number of generations that have occurred between bots C and A and the number of generations that have occurred between bots C and B.   The maximum generational distance for a species is the number of generations separating the two most distantly related bots (as measured by number of generations) in the species.

2.43.1m Download

5) Lots of bug fixes related to speciation.
6) Speciation criteria now include minimum species population.
7) Species can now be renamed via the Species tab on the options dialog.

2.44 Download

When a sim is reloaded, the internal bot array numbers for bots can change.  Shots in transit need their parent bot ID updated.  This was only happening for virus shots.  An overflow when updating the parent bot's number of kills could occur when a shot in transit at the time the sim was saved caused the death of a bot after the sim was re-loaded.

Fixed in 2.43.1m

Announcements / Looking for Summer DBII programmer
« on: May 15, 2008, 12:00:09 AM »
My free time to work on DB drops dramatically June - September due to many personal projects and travel.   If there is someone who would like to own and maintain the DBII code over the Summer, please contact me.  I'll be around for questions and advice and my participation won't drop to 0, but if there is someone who has the time, skill and inclination to do more than fix bugs for the next few months, I'd be happy to hand off for awhile.   If you like it, we can arrange something longer term where multiple authors can coordinate.  Let me know.  Thanks.

Today, refvars and trefvars are populated only once per cycle,  at the beginning of the cycle based upon whatever the value of .focuseye or .readtie was at the end of the last cycle.  Changing .focuseye or .readtie mid cycle has no effect - only the last value stored matters and then only for the next cycle.  This makes it impossible to switch between eyes or ties during a cycle.  Same thing with .tienum and controlling ties.

I've been playing around and I think I can make the refvars and trefvars populate mid cycle whenever .focuseye or .readtie is modified.  This would make things like the following possible:

-4 .focuseye store
*.memval *.dnalen != and
140 .aimleft store
-1 .shoot store

-3 .focuseye store
*.memval *.dnalen != and
105 .aimleft store
-1 .shoot store

-2 .focuseye store
*.memval *.dnalen != and
70 .aimleft store
-1 .shoot store


What do people think of this?

Suggestions / Work List
« on: April 28, 2008, 01:51:11 PM »
Here is the prioritized list of things I plan to work on in the next few monhts.   This topic will be updated as work proceeds.

Please feel free to reply to this topic if you don't see your favorite feature request or want to change the order of work.

Work list in priority order:

1) Crashing Bugs
2) Sim File round trip bugs
3) Bugs impacting major fuinctionality
4) League bugs
5) Other bugs

The above always take priority over new functionality.

6) Fix internet mode connectivity issues
7) Amplification mutations
8) Find Best bot within species
9) Perf improvements - bucket logic for shape viewing, shape collision, field edge collision
10) Rationalize shot range / power sysvars
11) Better shape creation / manipulation UI
12) Make viewing bots precise as it is for shapes
13) Custom Intenet Modes - Multibot, zerobot, etc.
14) Phylogeny view - gives tree of descent for pat 100 generations
15) Hearing / Sound - requested feature
16) Average Body graph
17) Enhanced Shape functionality: pits of death, different environmental conditions, etc.  Egrid stuff essentially
18) Custom field dimensions
19) Exploding shots
20) Port to VB 2008
21) Make shots visible  
22) Make ties visible
23) Make field edge visible
24) Ties iteract with fluid resistance and friction, allowing for tie drag and swimming

Multi-Bots / Seasnake 1.0 (MB)(EricL) - 23.04.08
« on: April 23, 2008, 10:53:33 AM »
Code: [Select]
' Seasnake 1.0
' Author:  EricL
' A segmented multibot

' Out variables
' These are broadcast to everyone
def linkstate 800
def mynumexposed 801
def mychain 802

'Tie variables
'These are broadcast via ties
def targetx 415    ' .tout6
def targety 416    '.tout7

'tout1 is mychain
'tout2 is mynum
'tout3 is my linkstate

' Private Variables
'These are private to this bot only
def justreproduced 50
def mynum 51
def mylastx 52
def mylasty 53
def myvelx 54
def myvely 55

'Begin coding region

'Anti info shot logic
0 .fixpos store
0 .focuseye store

'Set my unique number
*.robage 0 =
*971 0 = and
-30000 32000 rnd .mynum store

'My unique number is one les than my parent if birthed
*.robage 0 =
*.971 0 != and
*.971 dec .mynum store

'Always set a bunch of stuff
300 .eye5width store
.dnalen .memloc store
.dnalen .tmemloc store
*.mynum .readtie store
*.mynum .tienum store
*.mynum .971 store
*.mychain .tout1 store
*.mynum .tout2 store
*.linkstate .tout3 store
*.mynum .mynumexposed store
*.xpos *.mylastx sub .myvelx store
*.ypos *.mylasty sub .myvely store

'Tie Feeding Defense
.tieval .tieloc store
1000 .tieval store

'Set my chain number if part of a caterpiller
'If the head or alone, use my number for the chain number for both sight and ties
*.linkstate 0 =
*.linkstate 3 = or
*.mynum .mychain store
*.mynum .tout1 store
0 .eye5dir store

'If the tail or in the middle, set my chain number from the guy ahead of me for both sight and ties
'Then set my number to one less than the guy in front of me.
*.linkstate 1 =
*.linkstate 2 = or
*.tin1 .mychain store
*.tin1 .tout1 store
*.tin6 .targetx store
*.tin7 .targety store

*.linkstate 1 =
*.linkstate 2 = or
*.tin2 1 sub .mynumexposed store
*.tin2 1 sub .tout2 store

'Get rid of the birth tie
*.robage 1 =
*.mynum .tie store

*.robage 2 =
*.tin1 *.mynumexposed <= and
.deltie inc
100 .up store

*.eye5 0 =
*.linkstate 0 =
*.linkstate 3 = or  and
10 .up store
20 rnd 10 sub .aimdx store

'Find Conspecs
*.eye5 0 >
*.memval *.dnalen = and
*.linkstate 1 != and
*.linkstate 2 != and
*.in2 *.mynumexposed > and
*.in1 2 != and
*.in1 3 != and
*.in2 *.mychain != and
*.robage 2 > and
*.justreproduced 0 = and
*.refxpos *.refypos angle .setaim store
*.refveldx *.body mult 1000 div .dx store
*.refvelup 11 add .up store

'Find Prey
*.eye5 0 >
*.memval *.dnalen != and
*.robage 2 > and
*.refxpos *.refypos angle .setaim store
*.refveldx .dx store
*.refvelup 10 add .up store
35 .eye5width store

'Look away from your own cells
*.linkstate 3 =
*.mychain *.in3 = 
*.mychain *.in3 !=
*.in3 0 != and
*.in2 *.mynum <= and or  and
*.justreproduced 0 = and
*.setaim 314 1 rnd mult 157 sub add .setaim store
0 .eye5width store

'Body Management
'Increase body if body is less than 90% of nrg level
*.body 100 mult *.nrg 9 mult <
100 .strbody store

'Release body if body is greater than 110% of nrg
*.body 100 mult *.nrg 11 mult >
100 .fdbody store

'Waste removal
*.waste 100 >
*.waste .shootval store
314 .aimshoot store
-4 .shoot store

'Slime Production
*.nrg 5000 >
*.slime 100 < and
10 .mkslime store

'Shell Production
*.nrg 5000 >
*.shell 1000 < and
10 .mkshell store

*.thisgene 1 !=
1 .delgene store
*.thisgene 1 =
*.genes 1 > and
2 .delgene store

'Set the linksate
*.numties 0 =
0 .linkstate store
*.numties 1 =
*.tmemval *.dnalen = and
*.linkstate 2 =
*.linkstate 0 = or and
*.tiepres *.mynum = and
1 .linkstate store
*.numties 2 =
*.justreproduced 0 = and
*.tmemval *.dnalen = and
*.linkstate 3 =
*.linkstate 1 = or and
2 .linkstate store
*.numties 1 =
*.robage 2 > and
*.linkstate 0 =
*.tiepres *.mynum != and
'This is the case where the head gets shot off.  The guy behind is still linkstate 2 but the tie ahead is gone
*.linkstate 2 =
*.trefxpos 0 =  and or and
3 .linkstate store

'Too many ties or other tie problems
*.numties 2 >
*.linkstate 3 =
*.numties 1 > and or
*.linkstate 1 =
*.numties 1 > and or
*.linkstate 0 =
*.numties 0 > and or
*.numties 1 =
*.linkstate 1 !=
*.linkstate 3 != and and or
*.numties 1 =
*.linkstate 1 =
*.tiepres *.mynum != and and or

*.numties 1 =
*.linkstate 2 = and or

*.numties 1 =
*.linkstate 3 = and
*.tiepres *.mynum = and or

'*.linkstate 3 =
'*.tin2 *.mynumexposed > and or

*.linkstate 3 =
*.tin3 3 = and or

'Delete ties from non-conspecs
*.tmemval 0 !=
*.tmemval *.dnalen != and or
*.tiepres .deltie store

'tie to conspec
*.linkstate 0 =
*.linkstate 3 = or
*.eye5 0 > and
*.memval *.dnalen = and
*.in3 *.mynumexposed > and
*.in1 0 =
*.in1 1 =
*.refmulti 0 != and or and
*.in3 *.mychain != and
*.mynum .tie store

'follow the leader
*.linkstate 1 =
*.linkstate 2 = or
*.tin1 *.mychain = and
*.trefxpos *.trefypos angle .setaim store
*.trefup .up store
*.trefdn .dn store

'Tie too long
*.tielen 100 >
*.linkstate 1 =
*.linkstate 2 = or and
*.up 10 add .up store

'Dampen wild swings
*.linkstate 3 !=
*.trefvelyoursx *.velsx sub abs 10 > and
*.velsx -1 mult .sx store

'Tie too short
*.tielen -50 <
*.tielen 0 != and
*.linkstate 1 =
*.linkstate 2 = or and
*.dn 20 add .dn store

'Keep the tie angle freely rotating
'And set the tie length and stiffness
*.multi 0 >
*.linkstate 1 =
*.linkstate 2 = or and
*.mynum .tienum store
-1 .fixang store
25 .fixlen store
100 .stifftie store

'Aim eyes to the rear for the last guy in the chain
*.linkstate 1 =
628 .eye5dir store
628 .eye5width store

'Aim eyes to the sides for the middle nodes, alternating them side to side
*.linkstate 2 =
*.mynum 2 mod 628 mult -314 add 628 *.robage 2 mod mult add .eye5dir store
200 .eye5width store

'The head looks ahead as do lone bots
*.linkstate 3 =
*.linkstate 0 = or
0 .eye5dir store

'Target Aquisition
0 .targetx store
0 .targety store
*.eye5 0 =
*.tin6 *.tin7 dist 1000 < and
*.tin6 .targetx store
*.tin7 .targety store

*.eye5 0 >
*.memval *.dnalen != and
*.in3 *.mychain != and
*.reftype 0 = and
*.refxpos .targetx store
*.refypos .targety store

'Head Shooting
*.linkstate 3 =
100 .shoot store

*.targetx 0 !=
*.linkstate 3 != and
*.targetx *.myvelx 2 mult sub .targetx store
*.targety *.myvely 2 mult sub .targety store
*.targetx *.targety angle 1256 add 1256 mod *.aim sub .eye5dir store
35 .eye5width store

'When we see something
*.eye5 10 >
*.memval *.dnalen != and
*.in2 *.mychain != and
*.eye5dir -1 mult .aimshoot store
-6 .shoot store

'Power up shots for things close up
*.eye5 20 <
1 .shootval store
*.eye5 20 >=
 5 .shootval store

'When we touch something
*.eye5 0 =
*.refxpos 0 != and
*.memval *.dnalen != and
*.in2 *.mychain != and
*.refxpos *.refypos angle -1 mult .aimshoot store
-6 .shoot store
 17 .shootval store

*.mynum .tienum store
50 .sharenrg store
50 .shareshell store
50 .shareslime store
100 .sharewaste store

*.justreproduced 5 =
*.setaim 628 add .setaim store

*.justreproduced 0 >
.justreproduced dec

*.nrg 5000 >=
*.body 500 >= and
*.linkstate 0 =
*.linkstate 1 = or and
50 .repro store
*.setaim 628 add .setaim store
5 .justreproduced store

'Make sure tie operations operate on the tie this node created
*.tiepres *.mynum !=
*.mynum .tiepres store
*.mynum .tienum store

'Store the postion for the next cycle
*.xpos .mylastx store
*.ypos .mylasty store


Internet Mode Commentary / A multibot now owns IM
« on: April 22, 2008, 01:32:10 AM »
Two hours after being introduced, Seasnake 1.0 has wiped out all other hetertrophs in IM.  My sims are running a pre-release version of 2.43.1j, which has a ton of MB related fixes, so SeaSnake may not work well in your sim if you connect a prior version, but it's pretty cool to see a multi-cellular organism, often made up of 50 cells or more, own IM...

2.43.1j out Tuesday hopefully...

DB Art / Seasnake
« on: April 21, 2008, 05:22:54 PM »
Primitive multibots snake through a field of veggies

Bugs and fixes / tref dir sysvars not working RESOLVED 2.43.1j
« on: April 21, 2008, 03:16:10 PM »
The sysvars trefup, trefdn, trefsx and trefdx had simply never been wired up in the 2.4 codebase.

Fixed in 2.43.1j

Bugs and fixes / tie length included bot radii RESOLVED 2.43.1j
« on: April 21, 2008, 02:19:19 PM »
When setting the length of a hardened tie via .fixlen, the length is specified as the distance desired from bot edge to bot edge I.e. a bot specifies the distance between it's edge and the tied bot's edge it wants the tie to gravitate to as it's natural length and not a bot center to center distance.   But when reading the length of a tie, the two connected bot radii was incorrectly included in the returned tie length, returning a larger number for .tielen than expected.

Now tie lengths as specied and read are consistant.  Neither include the connected bot radii.  

Note that tie lengths will now go negative when tied bots intersect.

Fixed in 2.43.1j

The code was setting trefaim to the integer portion of the tied bot's aim in radians, not bot turning units.  Thus the value was 200 times less than it should be.

Fixed in 2.43.1j.

Bot Tavern / Seasnake - My Amazing Multibot
« on: April 20, 2008, 02:19:21 PM »
I'm working on a really cool multibot and debugging the multibot features as I go.  It's become clear to me that multibots have tremendous inherent advantages that would totally crush the F1 field and own IM if we just got the bugs out of ties and such so that is what I am doing, building this bot as I go a test case.

I can't post a sim yet since it requires some fixes in 2.43.1j, but here's a screen shot of couple of them near some veggies.

Pages: [1] 2 3 ... 12