Robocode Online Web Application - what do You think?
That doesn't do exactly what I am talking about. While it provides some functionality, in the form of modules which perform an action for a specific part (such as anti gravity movement system), it doesn't provide the tools for making your own systems. Say you had a framework which automatically: controlled radar, tracked enemy waves, tracked your own waves (with virtual wave functionality), tracked bullet shadows on enemy waves, and provided a goto point sequence function which would automatically take the robot to the specified points, avoiding walls, in order, in an efficient manner, allowing modification of course. This would take most of the basic "gritty" aspects out of the game, allowing newer programmers to start thinking about where to move, not how to get there at all. I think the strategy is the much more interesting and intuitive part of robocode. Maybe I should start making such a framework...
I don't know, I could be wrong… But I think you greatly underestimate how much your appreciation for that strategy was nurtured by the process of building those systems. :-)
I haven't even finished building all those systems! Still haven't bothered with precise prediction, not even a real movement system either. To me, the machine learning part is one of the most interesting parts, but it meshes with other things that make it a bit more than pure classification. For example, how bots surf multiple waves is more of a path finding than classification problem, and can be approached in multiple ways. Bullet shadows also make targeting movement interaction more complex: should I shoot to an area which I think has high danger which I cannot easily avoid in order to reduce the danger, if I I think the enemy has a lesser probability of moving there? Melee seems to add many more layers of complexity above raw classification.
Haha, ok, I stand corrected. :-P
Btw, don't take any of this as me disagreeing with you on a fundamental level or anything. But my Little Man kinda hears it as building a Robocode framework to plug all the holes in Robocode's game design so you can focus on the tiny slice of the game that you actually like. It just feels unproductive, like you could build something so much better completely outside of Robocode. But that's what happens when you stop building Robocode bots and start building your own games. :-)
Do you think movement at a base level has been "solved"? That is, do you think that the movement algorithms (actually going places, not classification) can be improved? What about precise prediction, bullet shadows (where they are, not what to do about them), and radar?
I'm not sure, I haven't thought about it in a while. I don't feel like it's solved, but it does feel like a point of diminishing returns. (Well, for me and Skilgannon. The rest of you have work to do. :-P) Then again, that feeling also precedes most breakthroughs.
I do think any general improvements to movement would still fall under the banner of "Wave Surfing". But I certainly think there are improvements. Heck, maybe a lot of them - for all the bots in the rumble and all the activity on the wiki, there's actually very few people in the world that have reached the upper echelons of Robocode and kept trying to improve on the state of the art. I'm sure if 5,000 PhD students spent a few years building Robocode bots, they'd do pretty well. :-)
But I think there's a lot more fertile ground hidden by our metrics, too. We focus pretty strongly on APS. Only a few top bots (eg Shadow, DrussGT, Diamond/Dookious) have any kind of evolved strategy for fighting other strong bots. I'd say we've mostly side-stepped the arms race between adaptive movements and anti-adaptive targeting, which could be pretty interesting.
Sorry, was only focused on 1v1 movement there, but my feelings are similar for Melee. It's gotten less attention than 1v1, but I think it also has a lower ceiling due to noisy data. I don't think bullet shadow detection can be improved in 1v1 (besides bug fixes), same for radar.
I think (and my weighting experiment with Gilgalad seems to back this up) that the attributes used in the classification algorithms are far more important than the weights (although there is still the cluster size, the shape of the function, and the data decay). Since most of the recent top bots use kNN and most of them, I assume, have similar attributes, I suspect that the difference in strength between these bots is actually the "frameworks" not the classification systems. Also, I agree with voidious that most people who play robocode like to make everything. I could have used rednaxela's kd-tree, but making my own is fun. It's not like we are on a deadline and need to get things done quickly. If you enjoy playing with classification schemes, I think you would enjoy making your own framework.
Although I do think there are a bunch of parts of Robocode itself that are mostly friction, stuff that takes time and energy but doesn't add much to gameplay depth. I noticed and thought about this stuff a lot while developing BerryBots and wrote up some thoughts if you're interested: . I know what you're saying - for instance, a lot of us are content to spend most of our lives writing classification (targeting) algorithms, so why not just make that the game and get rid of all the cruft? In BerryBots you can sorta get halfway there by writing a stage (eg LaserGallery).