Now that I think about it, yah, I suppose I could make it so if it detects more then 1 robot it could drop the force of the walls the the bot will stick a little closer to them (dispite the fact it will bang into them more). -- Chase-san
Err, nope i'm afraid after trying wall values all the way from 0 to 100 (default is 25), that no matter what the value it seems to do just about the same using its anti-gravity engine. I suppose I could set in a sensor of sorts to only move after iding all or atleast half of the other robots.
Actually I now figured out why I didn't do that in the first place, it calculates the wall every scan aswell, which means it would also add up the wall force again and a gain depending on how many robots, the only way around this would to be to move the whole anti-gravity unit and add robots sensed to a unit that will only count the walls in once, or to divide the wall force by the number of robots to be checked each time (which is cheap but will work just as well) -- Chase-san
You will likely want robot fields calculated independently. You may want to tinker with other fields as well, such as repulsion from the center and attraction to corners. All of my movement systems are vector based, and I just add in which ones I want to include (which can vary from round to round). The sum of all the vectors is where I will steer. I think my most effective for melee combined wall and robot repulsion fields with a tendency to move forward. The result was that my bot was constantly on the move, avoiding conflict, and not remaining anyone's target for too long. I've also played with having completely independent movement strategies for each "number of enemies remaining" stage of a round. Tactics that work best with 9 enemies don't work as well with 3 enemies left. -- Martin
I'm convinced that if I put enough into a normal unsegmented guess factor gun I can get it to atleast part way into the segmentations domain, then once I start actually segmenting the weapon it will greatly boost its power. -- Chase-san
Here's an interesting link for you: GresSuffurd/GresVretter ... GrubbmGait is working on his first WaveSurfing / GuessFactorTargeting bot, and he has tracked his gun progress from unsegmented to lightly segmented through a few versions. There is a lot of value in having the non-segmentation related parts of your gun perfect, so it's a good move on your part; but you will see a sharp increase in accuracy once you add segmentation, too. -- Voidious
Hey, I thought of some good non-segmentation related GF gun trivia while getting ready for work / class today. I believe your wave setup is like this: if you fire a wave on tick X, you use X as the wave's start time, your bot's location at tick X as the wave source location, and the direct angle to the enemy on tick X as the absBearing on that wave.
Now, assume you leave your wave collection as it is, but hard-code your tank to fire at GF=0. On tick Y, the enemy is moving full speed in the clock-wise direction, and your tank fires both a bullet and a wave. If you're aiming every tick, your tank will call setTurnGunRightRadians? as well as setFireBullet on tick Y; setFireBullet will be executed first. Will your tank's bullet be fired at the same angle as the absBearing you put on that wave?
Wow, that just plain hurt my head, i'm not used to such intense thinking even while programming, but story problems as such always game me problems. Personally I wouldn't know what it did until I tried it, but I would guess it wouldn't, because the maxAngle would interfere?
I can't check my code because i'm at class and I didn't think far enough ahead to load a copy onto my portable drive. However I changed some stuff with Beowulfs aiming code as the 4 restructured versions weren't working right so I just moved the decent code from those over to Beowulf. I need to do an aiming test with it later. -- Chase-san
Heh... Well, the maxAngle has nothing to do with it, in this case - GF=0 is firing directly at the enemy, HeadOnTargeting. Edit: However, note that if the enemy is at absBearing again when the wave "hits", your gun will record that as GF=0, so you definitely want them to line up! -- Voidious
Okay, I have been experimenting with Self Originizing Maps, e.g. the NN that Engineer uses for its wave surfing and gf gun. After alot of study (as I have never worked with NN before) I found that the only way I could think of to use the NN was with the NN replacing the bins so to speak and doing all the segmentation and such. However there are many factors I have not worked out and the entire concept of the NN is lost with my design. Hmm, I seem to hit a speedbump, getting rollingAverages to work in a neural network is a real pain. The bot can aim and such now, or atleast it could, I get a particular error when I goto compile. Seems reverything is going as planned, I just need to segment it. (seems alot easier then normal GF) -- Chase-san
I have been doing some massive tweaking on my gun afte rI found it preformed worse then a older version I had, after much tweaking Tyrra my newest (and definitely to be released) bot can 'almost' (it gets within about 200 points) beat Shadow in 35 rounds, I still have much tweaking to do, hopefully I can send it in and be a bot in the Top 100, or even the Top 50 or 2000 club (hah sure) -- Chase-san
Okay, sorry, sorry if I made anyone mad with that last comment of mine, I didn't mean how it must of sounded. If you want me to remove Tyrra from the ranking just ask. -- Chase-san
There is no rule about being normal. Some people just release one bot and are never heard from again, some others are dayly present on the wiki. A newcomer may easily be frightened by the high performance of the top-50 bots, others (like you) are challenged by it and try to pick up with them. Its all related with the goals you set to yourself. Personally I tried to get as high as possible without WaveSurfing, GFTargeting and PatternMatching but with no further progress in sight I switched to the mainstream development and am aiming for The2000Club. Learn from this wiki, copy-and-paste if you have to and if allowed, but keep thinking for yourself. Originality, even in the details, is higher appreciated then blindly following the best. About being so quick in the top-50, remember that a lot of bots are not under development, the top-10 of 4 years ago can hardly be found in the subtop anymore due to new techniques. You are doing ok, as long as you do not pass me in the ranking ;-) -- GrubbmGait
We're just kidding around. You're doing fine. I agree 100% with everything Grubb said. --David Alves
Happy Thanksgiving everyone! -- Chase-san
I think I broke it. Thats what I get by trying to force a gun to do something it just can't do. --Chase-san
A lot of times your score for 100 rounds will be higher than your score for 500 rounds against surfers. So you may not have broken it. 100 round tests are also extremely unstable, you could easily be off by more than 5 points from your true score.--David Alves
Well, the devA 500 round match shows a major drop in about half the surfers. The earlier versions were quite impressive verses the surfers I think, I think that dev7 was by far the best overall verses the surfers. With nearly 72% versus CassiusClay, nearly 78% versus Cyanide and a respectable (if somewhat low) 89% versus Tigger. I plan to take the dev 7 version and combine it in a virtualgun with either a normal gf gun, or if I can get it working, a dynamic clustering gun. -- Chase-san
I'm taking a small break from robocode, its a little tiring. I will still work on my bots, but not asmuch as normal. I really need to start getting my class work done ;). -- Chase-san
Hmm, in the RR both Beowulf and Velshea are roughly equal in rating, I might end up merging the two. What do you think, the bots are simular but they aren't the same. -- Chase-san
Checking the comparison between the two, they indeed have significant differences. The difficult part is now to combine the best parts of each. You might end up with a less performing bot, but thats all in the game. -- GrubbmGait
I decided to merge them, and at the same time attempt root out all licensed material from them in an attempt to feel less like i'm copying. I am merging them into and with my new bot Seraphim. I plan to make it closed source, unless it does really badly then there won't be much point and it will be open source. -- Chase-san
Either this bot will be one really impressive piece of software or its going to be one of the most overly complex and worthless pieces of junk ever created for robocode. In either case I read over Dookious' new refactored base structure and remember parts of the old one and I am modeling the structure of Seraphim off from it. However I am not voidious and it will probably take me a looong while to get this working correctly. I currently have a problem of referencing Indexes with thier respective buffers, but I hope to solve that soon (I have a few ideas). --Chase-san
That sounded wrong, let me clarify, I am not copying dookious, I am not even copying dookious' structure. What I am doing is making a bot that uses a structure from an idea spawned originally from looking at dookious' structure. As such so far I can dynamically redesign the bots entire segmentation just by editing a small array, I can change the composition of the different number of stats used dynamically aswell through adding or removing a buffer from a set, and so forth. It is more of my idea of how a bot could do what dookious does in its structure, but without tons of classes to take on all those different roles. However this does complicate simpler segment defintions such as (int)distance/140, would instead be segments of 140, 280, 420, 560, 600 and 840. -- Chase-san
Turns out my big problem was a static field where it shouldn't be, figures huh? -- Chase-san
I don't plan to release this new bot until it can steadily beat DT, and not before, thus I might be revising the bot for awhile. --Chase-san
Seraphim is currently giving Velshea a run for its money. Seraphim is lacking anything more advanced then a basic-srufer like surfing setup(though using my custom wave manager and buffers), and its missing any kind of power management, firing only 1.9 bullets. It beats Velshea in a 500 round match with over 16000 points in score difference (~32 per round). However in 100 or less its losing, but only by a small margin. --Chase-san
Release time! I haven't done a MC yet, but I ran a number of battles vs GresSuffurd, Seraphim beat it every time. Tweaking movement is alot harder then tweaking targeting. The bot has a more advanced surfing system, and some minor power management. Lets see how it does, I will be greatly annoyed if it's stuck in the 50 area still. This might be a psuedo-combination of Velshea and Beowulf, but its also alot more then that too. --Chase-san
Seraphim gets disabled immediately at my client (v1.1.2) so it scores zero points. I pasted the message below. -- GrubbmGait
chase.na.Seraphim 0.002: Exception: java.security.AccessControlException: Preventing chase.na.Seraphim 0.002 from access: (java.io.FilePermission G:\Applicaties\Robocode112\.robotcache\chase.na.Seraphim_0.002.jar_\robocode\Rules.class read): You may only read files in your own root package directory. java.security.AccessControlException: Preventing chase.na.Seraphim 0.002 from access: (java.io.FilePermission G:\Applicaties\Robocode112\.robotcache\chase.na.Seraphim_0.002.jar_\robocode\Rules.class read): You may only read files in your own root package directory. at robocode.security.RobocodeSecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at java.io.File.length(Unknown Source) at robocode.security.RobocodeClassLoader.loadRobotClass(Unknown Source) at robocode.security.RobocodeClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at chase.na.semove.AngelWings.onScannedRobot(AngelWings.java:64) etc. etc.
There is a bug in some version of java that causes this, I know my bot works fine from a jar, as I'v done it ;). I'm not sure whats causing this problem exactly, what version of java do you have? I use Java 1.5.0_06 and robocode 1.2.1. --Chase-san
I have Java 1.5.0_03 and robocode 1.1.2. In the .robotcache directory there is no \robocode directory under chase.na.Seraphim_0.002.jar_, only \chase , but it seems to try to read from there. It may have to do with the 'loosened' SecurityManager?. -- GrubbmGait
Oh, I know what it is, the built-in Rules class syntax that I use in Seraphim wasn't introduced until I think 1.1.3. But I will go through Seraphim and replace those. -- Chase-san
I worked hard, and I even tested it against GresSuffurd, so as one of the test bots Seraphim beats GresSuffurd, only test bot it doesn't beat is SandboxDT, and even then it gets close. However that is no guarentee that it will be higher then GresSuffurd. --Chase-san
I'm currently pretty happy with Seraphim's current rankings. So I am taking some time to go about and do some research of my own. I am doing research on segments of robots, and possible new segments (though most have been covered already). I am going to make complex flow charts for my own bot's future redesign. I'm am going to attempt to find a way to measure a robots wall distance without alot of hefty computation, and so on. I am doing all this to make a "preformance" bot, a robot that keyed not towards learning new robocode aspects as have my past robots, but a bot that should get as high as possible in the rankings. -- Chase-san
Looks like i'm going to have to write some highly experimental, looks good on paper code to be able to beat the bots that are popping up in Seraphims score range to 2000. Such as to make a infinitely expandable and redefinable buffer system. This system allows redefining of just about everything within its own structure, including segments (from one to infinite segments), smoothing system (if any), rolling average depth, etc. However to impliment this and have it work, requires a rebuild of entire base structure of Seraphim (which I am more then happy to do =) ). --Chase-san