Archived talk:CassiusClay 20040624

From Robowiki
Jump to navigation Jump to search
       Archive        This is an archive of past discussions. Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page.     

0.9.3 lost against a lot of bots and got 0 or very low points. Sure loks like a bug. -- Pulsar

Yes, it had an array indexing issue. I saw the same picture as you and uploaded a fixed version. Thanks for being on watch for me! -- PEZ

V 0.9.3b: "Desperate movement and targeting changes"... To whom? Us, probably :). 2010+ pts with 500+ battles! Think that is your best scoring ever, right? Congrats! Don't u think u have to put that RAM into the machine or maybe it's time to write a page about your wave surfing (Desperate attempt to keep PEZ busy with another thing) :)? -- Axe

Unfortunately Axe, i think PEZ is on a bit of a mission to get the top spot, And i think anything shy of holding him down and tickling him wont be enough to stall him...--Brainfade

Fortunately you mean, right? =) I do think I might have some lessons to teach about surfing. Talked to Jim about it. I'll see if I get some time and mood to do it soon. Though i think the desperate changes in movement this time only brought me back to what Pugilist does. Which would mean that it was the changes in the gun that gained me some points. Spank me hard for tweaking both gun and movement at the same time. But maybe you Axe can pick the gun out of Cassius and plug it into SilverFist and we could see? It has about the same interface as the current SilverFist gun so it should be a really easy process. -- PEZ

R u trying to keep me busy too, man? :) No problems, i´ll do it (just trying to find some time...). About the pages explaining WaveSurfing, i have too to find time in order to complete the SilverSurfer/WaveSuffering page... Afterall the wiki idea is to keep the knowledge open-source... -- Axe

I might have found a way to surf that isn't too obvious to Cigaret:

1st: pez.rumble.CassiusClay 0.9* 8434	3300	660	3897	576	0	0	66	34
2nd: 1.31        6258	1700	340	3775	318	9	113	35	66

The drawback is that I think it isn't as strong against GF guns as my old surfing style...

-- PEZ

Oh, well. I think it doesn't really float as a butterfly any longer. =) I'll go back to my Pugilist style surfing again. -- PEZ

OK. (Like anyone was tuned in on this channel.) I'm back to proven Pugilist style surfing with the next release of CC. Though some tweaks to it made me again counter Cigaret's fast-learning gun I think:

1st: pez.rumble.CassiusClay 0.9* 8699	3600	720	3773	606	0	0	72	28
2nd: 1.31        5725	1400	280	3656	226	12	149	28	72

Je, je ABC, I hear you. But it's a pain to run longer battles against Cig. My other (very limited) tests indiciate that I might still have a strong anti-GF movement. The rumble will tell. As the saying goes. =)

-- PEZ

Whoops, it's probably a fluke, but Locke0.5.3 just beat CassiusClay in its first match :-p --Vic

Nah. Not fluke. All my surfers are having major troubles with Locke. I have read about your targeting many times to try figure it out.

Referring to the one-version-only issue this is actually yet another reason. One Locke will drag my rating down (and so it should) two or more will drag me down more than I think I deserve. Don't you agree?

-- PEZ

So I was violating protocol after all. I thought we figured that out a couple of months ago. Well allright then. I'll stick to one version at a time. What have you read about my targeting then? I have only written a few words about it... Maybe you're confusing it with ZoomTargeting? I threw that away because it consumed way too much memory. --Vic

I wouldn't say you violated the protocol. There was no protocol published. I only tried to hint at it those few months agoi we last talked about it. I have read only those few words about your targeting. Still don't have a clue. =) -- PEZ

Heh :-) well, I am not at all happy with how it is performing at this point, but when I am able to bridge that gap with Raiko's gun I will tell what its about. --Vic

Now with 0.9.9b it seems I am back at the rating I had with version The difference is, I think, that 0.9.9b is stronger against more top bots and that it doesn't get Smoked like most CCs have been until now. 0.9.9b is actually PL throne candidate material. Which I also like. And I like this LRP graph:

Now I must figure some. My tests indicate I don't trash DevilFISH like some other versions of CC have done. I'm thinking this might mean I have accidentely broken some of its close combat capabilities. Everyone is welcome to speculate on what I should do next to boost CC rating.

-- PEZ

PEZ, what do you mean with "Weighting flattening in"? It sures seems to work well! --Vic

There are two elements two my WaveSurfing implementation now:

  1. Adaption (avoid guess factors where I've been hit)
  2. Flattening (avoid guess factors where my MovementProfile shows spikes)

The weighting between those two in the FF version is 100 for Adaption and 45 for Flattening. (More or less, I have several Adaption axises so it's a bit more complicated, but let's ignore that now.) I think that the flattening element might help me extend the period of time I can stay ahead of a learning gun.

However, it doesn't collect tons of points. I am probably able to tune it a bit more to find one or two points more. But done wrongly weighting in flattening is going to lose you points. That's why the general advice from me and other successful surfers is to not bother with flattening first. Concentrate, hard, on the adaption. Once that works it's easy, really easy to paste some flattening on top of it. Check out the CassiusClay source if you're a bit curious. The above all happens in the MovementWave class found in the file. There's two methods there for gathering stats, registerVisits() and registerHit() (the former should also be in singular form, it's plural for legacy reasons... I'll change that). registerVisits() is responsible for flattening and registerHit() is for adaption. The weighting all happens at data gathering time. Then when I read the data out, in smoothedVisits(), I simply add them together.

Makes sense? Ask again if something is unlcear and I or someone else might try to shed more light on it. I'll be gone from the wiki for two days though, so it'll probably be "someone else". =)

-- PEZ

Perfectly clear :-) Thanx. --Vic

May 31 2004 - Hi folks! I'm back. Had my notepad with me on the trip and did some thinking. Hopefully that means I have now released the strongest CassiusClay yet. It quite easily deals with DT 3.02. Any bot that does that must be worth releasing, wouldn't you agree? =) -- PEZ

Definitely. I think you probably have a winner here, well done. -- ABC

Hmmm, 1996 with 140 battles fought. Too early to draw conclusions I know, but... Well, let's wait and see. At least it could be a contender for the PremierLeague crown. And I think I must add CigaretBH to my test bed... -- PEZ

Here are the results from the tests I put CC through before releasing:

57,84%	1st: pez.rumble.CassiusClay 0.9	8237	3100	620	3940	577	0	0	63	37
42,16%	2nd: wiki.SilverFist 1.0	6004	1850	370	3429	355	0	0	38	62
51,00%	1st: jam.RaikoMX 0.30	7364	2500	500	3886	477	0	0	51	49
49,00%	2nd: pez.rumble.CassiusClay 0.9	7076	2450	490	3672	463	0	0	50	50
55,63%	1st: pez.rumble.CassiusClay 0.9	7886	2700	540	4092	553	0	0	54	46
44,37%	2nd: abc.tron3.Shadow 3.06	6290	2300	460	3159	371	0	0	46	54
55,12%	1st: pez.rumble.CassiusClay 0.9	7763	2950	590	3726	497	0	0	59	41
44,88%	2nd: cx.Lacrimas 1.36	6322	2050	410	3471	390	0	0	41	59
60,65%	1st: pez.rumble.CassiusClay 0.9	9021	3150	630	4576	665	0	0	63	37
39,35%	2nd: pe.SandboxDT 3.02	5852	1850	370	3311	321	0	0	37	63
72,71%	1st: pez.rumble.CassiusClay 0.9	10187	4150	830	4418	785	3	0	83	17
27,29%	2nd: jam.micro.RaikoMicro 1.44	3824	850	170	2667	137	0	0	17	83
61,98%	1st: pez.rumble.CassiusClay 0.9	9266	3600	720	4259	686	0	0	72	28
38,02%	2nd: 1.31	5685	1400	280	3728	248	3	25	28	72
75,64%	1st: pez.rumble.CassiusClay 0.9	12760	4650	930	5909	1132	139	0	93	7
24,36%	2nd: pe.SandboxLump 1.52	4109	350	70	3493	100	94	0	7	93
80,07%	1st: pez.rumble.CassiusClay 0.9	10647	4600	920	4333	793	0	0	92	8
19,93%	2nd: kawigi.sbf.FloodMini 1.4	2650	400	80	2087	83	0	0	8	92
64,66%	1st: pez.rumble.CassiusClay 0.9	9753	3650	730	4605	768	0	0	73	27
35,34%	2nd: 1.3	5330	1350	270	3442	268	0	0	27	73
73,55%	1st: pez.rumble.CassiusClay 0.9	11107	4300	860	5021	924	1	0	86	14
26,45%	2nd: jekl.Jekyl .70	3994	700	140	3020	132	1	0	14	86
67,65%	1st: pez.rumble.CassiusClay 0.9	11189	3900	780	5538	970	0	0	79	22
32,35%	2nd: jw.Booring 1.11	5351	1100	220	3784	247	0	0	22	78
60,40%	1st: pez.rumble.CassiusClay 0.9	8719	3250	650	4230	588	0	0	65	35
39,60%	2nd: pez.micro.Aristocles 0.3.7	5717	1750	350	3281	334	1	0	36	65
55,73%	1st: pez.rumble.CassiusClay 0.9	7626	2900	580	3630	516	0	0	60	40
44,27%	2nd:	6059	2000	400	3316	342	0	0	42	58
50,90%	1st: pez.rumble.CassiusClay 0.9	7356	2700	540	3654	462	0	0	54	46
49,10%	2nd: rz.Aleph 0.33	7095	2300	460	3876	458	0	0	46	54
62,22%	1st: pez.rumble.CassiusClay 0.9	9267	3350	670	4546	701	0	0	67	33
37,78%	2nd: vic.Locke 0.5.5	5628	1650	330	3353	295	0	0	33	67

The test bed is pretty arbritrary. A couple of the top bots and then some bots that ususally give me trouble. (Looks like RaikoMicro And SandboxLump don't do that any longer.) It's just 100 rounds each, but I thought the overall picture looked good. Against DT I have run several 100 round battles and it looks pretty much like the above all the time.

-- PEZ

I think CigaretBH isn't too much trouble for this CC:

1st: pez.rumble.CassiusClay 0.9	23306	8850	1770	10986	1700	0	0	177	73
2nd: cx.CigaretBH 1.03	14808	3650	730	9541	887	0	0	73	177

But I might be wrong. Maybe my gun and movement learns too slowly. I must dig into that I guess.

-- PEZ

no more big jumps in the versions of cc. out of ideas ??? --deathcon

Yeah. Though the difference between 1.0.3 and 1.0.4 is maybe worth a 1.1 numbering. But I'm pretty much out of ideas at the moment. I really thought 1.0 would make it. I seem to only be able to strengthen CC against strong enemies. Now I really don't want to sacrifice strength against the strong for strength against the weaker. Let's see if my latest experiment lets me both eat the cake and have it. -- PEZ

Have you already tried that RelativeHeading segment? I don't kow if it will work for your particular gun, but at least it is an idea ;-) --Vic

No, I should try that. Thing is I use lateral velocity for velocity and acceleration segmentation and I thought that maybe I captured some of the relative heading thingy there. I have to throw some other segmentation out to test relative heading segmentation, but I'm in the stage where I try anything anyway. =) 1.0.6 will be the test version. It will be like 1.05 with this _only_ difference. (I have to really promise that in public or else I'll try all sorts of little tweaks at the same time...) -- PEZ

Why do you freak around with your gun? Its is nearly impossible to improve your gun if you like to keep it a GF gun. Although your movement is superb,too i think that it good get slightly improved, but your gun? --deathcon

Well, I don't think it's impossible to improve it. In my tests small changes in the gun makes me get between 45% (the .p version used in SilverFist and Pugilist) and 55% (the version used in some later CC's) against DT. And RaikoMX gets 40 rating pionts more with its own gun than it gets with the .p one. 40 rating points! The gun needs to deal with those bots where the movement gives negative PBI's I think. I'm pretty sure I can improve my gunnery to gain me some 30 points. The movement... well yes, maybe I can collect 30 pionts there too. Robocode is about both. "Float like a butterfly. Sting like a Bee." =) -- PEZ

The new gun in Cassius is very interesting, BTW, finally something really new in gf guns. :-) I'm surprised at just how well it works! I definitely see now why my movement can't work it out at all. -- Jamougha

My current theory is that it is the new gun that keeps CC strong against the strong. Therefore I have just released version 1.1.0 which keeps the gun and tries to revert the movement changes since 0.9* that I think are keeping me back against the weak. I have never been right with these guesses before, but maybe this time. =) Cool that you think there is something fresh about the gun! I needed that encouragement badly. Now the experiment with RelativeHeading will wait a few releases. =) -- PEZ

OK. So now I've created a bot without a single loss with 734 battles fought. That makes CC king in PremierLeague land. =) But I fall 10 points short of my best rating so far with CC. Current CC have about the same movement as that CC had so the gun is probably weaker over all than the old gun. Now, I don't want to lose the surfer-slaying qualities of my gun so I guess I'll go back to movement a while again. -- PEZ

Wow that's really impressive! Congratulations! -- Pulsar

Now looking at the gun I think there is a huge bug in it. The "new" quality of it isn't in effect at all. The bug seems to produce similar effects as the RMX 0.31 bug did... -- PEZ

At least it was not the bug causing the gun to gun down surfers. The bug just made my gun work exactly as my old one. =) Which means it's my movement that's strong against the strong. Well, now my momentum is zero... Gotta hate Robocode. =) -- PEZ

OK Jam, now I'm curious. You said you were surprised that the gun trick works. Well, it didn't obviously. =) But I wonder what made you surprised about it? I assume the "new" thingy you mean is the one where I weight in a different set of segmentations? I'm surprised it didn't work. (Because it didn't once I nailed the bug preventing it from kicking in.) However I think that it might not work because the second set of segmentations is really bad. I ran it alone and it got a 94% TC score against TAOW. But else I would think it should work. Especially if I use your trick with storing the number of segment uses in index 0 and then divide each segmentation set reading by that number. When I thought up this cheap DynamicSegmentation I asked myself these questions:

  1. Against a given enemy, how can you "see" that a segmentation is good?
  2. ... how can you "see" it is bad?

Then I thought that if I add up a bad and a good segmentation the good one would rule. But maybe my answers to the above questions where wrong. ...

-- PEZ

Heh - it's strange just how buggy anything to do with GFs becomes. What would have made me expect that it wouldn't work is that, in general, either the peaks in the two segments will be the same - in which case it's equivalent to one gun - or they're not, in which case you'll likely end up firing at some intermediate point. However there's no really intuituive reason for thinking that that point will be better than the real peaks in either segment. Of course non-intuitive things may well happen in Robocode. :) It would probably work well if one segment is very flat and the other isn't, but I suspect that that's rare... I was assuming that it worked well against AM because it gives the gun a larger set of possible firing angles in a given situation, all of which are at least reasonably good. -- Jamougha

Now I think I have introduced some major bug in my movement. Everything I have tried recently has failed. My manual tests shows a strong, strong bot and then the rumble ratings says it's not as strong. Until now I have been unable to repeat this performance in the interactive runs. But now when Ascendent so clearly eats my latest CC alive I finally have a bot to iron out the bug with. Here's hoping! -- PEZ

This is probably just wishful thinking, but 1.5.1 is going good. I think the LRP graph looks like I keep my old ghost better leashed than before. Musashi must have been very lucky. =) No, seriously, it looks like Axe's gun finds a pattern to my movement now, but I'll let it if the new movement proves to perform better over all. -- PEZ

1.5.2 Tangents my best score yet (that of 0.9.9.FFr) but this version performs more stable I think. And it doesn't lose against a single bot!


-- PEZ

I think that is a great result, PEZ! If I were a judge in the Robo Sumo tournament I would vote to promote CassiusClay to Yokozuna ;-) --Vic

Really impressive, congrats! Long live the Premier League King! -- Axe

Thanks guys. Of course there is some luck element to it since the fights among the top bots are really tight. But it's cool anyway. I think that CC is quite posistioned now for an attack on the ELO crown. Or, I thought so. Nailing those head-on bots near perfect is really hard! I am so impressed now by RaikoMX and Shadow. -- PEZ

"Lame attempt"==2030+! :) Tell about! -- Axe

Yay! 2032 rounded. I did three things:

  1. Pre-populated my unsegmented stats array with hits head-on
  2. Added a check for if the enemy is having a hard time hitting me (hits me with less than 1 bullet per round)
  3. If the #2 check holds I divide all danger values with pow(distance_to_danger_location, 0.01) thus making it a bit less dangerous to evade the enemy than to approach.

Since the #3 thing there is special cased I thought I could do this without losing strength against the strong. Now I am not sure that holds. I have a higher score, but four ugly green dots in my LRP graph. Meaning I have lost my PL crown. But it could just be coincidences of course. The pre-population of head-on in my unsegmented stats should be rolled away fast and also be overruled by the segmented stats pretty immediately. (I have a stats array with segmentation on distance only.)

-- PEZ

Pretty funny I think:

Fighting battle 10 ... pez.rumble.CassiusClay,rz.SmallDevil 1.502
RESULT = pez.rumble.CassiusClay wins 4232 to 666

Don't try voodoo on CC! =)

-- PEZ

My current release batch of CC's is me experimenting with modification to my WallSmoothing scheme. It's a pure surfer without any wall bouncing whatsoever. It's the result of something Axe taught me about SilverSurfer's smoothing. I'm hoping I will be able to tune it to work at least as well as my previous wall-bounce-when-really-close approach. -- PEZ

Waking up comment: Cool mate, we both passed Shadow! Seems a tie, CC 2036.12 & SS 2035.82 with little advantage to CC, but SS always gets 1 or 2 pts given more time - saved data... -- Axe

Good idea. That's for next CC release. =) -- PEZ

I never agreed with that ABC´s non-saving data mantra :) -- Axe

I think it is a matter of saving the right data. -- PEZ

more saving right the data... :) --Axe

Indeed! Let's see if I do any of those two things. A pre-loaded CC is released. -- PEZ

Guess I might still have done both things right. Though I didn't read the data! =) -- PEZ

Whoah! Everybody seems to be racing passed Shadow this weekend! Great work guys! PEZ, I guess the RelativeHeading experiment didn't work out to good.... I must say that I have no idea why it pulls CC's rating down so much... it could be that Math.abs() thing, but I'm not sure. Out of curiosity, what formula did you use to calculate the RH? And how did you divide the segment? --Vic

I was waiting for you to ask. Here's what I do:

	if (e.getVelocity() != 0) {
	    lastEnemyMovingVelocity = e.getVelocity();
	double enemyHeading = e.getHeadingRadians() * PUtils.sign(lastEnemyMovingVelocity);
	double relativeHeading = Math.abs(Utils.normalRelativeAngle(enemyHeading - robot.getHeadingRadians() - e.getBearingRadians()));
	wave.rhIndex = (int)Math.min(GunWave.RH_INDEXES - 1, relativeHeading / (Math.PI / GunWave.RH_INDEXES));

And RH_INDEXES is 11.

-- PEZ

Sorry it took a few days to respond. I'm a bit distracted by the European Soccer Championship. Which reminds me: Congratulations with your 5-0 victory! I was very impressed by the Swedish team.

About RelativeHeading: the only thing I can think of at this points is to remove the Math.abs(). I've tried adding that some time ago, and it made me lose a lot of rating points. I checked out CC's code and I noticed you have a fast and a slow learning array. Maybe you should add RH to both.


Yay!!! Zlatan Ibrahimovic rules. I think Zlatan is a good name for a bot. But I must create a bot that's really good at something for it to earn a name like that. Holland fought well against the Germans too. It shows strength to come back and force the game to a draw like that. -- PEZ

Yeah, Zlatan sounds like a strong bot already! I also thought the real Zlatan played really well. Of course he had a very good education in ... eeehm .... where was it again ... oh yeah: Amsterdam! =) I was not to pleased with the dutch team against Germany. You are right, they showed great fighting spirit in the second half, but with a desperate tactic that they don't usually use, because they could not get by the german midfield in their usual 'dutch' way. Fortunately they admitted this and promised a better game against the Czech republic. I'll be cheering them on that's for sure! --Vic

You should try being a Football (European football in the case =^>) fan and live in America. All the good games are in Europe and you get so little coverage of things like European Soccer Championships, FA Cup, etc. It cost USD 40.00$ per game to watch the matches. I have to settle with the paper :(. Ah well at least we managed a win in our opening World Cup qualifier. For anyone here planning on being at the next World Cup in Germany, we should make plans. As it stands now my family and I planning on being in Germany to be a part of Sams Army. I can not wait. -- jim

Strange that football still has so little coverage in the US. It is one of the most performed sports you have there, in'it? -- PEZ

Well if you mean Football as in "Rugbyish" the yes it is very well covered, and my favorite sport of all. If you mean Football as in Soccer, it is not really that well covered. The US Womens National Team won the first Womens World Cup and came home to a crowd of 24 people waiting for them at the airport. Of the 24 something like 22 were family member. We have I think 10 teams in MLS (our local league). The level of play is improving but I do not think it on par with many European club sides. Most of our best players end up over the pond with you guys and I do not think that is enough to field a whole side. -- jim

I feel for ya, jim. Football (our kind) is really the sport for the masses over here. We have the pleasure of watching fantastic competitions like the European Champions League every season. I often hear stories about how the american media ridicule the sport, because of the small amount of goals per match. Too bad. They don't know what they're missing. --Vic

Portugal did not convince me against Russia today that they have what it takes to reach the semi finals. Though if they start with Ronaldo against Spain they might stand a chance. He's a truly creative player. -- PEZ

Well, England wasn't so good either today, despite their 3-0 victory. Only Rooney is the positive exception I think --Vic

Yes he was great. And I think Beckham was great too. He delivered I think 30 or so wonderful passes (if that's the word) and also worked hard in the defense. But overall, no, the Swiss had a day of bad luck, they could have evened the score out several times while it was only one goals difference. -- PEZ

PEZ, I wish you a good game this evening! Are you nervous? --Vic

Am I??? I can't begin to describe how giddy I am. I think the Totti incident made me even more nervous. What if Sweden makes it to the quarter finals? I'll be a wreck! =) But Zlatan and Anders Svensson will hopefully calm me down tonight. -- PEZ

Wow! Great goal by Zlatan! I guess you are very pleased with the draw considering how the game went. Sweden now have a real chance of getting through to the next round. --Vic

Wish I could watch :(. -- jim

Yeah, Italy was playing football today! At least the first 45 minutes Sweden was not even slip streaming. I think the Italians took the command and the lead using great strategy and tactics. But then they forgot the age old lesson; You can't protect a one goal lead. They invited the Swedes back into the game and then Zlatan could do that incredible goal. Did you notice how the Italian defence took two three steps back when he had the ball, in fear of getting out-tricked? Respect! -- PEZ

No. I did not notice. I did not see, not even hilights. No Mas. Por Favor, No Mas. I wish I could see the game. Maybe Fox Sports World will carry the game on delay next week. -- jim

  • Fox Sports World just carried the highlights. The Zlatan goal was one of the best I have seen in a long time. Italy sure missed a lot of golden chances. Viere in particular had some 4 or 5 scoring chances which he failed to put on net. Too bad for Italy. Good for Sweden. --jim
  • Yes, very good for Sweden. The goal keeper did one of his best matches ever I think. Sweden was unprepared for an Italian team on the offsense I think. The Italians for very long didn't even allow the Swedes to catch their breath. I've seldom seen football as good as the Italians was playing it for the first half of the match yestedray. Very impressive. The best thing for Sweden was when the Italians fell back in old tracks with a defensive game play. That's very dangerous tactics against Ibrahimovic, Larsson and Ljungberg. Now it's between the Danes and the Swedes who will follow Italy to the quarter finals I think. Bulgaria has nothing to play for and I can't see them steal 2 points against that Italian team. The Swedes will advance from both a win and a draw though so it'll be up to the Danes to show how hungry they are. -- PEZ

So... tonight's the night then! Nervous, PEZ? I think Sweden will go through. So far I've been right about all 4 teams that are through, although that doesn't say much of course. I'm afraid I will be terribly wrong tomorrow... --Vic

Somehow I'm not as nervous as I was before the match against Italy. I should be. The Danes are dangerous. -- PEZ

Yes, they are! I hope it will be a good match! I'll be watching for sure. Oh, and great work improving CC once again! 2042... I can only dream about such rating points. -Vic

Tanks. Trying with pre-loaded movement data on all participants now. Let's see if it can collect me some more points. -- PEZ

Well, the scores are good for you at half time.... The Italians are failing. But... there's another half to go. And 2047.4 for CC at 606 battles! Great stuff. You're getting really close to MX. --Vic

Wow! Congratulations 2040+! Only taking of bull power & wall segmentation? -- Axe

Yeah, basically. Though the wall segmentation has been gone for a while due to a bug. It was reinstalling it and losing points that got me to remove also the traces. =) The significant change I think is that I have smaller data files and thus can pre-load data on all enemies.

But. More importantly. Sweden reached the quarter finals!!!!!!!!!!!!!!!! After 2-2 against the Danes. The Danes totally owned the match and it was only in the 88th minute or so that Sweden could even it out. Phew! -- PEZ

Sweden and Denmark are through to the quarter finals! That means my predictions are still on track :-) That gives me a bit more hope for tomorrow :-/ Congrats, PEZ. -- Vic

Yay!!!! Good luck tomorrow! -- PEZ

There is some EURO 2004 coverage in the American news feed. This is a very to-the-point report from the Sweden vs Denmark game: Apart from them writing Edde Sand when they obviously mean Ebbe Sand and misspelling Isaksson it is a good article. Maybe it fails to deliver just how good the Danes played compared to the Swedes, but as a Swede I can live with that. =) -- PEZ

There are no threads on this page yet.