Tron 3.11 seems broken in current Robocode/Java versions?

Jump to navigation Jump to search
Revision as of 19 June 2021 at 07:54.
The highlighted comment was created in this revision.

Tron 3.11 seems broken in current Robocode/Java versions?

I'm unsure why, but I'm noticing that Tron 3.11 is currently broken under Robocode 1.9.4.2 and OpenJDK 11. It seems to always start up in "Reference" or "Challenge" mode, never in "Normal" mode. This is the reason for Tron's recent underperformance against updated/new rumble entrants. Need to figure out the cause of this. There's a good chance this could point to a regression in Robocode.

UPDATE: Confirmed that Tron is working fine in 1.9.3.9 and 1.9.4.1, but not in Robocode 1.9.4.2. This is unfortunate and I doubt Tron is truly the only bot affected.

    Rednaxela (talk)03:47, 19 June 2021

    Looks like there's some incompatible change in the logic of robot name in 1.9.4.2, and anything depend on that is broken to some degree. This frequently happens to bots with Team capacity.

      Xor (talk)08:23, 19 June 2021
      Edited by author.
      Last edit: 08:57, 19 June 2021

      Every single bot now receives a "($i)" suffix where i is absolute index of all robots. The suffix was only added to bots with same name and was related to the specific bot. This change breaks the way some Team bots know which is leader (an example of depending on undocumented feature). Team battles should be completely broken now, so does some of the bots with Team capacity.

        Xor (talk)08:30, 19 June 2021

        I've ran some tests and confirmed that Tron's change in behaviour seems to be a rather troublesome side-effect of the change in what getName() returns.

        To confirm this, I repackaged Tron with " (1)" added to it's version field, and it misbehaved in even in 1.9.4.1, in the same manner the regular version misbehaves in 1.9.4.2.

        It's rather strange that " (1)" appended to the end of getName() causes problems for Tron, because neither "*" appended nor " (1)*" appended does.

        Considering this further, I believe the most likely thing is that ABC was using the result of getName() specifically to detect the special case of multiple instances of Tron versus itself, to behave in a special way for development purposes in that scenario.

        Most team bots used the suffix to determine a "leader"? Curious. Most teams I spent time looking at either did not have an explicit leader, or were using a different bot class for that.

        In any case, this change in what getName() returns really breaks too many things in my opinion.

          Rednaxela (talk)08:48, 19 June 2021

          I am using the bot name suffix to determine the position of current bot in the team, as well as switch colors. Not remembering where did I see someone using similar tricks. Anyway anything like this now breaks.

            Xor (talk)08:54, 19 June 2021