Author Topic: Discussion: Ties  (Read 5516 times)

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Discussion: Ties
« on: June 23, 2006, 11:43:40 AM »
Relevant old topics:
New Tie Structures
Tieports

Nums' new tie paradigm for the C++ version

We need a new system of controling ties for the Visual Basic version. The curent system is very unwieldy, can only control one tie at once, and isn't very powerful or simple to program/evolve.
For example, to transfer energy through a tie under the current system you must:
[tie phase] .tienum store
-1 .tieloc store
[nrg transfer value] .tieval store
Which is far too much for such a simple action IMO, and nearly impossible to evolve

What's the community consensus on this?

Discuss  

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Discussion: Ties
« Reply #1 on: June 23, 2006, 01:05:50 PM »
I'm working on something else at the moment, but if nothing definitive emerges here in the next few days, I will put forward a concrete proposal for comment.
Many beers....

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Discussion: Ties
« Reply #2 on: June 23, 2006, 02:27:37 PM »
Ater some thinking, here's what I've come up with:

It's very similar to PY's system, and also takes quite a bit from Nums' system too (except doesn't have a settie equivelant)

Quote
NAME      -   SYNTAX               -   FUNCTION

Commands
readtie      -   [memory location] [tie identifier] readtie      -   reads back the value of the selected memory location in the bot you are tied to through the selected tie, and puts it on the stack
writetie      -   [value] [memory location] [tie identifier] writetie   -   writes the chosen value into the selected memory location in the bot you are tied to through the selected tie. If -1 is used then energy is transfered. Other negative numbers can be used to transfer shell and slime etc.
readtielen      -   [tie identifier] readtielen         -   places the actual length of the selected tie on the stack
settielen      -   [value] [tie identifier] settielen         -   changes the natural length of the selected tie
stifflen      -   [value] [tie identifier] stifflen         -   changes the rigidness of the selected tie to changes in length
readtieang      -   [tie identifier] readtieang         -   places the angle of the selected tie on the stack
settieang      -   [value] [tie identifier] settieang         -   changes the angle of the selected tie
stiffang      -   [value] [tie identifier] stiffang         -   changes the rigidness of the selected tie to changes in angle

Write sysvars:
.tie      -   [value] .tie store            -   creates a new tie
.deltie      -   [tie identifier] .deltie store         -   deletes the selected tie

Read sysvars:
*.birthtie      -   N/A               -   how many birth ties am I connected to?
*.numties      -   N/A               -   how many ties am I connected to?
*.multi      -   N/A               -   how many hard ties do I have?

if [tie identifier] is positive, then a tie phase is being specified
if [tie identifier] is negative, then a tie port is being specified

the stifflen and stiffang commands allow a bot to control the rigidity of its ties to external influence, either to create rigid 'bones' or springy structures

Thoughts? Criticisms?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Discussion: Ties
« Reply #3 on: June 23, 2006, 03:13:52 PM »
The "New Tie Paradigm", if settie is set to 0 (default) would behave very much like the command side of what you're proposing.

settie is like a toggle between an implicit and explicit mode that changes the way tie commands work (and how many values they take from the stack, which may or may not be a good idea).

Offline Elite

  • Bot Overlord
  • ****
  • Posts: 532
    • View Profile
Discussion: Ties
« Reply #4 on: June 23, 2006, 03:23:33 PM »
Oh, I didn't see that bit
Looks like you've got it all covered for DB C++  

My only concern is programming that into 2.4X - should we take all of it, or just the 'implicit' or 'explicit' parts? How difficult would it be?

Updating all the tie actions when settie is set to a different tie - would that be hard to implement? Or would it be made easier due to the additional flexibility in the genome in 2.4?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Discussion: Ties
« Reply #5 on: June 23, 2006, 09:57:45 PM »
Programming wise, it's really not that hard.  The C++ code could be transposed back into VB for this purpose without too much fuss.

The only issue I see is making the DNA more difficult to decipher, since writetie and readtie could take additional numbers off the stack or not.  For the C++ version I'm working on Bot controls to make this less of a problem, but it could cause difficulty in 2.4.