Archived talk:Gladiator 20071113
Welcome to the wiki! I noticed you have thought about the setup of your bot, the code is quite readable. A few remarks about its performance:
- in OneOnOne you are not moving enough and most of the time facing your enemy. Maybe you should include a (small) antigravity force at your last position.
- it seems that the gun is only turned when you are ready to fire. This causes some 'wild' bullets. Turning your gun every tick, or when the gunheat is less than 0.3 or so, should improve its accuracy.
- shooting peas (power 0.1) is not very effective. Try taking the enemy's energy into account, but also try not to disable yourself.
- in melee, try not to get distracted by an accidental hit from the other side of the field. Most of the time the closest enemy is the most dangerous one.
Note that these are just some tips after briefly watching a few OneOnOne and melee-battles, I did not dig into the code. As your bot seems to be ment for melee, check out the MeleeStrategy page. It covers everything you need to know about melee. --GrubbmGait
Thanks for the welcome! I have noticed that in OneOnOne my bot faces my enemy way to much, I tryed what you said and it made a BIG differance. Thanks for the tip! Also, All the other tips I have added into my bot in some way or another. I have one question though, is it better to aim at the stronger bots that are close to you, or the bots that are weak and somewhat far away? --KID
Assuming you are talking about melee then it is better to aim at the bot which you are most likely to hit. That way you get some return on the energy you invested into the shot. That is not always dependent on wether it is closest or not (although it often is). Kawigi will most likely offer that it is better to shoot at the enemy that is most dangerous to you. I am not sure, but "my boy is wicked smart" when it comes to melee. -- jim
The movement of my current meleebots is coupled to the enemy I am targeting, so therefor I favour to target the closest one. As AntiGravityMovement is less coupled to the current enemy, it could be advantiguous to target someone further away, as he is less expecting it. --GrubbmGait
Right now I am using
(enemyEnergy / myEnergy) * enemyDistance to find the "EnemyRiskFactor" (this is not in v.1), then I fire at the bot with the smallest EnemyRiskFactor. I don't know how effective this is but it seems to work well, especially if the enemy is disabled or nere being. --KID
Well, Jim guessed quite well what sorts of things I'd say - when I started melee I assumed that the reason targeting the closest was good was because you were more likely to hit, so I tried targeting the one that I was most likely to hit. The reason this wasn't as effective was that (indeed) clearing out nearby bots is more important if you want to survive. So the reason to target one bot over another is the benefit to you (which comes from how likely you are to hit them) and the risk they pose to you (which comes from how likely they are to hit you). Shortest distance alone can strike a fine balance there, although I don't discourage using energy as a parameter.
KID - why is the enemy risk factor proportional to distance? Do further-away enemies pose a greater risk? I'm not sure I follow. I think you should do something more like (enemyEnergy / myEnergy) * enemyDistance. Of course, your energy should be constant for comparison's purpose, so that might as well be enemyEnergy / enemyDistance. You modify that just slightly and it starts looking like the risk function for HawkOnFire.
Also, make yourself a page! -- Kawigi
I spent a while toying with alternates to 'if closer than present target by x' with no success. I attempted factoring in enemy energy and my hit percentage against them and my scores dropped. It's on the back burner again for now. -- Martin
I got my computer up and running again, but now Gladiator 6.6g looses every meleebattle. I use Java 1.5 and have tried robocode 1.0.6 and 1.0.7Kawigi. Before uploading more results I will try to find out if the problem is my configuration, but can anyone else run one meleebattle to rule out a problem in Gladiator itself? -- GrubbmGait
Gladiator crashes on my mashine as well in meele Battles:
kid.Gladiator .6.6g: Exception: java.lang.NullPointerException java.lang.NullPointerException at kid.Data.MovementProfile.inEvent(MovementProfile.java:60) at kid.Gladiator.onHitByBullet(Gladiator.java:197) at robocode.peer.robot.EventManager.onHitByBullet(EventManager.java:582) at robocode.peer.robot.EventManager.processEvents(EventManager.java:729) at robocode.peer.RobotPeer.tick(RobotPeer.java:1043) at robocode.AdvancedRobot.execute(AdvancedRobot.java:139) at kid.Gladiator.run(Gladiator.java:106) at robocode.peer.RobotPeer.run(RobotPeer.java:633) at java.lang.Thread.run(Unknown Source)
thanks for the heads up, i have seen this bug in OneOnOne, and was able to fix it there. just checked my code and makes sense that it would crash in Melee too. @GrubbmGait - it a bug in Gladiator, so it's not your fault. i'll release a new version to fix the bug. -- KID
Congratulations! It seems that you are the first to get into the melee top-5 since . . . well, since forever. -- GrubbmGait
Didn't notice! Wow... I was just planning on getting backk into contention for the top ten again. Wow... -- KID
Still a lot of opponents to face, but I think it's safe to say nice jump with .6.7. Looks like almost 8% better per opponent so far - impressive! -- Voidious
Thanks Voidious! I did some work with the MC2K6 and got some better scores against the simple targeters then I had before and I think it paid off! (but I still can't get higher then a 95 against BotA, Grr...) I would appreciate it if someone would look though my code (hard, I know) and see where I can improve. -- KID
Please don't take offense to this, but it's more a matter of fixing bugs than making improvements when trying to master surfing HeadOnTargeting. Try hard coding some danger at GF-0, make sure your prediction is working correctly, and you're clearing out old waves correctly (to surf the "correct" one at all times); if all of that is working, you should get 99+ against BotA, I reckon. Check out Komarious/Code if you want to see how simply she dodges GF-0 (hard-coded), and she gets over 99%. -- Voidious
No offense taken Voidious, but my form of WaveSurfing is more TrueSurf then anything else. So, ABC, if Shadow really is doing TrueSurf like I think it is, I could use some help on how to weigh the risk for forwards and backwards. There is another movement that I'm sort of working on that is like Komarious, and it gets 98+ against BotA, but is not as good against PM or GF guns, yet. -- KID