Author Topic: Elemental Out/In Trace  (Read 7791 times)

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Elemental Out/In Trace
« on: January 29, 2008, 10:42:41 PM »
I've been pondering the use of 4d in the Darwin Bots simulator, and the easiest method would be to emulate a said result. So waht result would be best for 4D emulation? How about the distance point formular? In 3d the formula can be found on this site, along with the 4d formula:
http://www.foundalis.com/phy/4Dsphere.htm

Such a thing as the sphere would be impractical since it would impossible to see anything. So what about time-dependent elementals that linger around once a bout emmits a value other than 0 through the out ports. This field created would be in the same place that the out points were on the bot, and would just change the values of any bot's in ports for that area. It would not be vissible to the eye, or it would greatly interupt any sort of vision for the bot, but the 5th in port would be able to tune to any in port and locate a desired value of a known enemy. This would very useful to hunter bots and camo bots. being able to fool your hunter with a simple change of the out ports or even switching to random values to try and mask yourself. As time went on, the field it affected would become to large to matter and would desentigrate.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Elemental Out/In Trace
« Reply #1 on: January 30, 2008, 11:57:33 PM »
I'm not sure what you're point is with the 4D sphere (perhaps the idea of an expanding sphere through time?) but I'm planning a sense of "smell" that would work very similarly to this.  A bot would emit (whether on purpose or accidental) an "odor" that would expand at a fixed rate (to represent diffusion), and bots could "smell" various odors and get an odor strength and gradient (the direction the smell increases in intensity).

As for in/out, I'm probably going to increase the number to at least 10.  I consider it a prime candidate for basic bot communication between individuals.  The more bandwidth available (ie: the more in/out pairs), the more complex the possible range of observable behaviors can be.

I think in the present version even we can expand easily to 10 in/out pairs.  Eric, it might be a good idea to look in to that.  I think it was a change I made for the C++ version that never made it back in to the VB version.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Elemental Out/In Trace
« Reply #2 on: January 31, 2008, 01:00:09 AM »
Quote from: Numsgil
I think in the present version even we can expand easily to 10 in/out pairs.  Eric, it might be a good idea to look in to that.  I think it was a change I made for the C++ version that never made it back in to the VB version.
Easily done.  I'll put it on the list.

In addition, I'd like to add some additional ways to rendevuez with bot refvars and in/out pairs besides seeing one another in the focus eye.  There was a request for example, for impacts to trigger refvar and in/out pair loading so that blind bots can feel what they bump into.

I'd also like to perhaps add a bot number mechanism whereby a bot could determine a bot's number in the rob array, store it and then access refvar info on it later via that number (if the same bot is still alive and perhaps within some critical distance).
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Elemental Out/In Trace
« Reply #3 on: January 31, 2008, 07:14:45 AM »
Quote from: EricL
In addition, I'd like to add some additional ways to rendevuez with bot refvars and in/out pairs besides seeing one another in the focus eye.  There was a request for example, for impacts to trigger refvar and in/out pair loading so that blind bots can feel what they bump into.

Definately a good idea.  Maybe we do something like -5 focuseye is actually a bump-sensor instead of an eye.

Quote
I'd also like to perhaps add a bot number mechanism whereby a bot could determine a bot's number in the rob array, store it and then access refvar info on it later via that number (if the same bot is still alive and perhaps within some critical distance).

I do think that some sort of accessible serial number is a good idea.  I wouldn't tie it to the rob array (or the unique robot serial numbers which are really the number of robots there have been), for practical and philosophical reasons, but some sort of random number between -32000 and 32000 that identifies a robot more or less uniquely since birth allows bots to remember things about a specific bot instead of just a certain kind of bot.  Things like "bot 45 attacked me 100 cycles ago."  You can then even spread that information around to your friends.

Not sure what you mean about semi-remote refvar info using that serial number.  What's your thinking on this?  Some sort of smell sense or something?

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Elemental Out/In Trace
« Reply #4 on: January 31, 2008, 08:06:10 AM »
maybe the smell sensor could be placed somewhere other than the 5th eye, we have a lot of sensors already hard-wired to the fifth eye, maybe a couple of sensors on the sides or even rear? Or maybe the smeel sensor could be adjustable, making the phase follow your nose more popular.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Elemental Out/In Trace
« Reply #5 on: January 31, 2008, 11:07:15 AM »
I don't garbage collect the robot array (but I do shrink it as high numberred bots die) so the bot array index is a unique ID for a bot we could use for this albeit one that is only good until the bot dies.  Bots are born and die too fast for us to try and define a real guid that fits in -32000 -> 32000 and rely on that for clean up of broken bot links so I'm thinking we just use the rob array index and in cases where a new bot has taken that slot, well, we just live with the fact that the bot may be accessing data from a bot other than what it thinks.   Putting a distance limit on this would reduce but not eliminate the possibility of this happening.  Think of it as a degree of uncertainity bots must live with when they try and get info on bots they can no longer see.

Things like "bot 45 attacked me 100 cycles ago" or "bot 45 is my offspring and he went thataway 2 cycles ago so ignore any bots in that direction until he's this far away from me" are exactly what I have in mind with this.  An aid to short term memory and vision that helps a bot keep track of nearby bots and lets them focus on those that are threats while ignoring or perhaps cooperating with those who arn't.

I don't like the analogy of comparing this to smell or similar.  It's not diretional, its not really a sense at all but rather more of a way to remember things and get info on things you've seen or touched recently.

Note I would probably want to put some sort of distance limit on this, perhaps twice the maximum vision range or similar.  I think it may be going too far to allow a bot to continue to intuit another's location long after it first saw it, when half way across the field.
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Elemental Out/In Trace
« Reply #6 on: January 31, 2008, 06:16:35 PM »
My issue with using the robot array index is that it could be used in nefarious ways to help with conspec recognition, robot age, telling if it's the beginning of the simulation, that sort of thing.  A random index ensures that the robots get a unique identification tag without gathering information that they shouldn't.

As for using it to collect refvar information, I'm concerned that it's in all ways superior to using actual eyes.  You wouldn't have to worry about tracking the target, keeping an eye on it, etc.  I don't see the downside.

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Elemental Out/In Trace
« Reply #7 on: January 31, 2008, 06:54:41 PM »
Quote from: Numsgil
My issue with using the robot array index is that it could be used in nefarious ways to help with conspec recognition, robot age, telling if it's the beginning of the simulation, that sort of thing.
I don't see how.  A bot's position in the array has no relationship to those things.  The array is sparse with no locality.  I've changed how it works considerable over the years for perf reasons...

Quote from: Numsgil
A random index ensures that the robots get a unique identification tag without gathering information that they shouldn't.
This is essentially what the array index is.

Quote from: Numsgil
As for using it to collect refvar information, I'm concerned that it's in all ways superior to using actual eyes.  You wouldn't have to worry about tracking the target, keeping an eye on it, etc.  I don't see the downside.
You would still have to do something to load the refvars based on a rememberred ID, akin to looking at something with .eye5.  Initally, you would only be able to do this once per cycle I.e. "focus on" only one thing per cycle be that via .eye5 or via a rememberred bot ID.  If you were checking on that bot you saw 10 cycles ago, you would not be able to inspect the properties of the bot in .eye5 during the same cycle.   Yes, it lets you track bots you've once saw, but it does not tell you about bots you haven't seen yet.  You have to see a bot to get it's ID before you could use this.   It's not a substitute for vision.  And if refxpos and refypos are the big worry, we could exclude them.  Hell, I'd be happy to loose them as refvars entirely.  Ant bots could cooperate and communicae their position to each other by pushing their own xpos ypos to .out1 and .out2 for example, but this would be voluntary.
Many beers....

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Elemental Out/In Trace
« Reply #8 on: January 31, 2008, 06:55:20 PM »
Quote from: EricL
I don't garbage collect the robot array (but I do shrink it as high numberred bots die) so the bot array index is a unique ID for a bot we could use for this albeit one that is only good until the bot dies.  Bots are born and die too fast for us to try and define a real guid that fits in -32000 -> 32000 and rely on that for clean up of broken bot links so I'm thinking we just use the rob array index and in cases where a new bot has taken that slot, well, we just live with the fact that the bot may be accessing data from a bot other than what it thinks.   Putting a distance limit on this would reduce but not eliminate the possibility of this happening.  Think of it as a degree of uncertainity bots must live with when they try and get info on bots they can no longer see.

Things like "bot 45 attacked me 100 cycles ago" or "bot 45 is my offspring and he went thataway 2 cycles ago so ignore any bots in that direction until he's this far away from me" are exactly what I have in mind with this.  An aid to short term memory and vision that helps a bot keep track of nearby bots and lets them focus on those that are threats while ignoring or perhaps cooperating with those who arn't.

I don't like the analogy of comparing this to smell or similar.  It's not diretional, its not really a sense at all but rather more of a way to remember things and get info on things you've seen or touched recently.

Note I would probably want to put some sort of distance limit on this, perhaps twice the maximum vision range or similar.  I think it may be going too far to allow a bot to continue to intuit another's location long after it first saw it, when half way across the field.

So this would be used to show changes in speed and trajectory? Or would it only readback one or the other? Also are there two noses or just one? Stero Smell Vision would allow a bot track two seperate paths at once to make sure that bot A did not go to bot B for help. I like the idea of distance limitations, but I think a strength eleminator would greatly change the field of usuable information. I.E. the original path the bot made would contain the information longer than say the outside edges that inherent this information. Doing that would really make smelling for bots dificult to do with certain search genes. Making the smell genes less of a primary viewer, but a clever auxiliary.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Elemental Out/In Trace
« Reply #9 on: January 31, 2008, 10:34:07 PM »
Quote from: EricL
The array is sparse with no locality.  I've changed how it works considerable over the years for perf reasons...

Ah, that changes things.  Then I have no objections.  I just didn't like the idea of bots 1-10 being the initial bots of a league match, and bot saying "oh, I'm bot #8, I must be one of the original."

Quote
Quote from: Numsgil
As for using it to collect refvar information, I'm concerned that it's in all ways superior to using actual eyes.  You wouldn't have to worry about tracking the target, keeping an eye on it, etc.  I don't see the downside.
You would still have to do something to load the refvars based on a rememberred ID, akin to looking at something with .eye5.  Initally, you would only be able to do this once per cycle I.e. "focus on" only one thing per cycle be that via .eye5 or via a rememberred bot ID.  If you were checking on that bot you saw 10 cycles ago, you would not be able to inspect the properties of the bot in .eye5 during the same cycle.   Yes, it lets you track bots you've once saw, but it does not tell you about bots you haven't seen yet.  You have to see a bot to get it's ID before you could use this.   It's not a substitute for vision.  And if refxpos and refypos are the big worry, we could exclude them.  Hell, I'd be happy to loose them as refvars entirely.  Ant bots could cooperate and communicae their position to each other by pushing their own xpos ypos to .out1 and .out2 for example, but this would be voluntary.
 

My primary concern is with dog fighting.  Specifically evasion.  When you're dog fighting, you only care about the bot you're fighting.  Other bots are only distractions.  One of the nice things about the current system is that it's possible to sort of evasive maneuver your way out of a dog fight.  Especially if the enemy in question is relatively stupid.  Something like -100 .dx store can usually get you away from an animal minimalis type bot.  Info shots or venom that cause the other bot to turn away also work.

So all that said, if you removed all those spatial clues, I think I might be okay with it.  Maybe strictly limit the information you can determine to the in/out pairs and maybe memloc/memval.

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Elemental Out/In Trace
« Reply #10 on: February 02, 2008, 07:39:28 AM »
Hmm, I've got a strange feeling here.  
Oh my god, who the hell cares.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Elemental Out/In Trace
« Reply #11 on: February 02, 2008, 12:41:11 PM »
Quote from: Numsgil
Quote from: EricL
The array is sparse with no locality.  I've changed how it works considerable over the years for perf reasons...

Ah, that changes things.  Then I have no objections.  I just didn't like the idea of bots 1-10 being the initial bots of a league match, and bot saying "oh, I'm bot #8, I must be one of the original."

Quote
Quote from: Numsgil
As for using it to collect refvar information, I'm concerned that it's in all ways superior to using actual eyes.  You wouldn't have to worry about tracking the target, keeping an eye on it, etc.  I don't see the downside.
You would still have to do something to load the refvars based on a rememberred ID, akin to looking at something with .eye5.  Initally, you would only be able to do this once per cycle I.e. "focus on" only one thing per cycle be that via .eye5 or via a rememberred bot ID.  If you were checking on that bot you saw 10 cycles ago, you would not be able to inspect the properties of the bot in .eye5 during the same cycle.   Yes, it lets you track bots you've once saw, but it does not tell you about bots you haven't seen yet.  You have to see a bot to get it's ID before you could use this.   It's not a substitute for vision.  And if refxpos and refypos are the big worry, we could exclude them.  Hell, I'd be happy to loose them as refvars entirely.  Ant bots could cooperate and communicae their position to each other by pushing their own xpos ypos to .out1 and .out2 for example, but this would be voluntary.
 

My primary concern is with dog fighting.  Specifically evasion.  When you're dog fighting, you only care about the bot you're fighting.  Other bots are only distractions.  One of the nice things about the current system is that it's possible to sort of evasive maneuver your way out of a dog fight.  Especially if the enemy in question is relatively stupid.  Something like -100 .dx store can usually get you away from an animal minimalis type bot.  Info shots or venom that cause the other bot to turn away also work.

So all that said, if you removed all those spatial clues, I think I might be okay with it.  Maybe strictly limit the information you can determine to the in/out pairs and maybe memloc/memval.

Effectiveness in the bot is all in the DNA.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
Elemental Out/In Trace
« Reply #12 on: March 19, 2008, 01:11:33 AM »
Quote from: rsucoop
maybe the smell sensor could be placed somewhere other than the 5th eye, we have a lot of sensors already hard-wired to the fifth eye

Depends what you mean with sensors. If you mean sensors as in real sensors, then no; but if you mean sensors as in the .ref values, then it would be hard to put them anywhere else. The bots are "seeing" the characteristics of the other bots. The nose could start off facing the direction of the fifth eye eg. the front, and be moved and broadened just like the eyes.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Elemental Out/In Trace
« Reply #13 on: March 19, 2008, 02:57:54 AM »
Wouldn't really be a nose, be more like a general sensing ability around a bot. Although they wouldn't be able to tell a specific location for a bot (unless it's kind enough to upload it); they could still have an idea of what the other bots around them are doing or even communicate to previously sighted conspecs.

Be really cool to create true swarming/pack/herd behaviors with it.

Like the idea about eliminating most of the refvars, except for the more useful/accurate refbody/refnrg types.

Errr... With a fair degree of certainty the bots could use epigenetic locations to tell if they're one of the first few. Wouldn't be perfect though, since they'd be in trouble if another bot messed with their system.


Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Elemental Out/In Trace
« Reply #14 on: March 19, 2008, 08:29:01 PM »
A bot would send a packet; the packet is one smell molecule of information containing anything you want to know about a bot except DNA things. The packet requires a) nothing or  small amount of energy or maybe just as a waste product. The packets would merely change ref info (including the eye returns, meaning a bot could see the smell, or at least sense it/ it may be best to actually use a nose to sniff for these packets). A bot could attempt to decifer the packets for information to determine the next action, but the chances of failure are determined by the rate the packets decday, and the mutations that occur as they decay. The production of the packets would essentially be involuntary, as smell happens from waste and everything, and nothing in the environment should be able to create these packets, unless we want to add smell to everything.