Darwinbots Forum
Welcome To Darwinbots => Newbie => Topic started by: fulizer on March 28, 2008, 09:43:51 AM
-
last time I looked there were a few empty system variables that could be used for whatever you wanted.
where are these?
also how many in/ out sysvars are there?
-
The majority of bot memory isn't used by the system. There are only 227 sysvars (version 2.43.1e) - actually I think its more like 224 as there are a few duplicate names that map to the same location. The list is below, straight from the code. Add in the genetic memory locations and you still end up with fewer than 250 locations used by the system. The rest are open for private use.
I gaurentee locations 50-175 inclusive will not be used by the system in the future. Bot authors are encouraged (but not required) to define private sysvars in this range.
As of 2.43.1e, there are 10 in/out sysvar pairs.
sysvar(1).Name = "up"
sysvar(1).value = 1
sysvar(2).Name = "dn"
sysvar(2).value = 2
sysvar(3).Name = "sx"
sysvar(3).value = 3
sysvar(4).Name = "dx"
sysvar(4).value = 4
sysvar(5).Name = "aimdx"
sysvar(5).value = 5
sysvar(6).Name = "aimright"
sysvar(6).value = 5
sysvar(7).Name = "aimsx"
sysvar(7).value = 6
sysvar(8).Name = "aimleft"
sysvar(8).value = 6
sysvar(9).Name = "shoot"
sysvar(9).value = 7
sysvar(10).Name = "shootval"
sysvar(10).value = 8
sysvar(11).Name = "robage"
sysvar(11).value = 9
sysvar(12).Name = "mass"
sysvar(12).value = 10
sysvar(13).Name = "maxvel"
sysvar(13).value = 11
sysvar(14).Name = "timer"
sysvar(14).value = 12
sysvar(15).Name = "aim"
sysvar(15).value = 18
sysvar(16).Name = "setaim"
sysvar(16).value = 19
sysvar(17).Name = "bodgain"
sysvar(17).value = 194
sysvar(18).Name = "bodloss"
sysvar(18).value = 195
sysvar(19).Name = "velscalar"
sysvar(19).value = 196
sysvar(20).Name = "velsx"
sysvar(20).value = 197
sysvar(21).Name = "veldx"
sysvar(21).value = 198
sysvar(22).Name = "veldn"
sysvar(22).value = 199
sysvar(23).Name = "velup"
sysvar(23).value = 200
sysvar(24).Name = "vel"
sysvar(24).value = 200
sysvar(25).Name = "hit"
sysvar(25).value = 201
sysvar(26).Name = "shflav"
sysvar(26).value = 202
sysvar(27).Name = "pain"
sysvar(27).value = 203
sysvar(28).Name = "pleas"
sysvar(28).value = 204
sysvar(29).Name = "hitup"
sysvar(29).value = 205
sysvar(30).Name = "hitdn"
sysvar(30).value = 206
sysvar(31).Name = "hitdx"
sysvar(31).value = 207
sysvar(32).Name = "hitsx"
sysvar(32).value = 208
sysvar(33).Name = "shang"
sysvar(33).value = 209
sysvar(34).Name = "shup"
sysvar(34).value = 210
sysvar(35).Name = "shdn"
sysvar(35).value = 211
sysvar(36).Name = "shdx"
sysvar(36).value = 212
sysvar(37).Name = "shsx"
sysvar(37).value = 213
sysvar(38).Name = "edge"
sysvar(38).value = 214
sysvar(39).Name = "fixed"
sysvar(39).value = 215
sysvar(40).Name = "fixpos"
sysvar(40).value = 216
sysvar(41).Name = "depth"
sysvar(41).value = 217
sysvar(42).Name = "ypos"
sysvar(42).value = 217
sysvar(43).Name = "daytime"
sysvar(43).value = 218
sysvar(44).Name = "xpos"
sysvar(44).value = 219
sysvar(45).Name = "kills"
sysvar(45).value = 220
sysvar(46).Name = "hitang"
sysvar(46).value = 221
sysvar(47).Name = "repro"
sysvar(47).value = 300
sysvar(48).Name = "mrepro"
sysvar(48).value = 301
sysvar(49).Name = "sexrepro"
sysvar(49).value = 302
sysvar(50).Name = "nrg"
sysvar(50).value = 310
sysvar(51).Name = "body"
sysvar(51).value = 311
sysvar(52).Name = "fdbody"
sysvar(52).value = 312
sysvar(53).Name = "strbody"
sysvar(53).value = 313
sysvar(54).Name = "setboy"
sysvar(54).value = 314
sysvar(55).Name = "rdboy"
sysvar(55).value = 315
sysvar(56).Name = "tie"
sysvar(56).value = 330
sysvar(57).Name = "stifftie"
sysvar(57).value = 331
sysvar(58).Name = "mkvirus"
sysvar(58).value = 335
sysvar(59).Name = "dnalen"
sysvar(59).value = 336
sysvar(60).Name = "vtimer"
sysvar(60).value = 337
sysvar(61).Name = "vshoot"
sysvar(61).value = 338
sysvar(62).Name = "genes"
sysvar(62).value = 339
sysvar(63).Name = "delgene"
sysvar(63).value = 340
sysvar(64).Name = "thisgene"
sysvar(64).value = 341
sysvar(65).Name = "sun"
sysvar(65).value = 400
sysvar(66).Name = "trefbody"
sysvar(66).value = 437
sysvar(67).Name = "trefxpos"
sysvar(67).value = 438
sysvar(68).Name = "trefypos"
sysvar(68).value = 439
sysvar(69).Name = "trefvelmysx"
sysvar(69).value = 440
sysvar(70).Name = "trefvelmydx"
sysvar(70).value = 441
sysvar(71).Name = "trefvelmydn"
sysvar(71).value = 442
sysvar(72).Name = "trefvelmyup"
sysvar(72).value = 443
sysvar(73).Name = "trefvelscalar"
sysvar(73).value = 444
sysvar(74).Name = "trefvelyoursx"
sysvar(74).value = 445
sysvar(75).Name = "trefvelyourdx"
sysvar(75).value = 446
sysvar(76).Name = "trefvelyourdn"
sysvar(76).value = 447
sysvar(77).Name = "trefvelyourup"
sysvar(77).value = 448
sysvar(78).Name = "trefshell"
sysvar(78).value = 449
sysvar(79).Name = "tieang"
sysvar(79).value = 450
sysvar(80).Name = "tielen"
sysvar(80).value = 451
sysvar(81).Name = "tieloc"
sysvar(81).value = 452
sysvar(82).Name = "tieval"
sysvar(82).value = 453
sysvar(83).Name = "tiepres"
sysvar(83).value = 454
sysvar(84).Name = "tienum"
sysvar(84).value = 455
sysvar(85).Name = "trefup"
sysvar(85).value = 456
sysvar(86).Name = "trefdn"
sysvar(86).value = 457
sysvar(87).Name = "trefsx"
sysvar(87).value = 458
sysvar(88).Name = "trefdx"
sysvar(88).value = 459
sysvar(89).Name = "trefaimdx"
sysvar(89).value = 460
sysvar(90).Name = "trefaimsx"
sysvar(90).value = 461
sysvar(91).Name = "trefshoot"
sysvar(91).value = 462
sysvar(92).Name = "trefeye"
sysvar(92).value = 463
sysvar(93).Name = "trefnrg"
sysvar(93).value = 464
sysvar(94).Name = "trefage"
sysvar(94).value = 465
sysvar(95).Name = "numties"
sysvar(95).value = 466
sysvar(96).Name = "deltie"
sysvar(96).value = 467
sysvar(97).Name = "fixang"
sysvar(97).value = 468
sysvar(98).Name = "fixlen"
sysvar(98).value = 469
sysvar(99).Name = "multi"
sysvar(99).value = 470
sysvar(100).Name = "readtie"
sysvar(100).value = 471
sysvar(101).Name = "fertilized"
sysvar(101).value = 303
sysvar(102).Name = "memval"
sysvar(102).value = 473
sysvar(103).Name = "memloc"
sysvar(103).value = 474
sysvar(104).Name = "tmemval"
sysvar(104).value = 475
sysvar(105).Name = "tmemloc"
sysvar(105).value = 476
sysvar(106).Name = "reffixed"
sysvar(106).value = 477
sysvar(107).Name = "treffixed"
sysvar(107).value = 478
sysvar(108).Name = "trefaim"
sysvar(108).value = 479
sysvar(109).Name = "tieang1"
sysvar(109).value = 480
sysvar(110).Name = "tieang2"
sysvar(110).value = 481
sysvar(111).Name = "tieang3"
sysvar(111).value = 482
sysvar(112).Name = "tieang4"
sysvar(112).value = 483
sysvar(113).Name = "tielen1"
sysvar(113).value = 484
sysvar(114).Name = "tielen2"
sysvar(114).value = 485
sysvar(115).Name = "tielen3"
sysvar(115).value = 486
sysvar(116).Name = "tielen4"
sysvar(116).value = 487
sysvar(117).Name = "eye1"
sysvar(117).value = 501
sysvar(118).Name = "eye2"
sysvar(118).value = 502
sysvar(119).Name = "eye3"
sysvar(119).value = 503
sysvar(120).Name = "eye4"
sysvar(120).value = 504
sysvar(121).Name = "eye5"
sysvar(121).value = 505
sysvar(122).Name = "eye6"
sysvar(122).value = 506
sysvar(123).Name = "eye7"
sysvar(123).value = 507
sysvar(124).Name = "eye8"
sysvar(124).value = 508
sysvar(125).Name = "eye9"
sysvar(125).value = 509
sysvar(126).Name = "refmulti"
sysvar(126).value = 686
sysvar(127).Name = "refshell"
sysvar(127).value = 687
sysvar(128).Name = "refbody"
sysvar(128).value = 688
sysvar(129).Name = "refxpos"
sysvar(129).value = 689
sysvar(130).Name = "refypos"
sysvar(130).value = 690
sysvar(131).Name = "refvelscalar"
sysvar(131).value = 695
sysvar(132).Name = "refvelsx"
sysvar(132).value = 696
sysvar(133).Name = "refveldx"
sysvar(133).value = 697
sysvar(134).Name = "refveldn"
sysvar(134).value = 698
sysvar(135).Name = "refvel"
sysvar(135).value = 699
sysvar(136).Name = "refvelup"
sysvar(136).value = 699
sysvar(137).Name = "refup"
sysvar(137).value = 701
sysvar(138).Name = "refdn"
sysvar(138).value = 702
sysvar(139).Name = "refsx"
sysvar(139).value = 703
sysvar(140).Name = "refdx"
sysvar(140).value = 704
sysvar(141).Name = "refaimdx"
sysvar(141).value = 705
sysvar(142).Name = "refaimsx"
sysvar(142).value = 706
sysvar(143).Name = "refshoot"
sysvar(143).value = 707
sysvar(144).Name = "refeye"
sysvar(144).value = 708
sysvar(145).Name = "refnrg"
sysvar(145).value = 709
sysvar(146).Name = "refage"
sysvar(146).value = 710
sysvar(147).Name = "refaim"
sysvar(147).value = 711
sysvar(148).Name = "reftie"
sysvar(148).value = 712
sysvar(149).Name = "refpoison"
sysvar(149).value = 713
sysvar(150).Name = "refvenom"
sysvar(150).value = 714
sysvar(151).Name = "refkills"
sysvar(151).value = 715
sysvar(152).Name = "myup"
sysvar(152).value = 721
sysvar(153).Name = "mydn"
sysvar(153).value = 722
sysvar(154).Name = "mysx"
sysvar(154).value = 723
sysvar(155).Name = "mydx"
sysvar(155).value = 724
sysvar(156).Name = "myaimdx"
sysvar(156).value = 725
sysvar(157).Name = "myaimsx"
sysvar(157).value = 726
sysvar(158).Name = "myshoot"
sysvar(158).value = 727
sysvar(159).Name = "myeye"
sysvar(159).value = 728
sysvar(160).Name = "myties"
sysvar(160).value = 729
sysvar(161).Name = "mypoison"
sysvar(161).value = 730
sysvar(162).Name = "myvenom"
sysvar(162).value = 731
sysvar(163).Name = "out1"
sysvar(163).value = 800
sysvar(164).Name = "out2"
sysvar(164).value = 801
sysvar(165).Name = "out3"
sysvar(165).value = 802
sysvar(166).Name = "out4"
sysvar(166).value = 803
sysvar(167).Name = "out5"
sysvar(167).value = 804
sysvar(168).Name = "in1"
sysvar(168).value = 810
sysvar(169).Name = "in2"
sysvar(169).value = 811
sysvar(170).Name = "in3"
sysvar(170).value = 812
sysvar(171).Name = "in4"
sysvar(171).value = 813
sysvar(172).Name = "in5"
sysvar(172).value = 814
sysvar(173).Name = "mkslime"
sysvar(173).value = 820
sysvar(174).Name = "slime"
sysvar(174).value = 821
sysvar(175).Name = "mkshell"
sysvar(175).value = 822
sysvar(176).Name = "shell"
sysvar(176).value = 823
sysvar(177).Name = "strvenom"
sysvar(177).value = 824
sysvar(178).Name = "venom"
sysvar(178).value = 825
sysvar(179).Name = "strpoison"
sysvar(179).value = 826
sysvar(180).Name = "mkpoison"
sysvar(180).value = 826
sysvar(181).Name = "poison"
sysvar(181).value = 827
sysvar(182).Name = "waste"
sysvar(182).value = 828
sysvar(183).Name = "pwaste"
sysvar(183).value = 829
sysvar(184).Name = "sharenrg"
sysvar(184).value = 830
sysvar(185).Name = "sharewaste"
sysvar(185).value = 831
sysvar(186).Name = "shareshell"
sysvar(186).value = 832
sysvar(187).Name = "shareslime"
sysvar(187).value = 833
sysvar(188).Name = "ploc"
sysvar(188).value = 834
sysvar(189).Name = "vloc"
sysvar(189).value = 835
sysvar(190).Name = "venval"
sysvar(190).value = 836
sysvar(191).Name = "paralyzed"
sysvar(191).value = 837
sysvar(192).Name = "poisoned"
sysvar(192).value = 838
sysvar(193).Name = "backshot"
sysvar(193).value = 900
sysvar(194).Name = "aimshoot"
sysvar(194).value = 901
sysvar(195).Name = "eyef"
sysvar(195).value = 510
sysvar(196).Name = "focuseye"
sysvar(196).value = 511
sysvar(197).Name = "eye1dir"
sysvar(197).value = 521
sysvar(198).Name = "eye2dir"
sysvar(198).value = 522
sysvar(199).Name = "eye3dir"
sysvar(199).value = 523
sysvar(200).Name = "eye4dir"
sysvar(200).value = 524
sysvar(201).Name = "eye5dir"
sysvar(201).value = 525
sysvar(202).Name = "eye6dir"
sysvar(202).value = 526
sysvar(203).Name = "eye7dir"
sysvar(203).value = 527
sysvar(204).Name = "eye8dir"
sysvar(204).value = 528
sysvar(205).Name = "eye9dir"
sysvar(205).value = 529
sysvar(206).Name = "eye1width"
sysvar(206).value = 531
sysvar(207).Name = "eye2width"
sysvar(207).value = 532
sysvar(208).Name = "eye3width"
sysvar(208).value = 533
sysvar(209).Name = "eye4width"
sysvar(209).value = 534
sysvar(210).Name = "eye5width"
sysvar(210).value = 535
sysvar(211).Name = "eye6width"
sysvar(211).value = 536
sysvar(212).Name = "eye7width"
sysvar(212).value = 537
sysvar(213).Name = "eye8width"
sysvar(213).value = 538
sysvar(214).Name = "eye9width"
sysvar(214).value = 539
sysvar(215).Name = "reftype"
sysvar(215).value = 685
sysvar(216).Name = "totalbots"
sysvar(216).value = 401
sysvar(217).Name = "totalmyspecies"
sysvar(217).value = 402
sysvar(218).Name = "out6"
sysvar(218).value = 805
sysvar(219).Name = "out7"
sysvar(219).value = 806
sysvar(220).Name = "out8"
sysvar(220).value = 807
sysvar(221).Name = "out9"
sysvar(221).value = 808
sysvar(222).Name = "out10"
sysvar(222).value = 815
sysvar(223).Name = "in6"
sysvar(223).value = 816
sysvar(224).Name = "in7"
sysvar(224).value = 817
sysvar(225).Name = "in8"
sysvar(225).value = 818
sysvar(226).Name = "in9"
sysvar(226).value = 819
sysvar(227).Name = "in10"
sysvar(227).value = 820
-
I gaurentee locations 50-175 inclusive will not be used by the system in the future.
Sweet
Also nice to have 10 int/out values... still a big fat zero for ties though... I feel closer to a bot when I look at it than I do when I'm tied to it...
Also since you're on the subject I thought I should add :
971-975 : Will be copied to offspring instantly.
976-990 : Will be copied to offspring through birthtie over 15 cycles. (If the tie isn't broken)
And while I'm waiting for the Sysvar page to load so I can push the Racial memmory link and wait for that page to load, I may aswell ask :
Why are the Wiki pages so insanely slow ??? The forum has virtualy no load time in comparison... and occasionaly a Wiki page will load in less than a second, but more often than not it'll take like 1-5 mins which seems like far too long for such a simple page to load... I know it's offtopic...
-
I've noticed wiki lag, too. It might be that animated GIF I have in the upper left corner. I'm pretty sure a web browser would cache it, but maybe not (it's like a meg large or something like that).
I'll play around with it when I have a chance.
-
I've noticed wiki lag, too.
Yeah, I noticed that as well.
-
The majority of bot memory isn't used by the system. There are only 227 sysvars (version 2.43.1e) - actually I think its more like 224 as there are a few duplicate names that map to the same location. The list is below, straight from the code. Add in the genetic memory locations and you still end up with fewer than 250 locations used by the system. The rest are open for private use.
I gaurentee locations 50-175 inclusive will not be used by the system in the future. Bot authors are encouraged (but not required) to define private sysvars in this range.
well that confused me
so where are they?
im pretty sure I didnt see any.
by the way im using 2.43 (still)
-
Every memory location that isn't used by sysvars is considered a free variable.
-
theres 1000 of them right?
so if eric l (in his infinate wisodm of all things darwinbot stoped at 820 there are 180 free vaiables?
theres 1000 of them right?
so if eric l (in his infinate wisodm of all things darwinbot stoped at 820 there are 180 free vaiables?
-
theres 1000 of them right?
There are 1000 memory locations. Understand, a sysvar is nothing more than simply a named memory location that the system uses for some purpose. So, yes, there are 1000 mem locations, about 250 of which are used by the system for one purpose or another, so the other 750 can be used as your own private variables. As above, I recommend staying within the 50-175 range so that future versiosn don't break your bots. So, if you want to define a private variable, just do the following at the top of your bot:
def private1 50
def someotherprivatename 51
.
.
.
Then use them like normal sysvars. I.e.
cond
*.private1 0 <>
start
1023 .someotherprivatename store
blah
blah
blah
-
You can also use def to define constant values... actualy that's all you're realy doing to begin with.
Only difference is when you name a memmory location you store something in that area (Ex : 10 .keyloc store), and fetching the value it's pointing at (So *.keyloc would be 10). If you define a constant you just call it directly (Ex : *.memval .key !=)
Basicaly the * means you want the value in this memmory location, and no star means you just want the memmory location itself.
A good example :
'Memmory location of your conspec key
def keyloc 50
'Your key value
def key 1234
cond
*.robage 0 =
start
.key .keyloc store 'Save key value in memmory location 50
.keyloc .memloc store 'Set memloc to point at memmory location 50
stop
cond
*.eye5 0 >
*.memval .key != 'If the value in oponents memmory location 50 isn't our key
start
-1 .shoot store
stop
or you could use :
cond
*.eye5 0 >
*.memval *.keyloc != 'If the value in oponents memmory location 50 isn't what we have in memmory location 50
start
-1 .shoot store
stop
So without defines this would look like this :
cond
*.robage 0 =
start
1234 50 store 'Save key value in memmory location 50
50 .memloc store 'Set memloc to point at memmory location 50
stop
cond
*.eye5 0 >
*.memval 1234 != 'If the value in oponents memmory location 50 isn't our key
start
-1 .shoot store
stop
or you could use :
cond
*.eye5 0 >
*.memval *50 != 'If the value in oponents memmory location 50 isn't what we have in memmory location 50
start
-1 .shoot store
stop
The reserved memmory locations are scattered, theres gaps in between them, and these may later get reserved for new system variables.
But the locations Eric is talking about will never get reserved, use those locations if you want to be sure your bot doesn't fall appart because of a new sysvar overlaping one of your variables.
Sorry if I'm explaining needless details, but you seemed confused about this so I just wrote everything there is to know.
-
Or, to put another way:
the . operator is used to turn a label in to a number With sysvars, you use it to turn repro in to 300. .repro and 300 and functionally equivelent. If you prefix the . operator with a *, it's a compound statement that first converts the label in to a number, and then fetches the information at that memory location. Anything that is not used by the system for sysvars is available for personal use by a bot. You can also define custom labels (your own personal sysvars) if you like using a def statement at the beginning of the DNA.
-
A list of the Free Variables can be found here. (http://www.darwinbots.com/WikiManual/index.php?title=Free_Variables)