What's special about it?
It's a bright happy ray of sunlight that will fill your day with the warm feeling of inner joy. (plus, I actually understand/wrote all of the code.)
When the super bots thrash Sunshine down to zero energy and move in for the ram death, Sunshine will take them for a fun chase around the battlefield. Good times!
Great, I want to try it. Where can I download it?
How competitive is it?
It can trash the sample bots, and does well against most "not super advanced" bots,
but it's got no hope against those wave-surfing stat-gun pattern matching robot death mongers. My Un-official RoboLeague
tests against the RoboRumble bots
rank Sunshine in the top 100, on a good day.
How does it move?
"Random flat tank tread movement" by tracking visits to positions along the
path that the tank moves, ignoring turns. I tried to add some extra weighting
to get rid of spikes and patterns, but it's not working so well ... graphs of
the accelerating and decelerating curves are very predictable, and my range of
movement is not very "wide" and the advanced bots lay waste to me pretty fast.
Since it's a mega-monster-sized bot, I have some/various tweaks/complications
like "floating toward the opposite end of the wall" against pure wall-hugging bots
(so the target's escape area is narrower for my incoming shots) and actually
waiting for the "time since last incoming bullet" to exceeded a time limit before
moving in for the ram-death bonus-humiliation victory. I had been ramming straight
into the target's last few bullets. (ouch! not a good plan.)
How does it fire?
Array of virtual guns consisting of "linear-with-turning future prediction"
aiming. Different guns are instantiated with different (fixed) guessfactors
and whichever has the most virtual hits (recently) is used. The first gun on
the list is pure Head-on which is used by default.
More or less random, but it does wait to change direction/speeds/flip until just
after a shot has been fired. If no one is shooting back, then Sunshine won't flip/bounce. (Well, ok, fine, actually it will, in certain situations. )
How does the melee strategy differ from one-on-one strategy?
It has some (attempted) checks to "run away" if it's doing poorly in a field full of more powerful robots ... but it's basically the same mode as 1v1. It tries to "do everything".
How does it select a target to attack/avoid in melee?
Some attempts to weight "whomever shot me for the most damage" when picking targets,
and waits to switch until after it's finished shooting at the current target. The
scanner tracking periodically turns to scan the oldest known target/enemy. (rather than spinning all the way in a circle. I heard about the trick to lock the gun with the radar for faster radar sweeps, but haven't bothered to mess with that ... )
What does it save between rounds and matches?
It doesn't save anything to data files (because of the stupid JVM bug) but it does have
some static variables that hold data between rounds for virtualguns and hits-per-shot
ratios per target. It's designed for an "only three rounds vs. unknown competitors"
tournament, so saving out loads of data won't do me much good anyway.
Where did you get the name?
I wanted something less boring/expected than "Destroyer3000" or "Axe0fDeath".
Sunshine is just a shiny happy robot who wants to be your friend, and then kill you.
( an older bot shot 0.1 power bullets and would "get mean" once someone started to hit it. )
Can I use your code?
Not yet. (It's still a huge horrible embarrassing mess!)
What's next for your robot?
My robot needs a vacation. (I'm tired of messing with it!)
I guess I need to add stat-guns and wavesurfing like everyone else? (sigh)
I continue to have new/different ideas for properly implementing my original
movement strategy, but I think it will be as effective as plain wave surfing.
I tried slapping in the FloodNano
gun, which was useless. I tried segmenting
the virtual-hits based on distance, but that didn't seem to make a difference.
I could segment on velocity/since-last-change/etc and see what happens.
Sunshine is a fairly "slow bot" so maybe I'll optimize it. a bit. maybe.
I only started on the Robocode because my school scheduled and then canceled
two(2) tournaments in the last few months. These so called peers of mine are
really just a bunch of feeble worthless lazy wimps! (but don't quote me.)
I might add a tweak to support "super wide" battlefields, just because that's silly and it should be an easy modification.
For the longest time, the spinbot was a horrible problem, but now
I always use Cyprus3 as my "why is he still killing me?!?" test opponent.
Testing against, say, Tron3 is totally and completely pointless.
What other robot(s) is it based on?
- Tanks from (the game) Total Annihilation. (wow, that's still a good game.)
- The world famous RandomMovementBot! (that wall smoothing idea sure is fancy clever.)
- Zillions of pages of information on the Robocode Wiki.
Comments, questions, feedback:
Why don't you add this bot to the RoboRumble@Home? That will give you feedback that probably can guide you very well on what to focus on next. If I where you I would throw the VG out the window and replace it with a GuessFactorTargeting gun instead. Since you already collect virtual stats you have most of the work for a GF gun done. -- PEZ
I don't want to spend time building a bot that moves/shoots exactly the same as all the super bots. (guessfactors plus wave surfing, how exciting is that?) Segmenting my virtualhits by distance didn't seem to make any difference. I spent a Huge amount of effort trying to get pattern movement/matching to work. I'm going to "sit and think" for a while on some new/crazy movement ideas, and meanwhile be busy with the fall semester. -- tfh2
Well, it's very exciting if you ask me. The two by far greatest inventions in robocoding. Lots and lots of room for inventions and ideas within those areas. At least pattern matching isn't all that more exciting compared to guess factor stats. But I'm glad you're ready to try think completely new. That can bring forward great stuff. It has before. I still think you should enter your bot into the RR. -- PEZ
Total Annihilation rules! :) It's great to see someone trying to be different, I just hope you don't give up easily, it'll be very hard to come up with something that performs better than (or close to) GF/PM/WaveSurfing?. Understanding exactly how they work doesn't hurt, though. Know your enemy... ;) -- ABC