Code center > Bug reports
Something stopping a bot from reproducing, and screwing with other things too
Trafalgar:
I'm not sure what's going on, but I have a bot here which cannot be forcibly reproduced - however, it's due to something on the bot itself, not its DNA. If I start a new sim with that DNA, it can reproduce. If I start a new sim and insert the saved organism, it cannot reproduce.
Each cycle repro remains at 50 without changing, and the bot does not reproduce.
This screenshot shows odd discrepancies between everything shown on the bot info panel, and what the console returns:
The console is for the bot shown there, of course.
Along with the values shown in the console, slime, shell, venom, and poison are all 0. The bot panel shows energy as 16025, which is what refnrg from the bot to the northeast also shows, whereas the console shows .nrg as 3307. The bot panel shows body different from the console, as well, and waste too.
I attempted to set .shoot and .shootval to -4 and 100 respectively, to get the bot to fire its waste to see if that was causing the oddness, but it didn't work - the values are persisting from cycle to cycle, it is not shooting, and waste is not changing.
I even tried setting .up to 1000 and running one cycle. The bot didn't move (and the console reports .fixed as 0), but .up at least did reset to 0.
I can upload the organism somewhere if someone wants to look at it. Or I could upload a sim file which is filled with bots suffering from this...
My best guess is that something is going completely and totally FUBAR and causing the memory inputs to be mostly ignored, and causing most of the memory outputs to not be updated properly.
Edit: For further testing, I'm trying setting memory locations and then checking them (on the console), while the sim is actively running. I theorized that memory writing is breaking down at some point, since .up appeared to be getting properly cleared, so I began looking for the location where it breaks.
I only checked memory locations below 20:
Memory locations that are being overwritten (which is usually normal): .up (1), .dn (2), .sx (3), .dx (4), .robage(9), .mass (10), .maxvel(11), 12 (Not in sysvars list on wiki... hmm, this is apparently a robage which wraps around to -32000 when it exceeds 32000!)
Memory locations that are not being overwritten if I write to them in the console: .aimdx (5), .aimsx (6), .shoot (7), .shootval (8), .aim (18), .setaim (19)
Edit again: If another bot rams one of these, it bounces off without affecting these, even though fixed does not appear to be set (according to the console, which doesn't mean much, I suppose).
One affected bot's DBO file, zipped: http://shadowlord13.googlepages.com/wontrepro.dbo.zip
Edit more: Upkeep is being run, as evidenced by the energy shown on the robot data panel decreasing over time. Therefore the bot is not a corpse (corpse mode is disabled, anyhow). If BotDNAManipulation was being run, the mkvirus memloc being set would start vtimer counting down - but it isn't. BotDNAManipulation is run if the bot is not a corpse and doesn't have DisableDNA set (and if the robot exists).
It LOOKS like the affected bots may have somehow wound up with DisableDNA set. I don't know how that's possible, though - These bots were not DNA disabled when the sim was started, yet somehow they act as if they are DNA disabled now.
Additionally, by checking older save files, I've determined that at 28k cycles, some of the bots had just become affected by this (their console .nrg and robot data panel energy were not decreasing in sync, but were still very close), whereas other bots in the sim were still not affected. At 48k cycles, all or almost all of the bots in the sim that I checked (except the shepherds) were suffering from this. After 48k cycles, the bot population and dna conditions graph lines became a flat horizontal line, indicating that birth, death, and evolution in general had been completely halted by this problem.
It's like the bots evolved DNA disabling as a means of avoiding being culled. D:
googlyeyesultra:
Is it a veggie? If so, the bot's population may have hit the maximum population.
Trafalgar:
--- Quote from: googlyeyesultra ---Is it a veggie? If so, the bot's population may have hit the maximum population.
--- End quote ---
Nope, only the shepherds are veggies. (And the bot population is higher than the veggie limit. It's at 67, and the veggie limit is 30.)
Numsgil:
That's definately weird.
The mem location 12 that doesn't seem to be documented is probably .timer. You can write values to it at anytime. It basically just knows how to count up every cycle. It's main advantage is that it's passed to children so that parent and child will be in sync. It's sort of a generational timer, only it doesn't start at 0 for the first generation (value is random).
It does sound like bot DNA has been disabled somehow. Probably the boolean checking to see if DNA is disabled isn't being cleared when a new robot is put into the robot array.
Trafalgar:
--- Quote from: Numsgil ---It does sound like bot DNA has been disabled somehow. Probably the boolean checking to see if DNA is disabled isn't being cleared when a new robot is put into the robot array.
--- End quote ---
The reproduce function sets rob(nuovo).DisableDNA = rob(n).DisableDNA
(line 1417 in Robots.bas)
The SexRepro function doesn't appear to set DisableDNA, but these bots are being forcibly reproduced using repro through tieloc/tieval. But I suppose it's possible that the bots evolved sexrepro on their own, if it isn't disabled (I thought I read somewhere, or someone here said, that it was disabled).
Edit: Looking at their genome now.
Of the sample bot whose DNA (and DBO file) I saved, it has:
Many 0 0 stores
4 0 store
-1 0 store
No incs
One 0 dec, no other decs
I conclude that it is impossible for it to be doing sexrepro on its own, unless of course the bot's parent evolved sexrepro and a lucky dna deletion removed it from the dna-disabled child's dna. Hmm.
The only other alternative explanations I can think of are:
1. When I searched the source for all references to DisableDNA, I missed something that can set it, or
2. A buffer overflow with a nearby (in memory) array or string or the like is causing it to be set, or
3. Something is happening which I didn't realize from looking at the code (Like I tried looking up what is being read to be shown as slime on the bot data panel, and it looked like it should be showing, well, slime), or
4. The source identified as being for 2.43 on the wiki's source download page isn't actually 2.43 source, or
5. 'Darwin2.43.exe' from the download page on the wiki is a mislabelled 2.42.0.9 or something like that. (When I hover the mouse over the exe, it shows File version: 2.42.0.9, but I was assuming that it was just an oversight that the version didn't get changed in the resource file when 2.43 was released)
I also find it interesting that in every one of these crippled bots, "slime" on the bot info panel was showing as 32000.
Another edit: If I'm reading the source right, the memory location for slime seems to only be updated when mkslime is called. The rest of the time, .Slime degrades and the memory location isn't updated. But that's not what's wrong with the bot info panel - it seems to show shell where the slime label is, and not actually show slime anywhere (or something). Of course, the memory location for shell on the broken bots shows 0, but if it isn't being written to because they're dna-disabled, then their shell could be 32000 or whatever without the memory indicating it (The question then would be: How would they get shell if they're dna disabled?).
Navigation
[0] Message Index
[#] Next page
Go to full version