New tutorial topics
I've been trying to think of what other tutorials would be useful to have here. I feel like there's room for a lot more and I'd be willing to write some. Here are ideas I've had and the thoughts / doubts I have about them:
- Pattern Matching - This seems like an interesting one that we're lacking. I'm not really the expert here, but I could certainly manage to write a basic tutorial, and then maybe get feedback from Skilgannon and/or Simonton for updates. I first learned from David Mold's explanation.
- Dynamic Clustering - Certainly a very popular topic. We already have DCBot and lots of open source bots that use DC, so there's no shortage of source material to learn from. I'm not sure how much that negates the utility of having a real tutorial, though.
- Minimum Risk Movement - We already have Melee Strategy/Understanding HawkOnFire and Melee Strategy/Understanding Coriantumr (still on the old wiki), which are extremely useful. Would a straight tutorial add much?
- Segmentation / Attributes - There's a lot of simple stuff in this topic (distance, lateral velocity), but there's also a lot that's not as obvious (good wall distance styles, time since velocity change details), and it could be very useful to beginner / intermediate people to have as a reference.
- Anti-Surfer Targeting - This almost seems silly, since there's only a few specific things I can think of, but I bet some would find it useful and we could add more later. Maybe have different sections that start with a basic style of gun and demonstrate ways to make it better at hitting surfers? Basic Visit Count Stats and basic Dynamic Clustering I could do pretty easily.
- What else? Simpler stuff? Random Movement? Wall Smoothing? Virtual Guns? Basic Twin Duel? Debugging graphics? "Advanced" Wave Surfing? Go-To Wave Surfing (*looks at Skilgannon* =))?
Thoughts? --Voidious 21:14, 12 August 2009 (UTC)
That would make the very steep learning curve of Robocode a lot flatter =) I must admit that Robocode learning curve is too steep. There is not anywhere in either this wiki or the old one (minus very messy talk that no one will have enough to read them all) that mention 'How exactly is GF-DC gun?'. I used to confused with that, for the old wiki Dynamic Clustering page is really un-understandable. I tried to make the new wiki better.
Anyway, I disagreed that we should have 'Segmentation / Attributes' tutorial. They (and we too) need to figure that out by them/ourselves. And I would like to have only pseudo code on the tutorial, or very light Java code.
Random Movement, well, it think we should have Basic movement tutorial, which basically tell use how to move perpendicular and really basic Random Movement. Again, the good value must be figured out by them/ourselves, or where was the fun? I know that new Robocode will do a lot to gain top performance as soon as possible, but as you know deeper, you won't need to be the top and you can be happy with it, like me. Darkcanuck and I probably the more active Robocoder without any bots in top range (You , Skil, Red, and Pos are all have robot(s) in top class, aren't you?)
Debugging Graphics should be useful too. A simple how to draw circle, draw status text and all. VG/PM/DC/AS/MRM should be on their/our owns. This wiki page (or the unmigrated one) is detailed and current open sourced robot is cover enough for that. But I would like Wall Smoothing... I always having problems with Wall Smoothing direction, Wave Surfing direction, Actual Going direction and Sign of Velocity =) » Nat | Talk » 12:23, 13 August 2009 (UTC)
I must say that I agree with nat on this one. It would probably be better to have some advanced tutorials that explain advanced stuff such as DC and so forth, but I think it would be good to make them almost code-free and let people figure out the nitty-gritty details themselves.Nat's idea about making simple ones such as wall smoothing seemed like good idea too; it might be good to make a Debugging Graphics tutorial that could also explain basic stuff like tracking waves and virtual bullets(and drawing them, of course)--CrazyBassoonist 13:37, 13 August 2009 (UTC)
Really interesting that you guys would prefer pseudocode! I wouldn't have thought of that. --Voidious 20:48, 13 August 2009 (UTC)
I believe studying DCBot is a great way to understand DC in targeting, but I don't think I've ever seen any explanation on how to use DC to movement. Of course, if you are already used to wave surfing and have understood weel the idea behind DC you can figure it out yourself, but it is painfull. Perhaps we should have a DC-surfing tutorial. --Navajo 22:00, 13 August 2009 (UTC)
I believed that if we have tutorial for DC-GF it can be use to understand DC-WS easily. However, one thing that I consider, is the definition of terminology in Robocode is not clear at all. New people will believe that GuessFactor Targeting is a GF+VCS+Segmentation and thus not understand at all on how to use DC in GF... At least I'm. And it needs a lot of time to understand that GuessFactor Targeting is any targeting to involves with GuessFactor, and VCS is just a kind stats management system, just like DC. That's why I have an intension like that in my emails toward you, Voidious, if you remembered it. I am considering to re-define all terms in that not-yet-started thing. I think we need a full-wiki cleanup and re-migrating contents. » Nat | Talk » 12:13, 14 August 2009 (UTC)
It is very difficult to control how people use language. I think we've done a much better job on the new wiki in separating GF, VCS, DC, and PIF - I think the Terminology pages are all pretty clear, anyway. At least we all agree they are separate! I think PEZ lobbied for the separation of those ideas for a long time on the old wiki. One thing that would probably be good is to update the GuessFactor Targeting Tutorial to mention what Visit Count Stats is, and to point out that it's not necessarily dependent on GF.
--Voidious 13:34, 14 August 2009 (UTC)
Yeah, probably like that. I've been thinking of... I think we need anything that can flatten the learning curve i.e. make it easier to understand while it is still challenging to do. If you can just sum up a bit of code here and there, modified a little, and can take in top-30 like it is now is really bad (Really, add a bit of segmentation and drive protection and distancing and rolling average to movement and more segments and rolling average and bin smoothing to gun of BasicGFSurfer can get you there)
One thing I really hate about old wiki, the Rolling Average page don't have any information related to what it done... I confused for 2 weeks, asking my Maths teachers about Moving Average, which is by the way a type of average with data windowing, and didn't get anything. Then BOOM! It just popped into my head (really). It was on my first priority to make Rolling Averages page here better, which I think I was successful.
- Ugh.. I just looked at the Rolling Averages page and found that it was rather misleading and even incorrect about things. The main thing, was that it gave the impression that the 'Paul Evans' version did the same thing as the 'SpareParts Version' when in reality they are very different. Plus, the 'Paul Evans' version and the 'Time Weighted Rolling Average' versions are basically equivalent. I've fixed the inaccuracies, though the page is still a little messy/redundant. --Rednaxela 15:08, 14 August 2009 (UTC)
- Yeah, I realised that when I was fixing it today. But I didn't really know what it is anyway so I just leave it alone. In fact, I just read the whole Wikipedia page after you fixed it. Basically I just copied most implementations from the old wiki and re-label them from the code. The key point is only the intro, which does explain what Rolling Average actually is in Robocode, which doesn't appeared anywhere in old wiki or very hard to find. You are welcomed to fixed it, and thank you very much. » Nat | Talk » 15:26, 14 August 2009 (UTC)
- Personally, I don't think it's a bad thing that you can go through the tutorials and come out with a very strong bot. If you prefer to start by developing something unique, without outside influence (tutorials), or at a slower pace, it will take longer to get to the top 50/20/10/5, but those are choices you have to make, and I think all these types of Robocoders can co-exist. And the easier it is for new Robocoders to learn what's already common knowledge to some of us, the faster Robocode bots will evolve in general, which I think is a good thing.
- Imagine if Isaac Newton had said, "well, I spent my whole life studying science to understand physics, I don't want children just learning these formulas in a classroom! I'll just keep this info to myself." =) Far from a perfect analogy, and perhaps a bit over-dramatic, but I sort of see it like that.
- --Voidious 20:13, 17 August 2009 (UTC)
- Yeah, that's the point. But with pseudo code, it's fine. If you convert pseudo-code to Java code, you will need to modified it here and there. But if you have Java code like WS tutorial, you know... Taking your Newton case, giving a well normalized formula is like giving the best, normalized concept and techniques on the topic. But giving a real code looks like Newton calculating the answer for you, you just tell Newton what numbers you have. » Nat | Talk » 12:57, 18 August 2009 (UTC)
I'd be inclined to agree that pseudocode would be preferable in at least most cases. I wouldn't want to go on a spree changing existing articles to use psuedocode where possible, but I think it would be good to do so for new content where the article is not specifically about a very particular implementation. I feel pseudocode of the proper granularity really helps encourage thinking outside the box. --Rednaxela 14:47, 18 August 2009 (UTC)