Author Topic: Tie-Only Custom Variables  (Read 3409 times)

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Tie-Only Custom Variables
« on: February 17, 2008, 10:38:47 PM »
As the demand for more custom variables grows, and multi-bot necessity for tie values to be read and transfered; I propose the following. Create 50 variables that only exsist inside a tie, that way a multibot could push more than one value through the tie at once, store in the tie's memory. A bot could then read from any of the values stored in the tie at once, and would not directly affect the memory in the tied bot. Communications would be streamlined alot, suddenly a multi-bot could issue an order, and every cell would know it within 1 cycle per attached bot. One problem I do see, is that multiple ties means 50 * numties of infomration that must be created, so a multibot would suddenly have a very large brain to work with. Maybe not 50 locations, but more than a dozen locatios to be effective for DB simulation.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Tie-Only Custom Variables
« Reply #1 on: February 18, 2008, 12:34:54 AM »
When I was working on the problem of ties for DB3, trying to get a bot to read and write to any memory location of a bot attached to it, I arrived at something that's very similar.  There's two tricks here:

1.  You're using 50 memory locations.  Just up it to 1000, and suddenly you can use another connected bot like an extension of yourself.  Like a dummy puppet to do with as you please.

2.  While you do need to use a buffer in the tie (so that the order that bots execute their DNA doesn't matter), you don't need to actually store a copy of the other bot's memory in the tie.  All you're interested in is what the bot's memory looked like at the beginning of the cycle, and any changes you've made to it during this cycle.

Taking the two together, I came up with a system where bots interface with memory through a "filter".  Doesn't matter if it's the bot's personal memory or an attached bot.  This filter ordinarily reads the bot's "base" memory, what it's memory looked like at the beginning of the cycle.  But if a bot stores a value to a memory location, it's stored in the filter instead of the "base" memory.

After all the bots have had a chance to execute, the filters are "applied" to the base memory.  Each bot's DNA goes first, and then any connected bots' filters are applied (probably averaging any conflicting stores).  Pretty sure I have a working version for it right now in the DNA module I wrote.  The funny part is that, even if the other bot is lame, deaf, and dumb, and alzheimic, you can still use the funny way the filters work as a large array of temporary memory to manipulate.

Something like this could be implemented in the current version.  It would mean alot of code rewrites.  Would be a major overhaul (one of the reasons I started DB3 fresh instead of directly porting the current version), but if Eric's willing I think it could be done.
« Last Edit: February 18, 2008, 12:35:36 AM by Numsgil »

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Tie-Only Custom Variables
« Reply #2 on: February 18, 2008, 03:38:07 AM »
Quote from: Numsgil
When I was working on the problem of ties for DB3, trying to get a bot to read and write to any memory location of a bot attached to it, I arrived at something that's very similar.  There's two tricks here:

1.  You're using 50 memory locations.  Just up it to 1000, and suddenly you can use another connected bot like an extension of yourself.  Like a dummy puppet to do with as you please.

2.  While you do need to use a buffer in the tie (so that the order that bots execute their DNA doesn't matter), you don't need to actually store a copy of the other bot's memory in the tie.  All you're interested in is what the bot's memory looked like at the beginning of the cycle, and any changes you've made to it during this cycle.

Taking the two together, I came up with a system where bots interface with memory through a "filter".  Doesn't matter if it's the bot's personal memory or an attached bot.  This filter ordinarily reads the bot's "base" memory, what it's memory looked like at the beginning of the cycle.  But if a bot stores a value to a memory location, it's stored in the filter instead of the "base" memory.

After all the bots have had a chance to execute, the filters are "applied" to the base memory.  Each bot's DNA goes first, and then any connected bots' filters are applied (probably averaging any conflicting stores).  Pretty sure I have a working version for it right now in the DNA module I wrote.  The funny part is that, even if the other bot is lame, deaf, and dumb, and alzheimic, you can still use the funny way the filters work as a large array of temporary memory to manipulate.

Something like this could be implemented in the current version.  It would mean alot of code rewrites.  Would be a major overhaul (one of the reasons I started DB3 fresh instead of directly porting the current version), but if Eric's willing I think it could be done.

1000 would be amzaing, that would mean a multibot would be capable of actually learning a behavior it watched.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Tie-Only Custom Variables
« Reply #3 on: February 24, 2008, 11:22:11 PM »
By adding the filter, would that disable the single memtransfer directly to the other bots memory? Such as a read command.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Tie-Only Custom Variables
« Reply #4 on: February 24, 2008, 11:33:17 PM »
Presently the mem transfer is held in a buffer anyway, because if you're robot 10 in the array, and you change robot 20's memory before robot 20 gets to run their own DNA, you have an unfair advantage.  This would just formalize that idea and increase the scope.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Tie-Only Custom Variables
« Reply #5 on: February 25, 2008, 12:17:51 PM »
Quote from: Numsgil
Presently the mem transfer is held in a buffer anyway, because if you're robot 10 in the array, and you change robot 20's memory before robot 20 gets to run their own DNA, you have an unfair advantage.  This would just formalize that idea and increase the scope.

PErhaps then we should use special ties to directly effect the memory of a bot at the event cycle in the other bot, regardleess of Bot B's gene cycle. This would prove easier for manipulating a veggie.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Tie-Only Custom Variables
« Reply #6 on: February 25, 2008, 07:15:47 PM »
Not sure I understand what you're saying.

Offline rsucoop

  • Bot Destroyer
  • ***
  • Posts: 166
    • View Profile
Tie-Only Custom Variables
« Reply #7 on: February 25, 2008, 07:19:47 PM »
Quote from: Numsgil
Not sure I understand what you're saying.
OK, so a bot is tied to another, an enemy. Before it feeds it checks, to make the nemy not delete the tie, it needs to be able to push some value into the bots memory before its genes activate. That's what I mean, a tie information transfer that happens regardless of the genes in the objective bot.