[Home]StrITwise

Robo Home | Changes | Preferences | AllPages

Just an interesting observation on 8 November 2008 (Saturday).

StrITwise is a competition in Singapore which I took part in on that day. It comprises of a robocode challenge. You see, the point is River Valley High School (If you know) has been dominating in this competition (robocode section). Well, I decided I wanted to pit myself against them. Round 1, Round 2, Round 3.............

In the end, just before the finals, I found out that the bot they submitted was actually a modified version of DrussGT. This completely eliminates my chance of winning (right Skilgannon?) You see, I am not only grumbling about the plagiarism of this school, but Skilgannon you see they publicly humiliated you and me by thrashing your bot and mine in front of a number of Singapore schools (including mine of course).

And if I am not wrong, last year (when I was new to robocode), they took Dookious. I was just curious if anyone could help me defeat this cheaters who take the champion cup every year. Any help is very much appreciated!

-- Aryary

That is sad, you should expose them as the cheaters they are. I'm sure the teachers/organisers will disqualify them if you explain them what is happening. -- ABC

Apparently we told them about it already, the only problem being they relied too much on their miserable plagiarism system (I was like fighting plenty of basicGFSurfers there). They said they bought it from US, and despite all this commotion it never occurred to them their plagiarism check had problems, and I think the Organizing team was probably unwilling to lose face....... Oh well I was just thinking in order to really defeat them (they have been copying bots and winning for every year) I have to create some bot that can really defeat DrussGT by some margin................., and ultimately keep it closed-source.

I got the spark of inspiration that it was DrussGT since they accidentally showed their code, and me, studying Druss's code before, knew it instantly. Whats more, It matches DrussGT 1.3.0's size (78kb). The judges never believed it and they thrashed everyone upside down........ Finally, i doubt they even understand the code. During tweaking (for finalists only, me and the cheater), he simply did not change anything, making him more suspicious. But well, that's the past, we should look forward to giving them a good thrashing next year.

Their only retribution is that they never got first overall (meaning they failed to get their free PS3s this year). Anyone willing to embark on a project with me to defeat them (only if you have the time)? -- Aryary

Man, that sucks. I think problems like this really tarnish Robocode outside of the casual competition within the community here. Hmm, in some ways, things like this make me wonder if there should be some sort of community developed 'Robocode database checker' app that works with the bytecode to match code (including partial matches) of a bot to known bots (historic bots, rumble bots, other bots in the same competition, maybe roborepository). If there were such an app it would probably make it easier for organizers of such events to pick out the most blatant plagiarizers anyway though it would probably be possible to beat that system with sufficient obfuscation. Even so, I wonder if the Robocode community should develop and promote such a tool to help make such scenarios less likely. As a side note, I personally think that any such competition should at least in the finals, require that entrants make a detailed explanation of the workings of their bot, and that some development/testing history be available for review.. but of course I doubt many competitions would be inclined to be so complete about it, particularly when it's just one part of the competition... but still. Anyways yeah, I've probably ranted enough. What do you refer to by a "project to defeat them"? If you mean in future years of competition I have no better idea than to begin a community-developed code duplication checker that could become an official part of robocode and perhaps distributed along with it by default. Anyways, sorry if I've ranted too much... and really, to be honest, I don't think that any technological methods like I've proposed would be more than a band-aid for the issue, if competition organizers/judges can't be expected to investigate accordingly when there is possible cheating going on... But yeah... I feel bad for you Ary =\ -- Rednaxela

The truth is, I actually have no idea on how to improve DrussGT. Perhaps if I added an anti-surfer gun, but really. Is there any way I can see the bot they submitted? I guess from now on DrussGT will be closed source. I'll still let you know what's going on, just no new code. And will save data, even if the data doesn't do anything. =) I see that that's illegal in the rules, so will immediately disqualify them. Oh well. Aryary, if you want you can forward my ContactInfo as the creator of the bot to the judges, I can explain *very* eloquently exactly what I think of them, and their anti-plagiarism system (which obviously just searches websites).Oh, and if you could email me the contact details of the people who used my code? I really don't mind people using my code, but they must A) give credit (this is stated clearly on DrussGT's wiki page) and B) they aren't allowed to use it in this contest anyways. I'd like to have a word with them. Perhaps I'll re-release DrussGT as opensource some time in the future, we'll see how it goes. EDIT: Sudden brainstorm, if I put a big patch of DrussGT's code on the web, wouldn't the plagiarism checker notice their code that way? Could you find out more details as to how the checker works? We could put sections of all the OpenSource bots' code on the wiki. -- Skilgannon

@Rednaxela : Sounds like a good idea but I don't think the organizers would accept your plagiarism checker (they have that miserable one which they are so confident of).My project was referring to perhaps develop a secret bot to defeat them. Just curious if anyone was interested (given my lack in skills in dynamic clustering). It would be quite cool if you implement it and rant all you want, I am ranting on anyway.

@Skilgannon : I think it is impossible to get their source or their contact since I am not part of their school and the organizers would refuse me straight away. Also, as mentioned above, they even allowed basicGFSurfers on the field (most likely, since so many first-timers are using wavesurfing). Well apparently we mentioned of your bot to the judges and they said only a minor part of your bot was copied......... And in case you were wondering how I got the suspicion of them other than from looking at how they fight, take a look at some extracts of your code and theirs (which they hid after I caught a glance):

Yours:

            _surfDirections.add(0,new Integer((int)lateralDirection));
            _surfAbsBearings?.add(0, new Double(absBearing + Math.PI));
            _lateralVelocitys.add(0, new Double(Math.abs(lateralVelocity)));
            _advancingVelocitys.add(0, new Integer((int)Math.round(advancingVelocity)));
            _distances.add(0, new Double(e.getDistance()));

            enemyGunHeat = Math.max(0.0, enemyGunHeat - getGunCoolingRate?());
            imaginaryGunHeat = Math.max(enemyGunHeat,Math.max(0.0, imaginaryGunHeat -            getGunCoolingRate?()));

            nextEnemyLocation? = project(project(_myLocation,absBearing,e.getDistance
            ()),e.getHeadingRadians(),e.getVelocity());  

            double bulletPower = _oppEnergy - e.getEnergy();
            addWave(bulletPower);
            addImaginaryWave?();

            _oppEnergy = e.getEnergy();

         // update after EnemyWave detection, because that needs the previous
         // enemy location as the source of the wave
            _enemyLocation = project(_myLocation, absBearing, e.getDistance());

            updateWaves();

            if(weightedEnemyHitrate?/weightedEnemyFirerate? > 0.099 && getRoundNum?() > 1){
               if(!flattenerEnabled)
                  System.out.println("Flattener Enabled");
               flattenerEnabled = true;
            }
            else{
               if(flattenerEnabled)
                  System.out.println("Flattener Disabled");
               flattenerEnabled = false;
            }

Theirs (from what I can remember, perhaps rearranged a little):

            _surfDirections.add(0,new Integer((int)lateralDirection));
            _surfAbsBearings?.add(0, new Double(absBearing + Math.PI));
            _latVelocitys.add(0, new Double(Math.abs(lateralVelocity)));
            _advVelocitys.add(0, new Integer((int)Math.round(advancingVelocity)));
            _distances.add(0, new Double(e.getDistance()));

            enemyGunHeat = Math.max(0.0, enemyGunHeat - getGunCoolingRate?());
            imaginaryGunHeat = Math.max(enemyGunHeat,Math.max(0.0, imaginaryGunHeat -
            getGunCoolingRate?()));

            nextEnemyLocation? = project(project(_myLocation,absBearing,e.getDistance
            ()),e.getHeadingRadians(),e.getVelocity());  

            double bulletPower = _oppEnergy - e.getEnergy();
            addWave(bulletPower);
            addImaginaryWave?();

            _oppEnergy = e.getEnergy();

         // update after EnemyWave detection, because that needs the previous
         // enemy location as the source of the wave
            _enemyLocation = project(_myLocation, absBearing, e.getDistance());

            updateWaves();

            if(weightedEnemyHitrate?/weightedEnemyFirerate? > 0.05 && getRoundNum?() > 1){
               if(!flattenerEnabled)
                    flattenerEnabled = true;
            }
            else{
               if(flattenerEnabled)
                    flattenerEnabled = false;
            }

As you can see, they merely changed a bit here and there, and submitted it. If you realised, "their"/your bot did quite well in melee, achieving first place with 7.6k score (20 rounds), me 8.2k (20 rounds) (we are in different groupsat the start). As a matter of fact, they even showed us their graphical debugging, which to me, is a combination of Druss's and Shadow's. (Anybot similar to shadow in graphical debugging)?

And the competition is over anyways. The judge is some old, miserable man who sits at his desk 24/7. Not so sure about the organisers, but I think the only way you can contact them is probably by emailing them at StrITwise@np.edu.sg , but chances are they are not going to reply until next year (I bet they are slack people). Of course it was quite cool thinking they beaten Druss with a "guess factor gun with segmentation" when Druss has 42 guns (right?). Then again, hopefully those scammers see this page next year and freak out. Once again, calling for anyone to help in my project (keeping your bots closed sourced is still perfectly up to you, anyway I learnt a lot from good bots as well, like CC). -- Aryary.

The only way a robocode competition can be fair is to require everyone to opensource their robots. There is no way an automatic plagiarism check will work. A peer review, otoh, is almost 100% effective. Tell that to the organisers, if they don't change the rules for next year you convince your school and others to stop entering until they do. -- ABC

For melee I wouldn't be surprised if they took another OpenSource bot - Logic by Kev comes to mind. And it actually shouldn't matter if they only copied a "minor part", according to the [Rules] "ANY PLAGIARISM, ... WILL RESULT IN DISQUALIFICATION." Quote this to the judges, and have them disqualified. The organizing committee has the entire source code, it was submitted to them according to rule 2. Show them the bot I created, where it is downloadable from, and that the source is included.

And no, DrussGT only has 1 gun. The '42' guns was a funny idea I had back when I was just starting with DrussGT =) It is a DynamicClustering gun with 11 dimensions and a sub-pixel precise overlap-based multiple-choice algorithm, this algorithm inspired by Rednaxela's RougeDC. However, this gun is not tuned to hit surfers, but random movers, as there are more of them in the rumble and thus it gives more points. DrussGT actually gets one of the lowest scores (if not the lowest) in the TargetingChallenge2K7 because it hits the surfers so badly, despite getting the highest score in the random-movers section. I am sure if I changed the gun to hit surfers instead I would be able to beat my old bot by quite a big margin... BUT it would lose points in the rumble. Oh, and well done on getting to the finals =) Perhaps you would like to release the bot you used to the rumble? -- Skilgannon

Ok, I wrote some emails to the competition directors and to River Valley High School. We'll see what happens. -- Skilgannon

Bet they will say I accused them wrongly for there are in fact "traditional champions". Did you mention me? And if you want my source code eh I the only thing I can think of there that should remain open source is your graphical debugging (sry for not giving credit, needed your nice bin debugging a lot!, and here's your credit), since I am not sure about other schools. By the way, which email were you referring to with regards to River Valley High School? And just a note : I think it was DrussGT in action for melee. But then, they did mention saying something about the difference in the way they weigh the stats and whether or not to activate your flattener. Don't mean to kick a fuss here, but then just thought it was good to know that some people do copy bots without giving credit or are they really so good? (I mean its like he is just 1-2 years older than me?). And just to let you know ABC, when I was still unfamiliar to any robocode stuff last year (2007), I submitted a ram bot with wavesurfing challenge bot B's linear Targeting and they let me pass, despite it being about 50-75% of the code. Imagine a Druss with modifications. Surely it would pass, right? Also if no plagiarism was allowed I think no one would participate in this competition already, given the fact that so many people are unfamiliar with robocode (fought one friendly guy using ultra walls with CT).I look forward to your new DrussGT Skilgannon! I will be trying to master DC before next year starts. Maybe I will release one bot named CSB (closed-sourced bot) when I master DC, then it will be interesting. But as always, if there is a need to share ideas or be open-source, I will :D. -- Aryary

If you're just worried about winning, and not getting the highest possible score, then the flattener should be enabled at a much lower threshold. And I'm not much older, only just turned 19. I'm not after your source code =) I just think it would be cool if you release it to the rumble. You don't need to include the source code to do that. The fact that they're the "traditional" champions shouldn't matter. If an Olympic medallist turns up positive for steroids, he still gets disqualified. And I'm quite sure it wasn't an unmodified DrussGT. Unmodified, DrussGT does no better than BasicGFSurfer in Melee. I'm working on something to change that, but that's still distant future. -- Skilgannon

If you think it is your bot, tell me :D --> http://www.youtube.com/watch?v=56_hSVckzDk If it is not, tell me too!

P.S. : (Not my team, but still my bot :D (my team's bot got kicked out 2 rounds before because of them, in fact all 3 of my bots died due to that black bot! Focus on the opponent, I am in blue, he is in black.) From my senior!

Oh yes, note: Actually there was only 1 round of Melee (20 rounds of fighting). 50% of the teams have submitted modified sample bots. Others take the idea of oscillation (from the oscialltion page), similar to that of radnor.doctorBob, but much weaker. I think in the whole arena I am the only one using Minimum Risk movement. But then my team was unlucky. There was like, 3-4 wavesurfers in my group alone, and I beaten them all back because there were most likely basicGFSurfers. And my senior advises me against blowing this matter up, but if it is true then I will be doing good.

-- Aryary

Hah, this is funny. 1.3.0 had a bug in the radar that made it constantly expand and collapse, probably the ONLY bot ever to have this happen, and the black bot does it, as you can tell from the visible scan arcs in that video. And the radar is in the gun, not the movement. So they have my gun, no questions asked. The section of code you saw was from my movement, right? It seems they may have just copied the entire thing, as you initially suspected. With my (distinctively) messy coding style I really wonder how they could have been so stupid to do such a thing. Anyway, they won't be able to use the latest DrussGT next year :-p. It will save data, run minimum-risk movement in melee, and have a gun which is both melee and 1v1 compatible. And an anti-surfer gun, so it can beat its previous (opensource) incarnations. It will go opensource the weekend after the competition next year. Does that sound good? =) -- Skilgannon

Sounds good for the competition, but not for the rumble. That means one more bot for me to defeat which is both 1v1 and melee capable (your current goal should be shadow, like me, but stupid me still don't get it how to implement DC). Then again, the best in your worldly endeavours! And I was just curious when I would ever get to defeat at least the current Druss (1.3.0), which should remain the same next year if no one dethrones you and Druss is kept close sourced. Oh and the code was from your movement. Suddenly melee seems more interesting... -- Aryary

Just curious, did you receive any reply? -- Aryary

No. Both the school and the competition organizers haven't replied to the emails I sent. I could go to the sponsors of strITwise and get them to enforce the rules, I guess. I'm actually having second thoughts about making DrussGT closed source, it goes against the entire philosophy of making the very best bot we can, as a community. It's really up to you to ensure that your competitors aren't cheating. I think I'll also put some patches of its code on the wiki, so hopefully the 'online detection system' will pick up its code a bit better. It's a pity that some people just can't do their own work, or think for themselves, instead blindly copying work they don't understand. The fact that they probably didn't understand the code they used saddens me more than the fact that they used it for a competition.

The melee side of DrussGT hasn't yet been merged into the main bot. I've got a working MinimumRiskMovement and I've got a gun and radar from NightAndDay which is melee capable. However I was hoping to get my PlayItForward? DC gun melee capable, similar to Shadow/ShadowsMeleeGun, and I've had some cool ideas with Melee WaveSurfing, where your learning speed can be up to 8x the usual speed. -- Skilgannon

Melee surfing? Very cool. Maybe you could write a page on that, for it probably never performed well in melee yet. And worst still, I never knew shadow had the melee gun page. Is NightAndDay good? Well, maybe I will just have to get on par with you some day. --Aryary

NightAndDay won the TwinDuel once (partly luck), then Kev updated Gemini and Rednaxela got LunarTwins going, now it doesn't have a chance. I'll write a page on melee WaveSurfing once(if) I get it working. Otherwise someone else (I'm thinking ABC, melee expert and inventor of WaveSurfing) might beat me to implementing it =) -- Skilgannon

Hmmm... obviously somebody doesn't like this page... first they edit it from their actual IP address, then they realise that the wiki can track that, so they edit it with TOR proxy. Veeery interesting ;-) -- Skilgannon


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited March 9, 2009 13:48 EST by Skilgannon (diff)
Search: