<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Applied Games Group Blog : Games</title><link>http://blogs.technet.com/apg/archive/tags/Games/default.aspx</link><description>Tags: Games</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>BabyJack Inline Video Card Game</title><link>http://blogs.technet.com/apg/archive/2008/05/26/Babyjack-Inline-Video-Blackjack.aspx</link><pubDate>Mon, 26 May 2008 13:27:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3061129</guid><dc:creator>apg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/apg/comments/3061129.aspx</comments><wfw:commentRss>http://blogs.technet.com/apg/commentrss.aspx?PostID=3061129</wfw:commentRss><description>&lt;P mce_keep="true"&gt;Its been yet another wet&amp;nbsp;and windy bank&amp;nbsp;holiday weekend here in the UK,&amp;nbsp;so&amp;nbsp;I decided&amp;nbsp;to involve the family and create&amp;nbsp;a video &lt;A class="" href="http://en.wikipedia.org/wiki/Blackjack" mce_href="http://en.wikipedia.org/wiki/Blackjack"&gt;Blackjack&lt;/A&gt; called BabyJack,&amp;nbsp;despite the baby's name being Sean&amp;nbsp;not Jack :). Just press the Play button below to pit your wits against the baby...&lt;/P&gt;
&lt;TABLE class="" border=8&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;DIV id=wmp&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=middle&gt;
&lt;DIV id=Prompt style="FONT-SIZE: 20px; FONT-FAMILY: fantasy"&gt;&lt;INPUT style="FONT-SIZE: 20px; FONT-FAMILY: fantasy" onclick=Javascript:Shuffle(); type=button value="Play BabyJack!"&gt;&lt;/INPUT&gt; &lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;SCRIPT type=text/javascript&gt;
if(-1 != navigator.userAgent.indexOf("MSIE"))
{
	var element = document.getElementById("wmp");
	element.innerHTML = "&lt;OBJECT id=player height=280 width=340 type =application/x-oleobject classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 &gt;&lt;PARAM NAME=\"URL\" VALUE=\"http://www.trelford.com/BabyJack.gif\"&gt;&lt;PARAM NAME=\"uiMode\" VALUE=\"none\"&gt;&lt;/OBJECT&gt;";
}
else
{
	var element = document.getElementById("wmp");
	element.innerHTML = "&lt;OBJECT id=player height=280 width=340 type=application/x-ms-wmp &gt;&lt;PARAM NAME=\"URL\" VALUE=\"http://www.trelford.com/BabyJack.gif\"&gt;&lt;PARAM NAME=\"uiMode\" VALUE=\"none\"&gt;&lt;/OBJECT&gt;";
}


var player = theForm.player;

function Pair(first,second)
{
	this.fst = first;
	this.snd = second;
	this.toString = function () { return "("+this.fst+","+this.snd+")"; }
}

function Card(rank, suit) {

	function HighValue(rank)
	{
		switch (rank)
		{
			case '2': return 2;
			case '3': return 3;
			case '4': return 4;
			case '5': return 5;
			case '6': return 6;
			case '7': return 7;
			case '8': return 8;
			case '9': return 9;
			case 'J': return 10;
			case 'Q': return 10;
			case 'K': return 10;
			case 'A': return 11;		
		}
		return 0;
	}

	function LowValue (rank)
	{
		if (rank == 'A') return 1;
		return HighValue (rank);
	}

	this.rank = rank;
	this.suit = suit;
	this.highValue = HighValue(rank);
	this.lowValue = LowValue (rank);

	this.toString   = function () {
		var code, color;
		switch (this.suit) 
		{ 
			case "C": code = "clubs"; color="black";
 break;

			case "D": code = "diams"; color="red"; break;
			case "H": code = "hearts"; color="red"; break;
			case "S": code = "spades"; color="black"; break;
		} 		
		return "&lt;font color=" + color +"&gt;" + this.rank + "&amp;" + code +";&lt;/font&gt;"; 
	}
}

function ComputeHandRank(hand)
{
	var high = 0, low = 0;
	for (var i=0;i&lt;hand.length;i++)
	{
		high += hand[i].highValue;
		low += hand[i].lowValue;
	}
	return high &lt;= 21 ? high : low; 	
}

function Deck () {
	
	function generateCards() {	
		var cards = new Array();
		var suits = "CDHS";
		for (var suit=0; suit&lt;suits.length; suit++)
		{
			var ranks = "A23456789JQK";
			for (var rank=0; rank&lt;ranks.length; rank++)
			{
				var card = new Card(ranks.charAt(rank), suits.charAt(suit));
				cards.push( card  );
			}	

		}
		return cards;	
	}

	function shuffle (cards) {
		var pairs = new Array();
		for (var i=0;i&lt;cards.length;i++)
		{
			pairs.push ( new Pair(Math.random(), cards[i]) );
		}
		pairs.sort( function (a,b) { return a.fst - b.fst; }	);	


		var shuffled = new Array();
		for (var i=0;i
&lt;pairs.length;i++)
		{		
			shuffled.push( pairs[i].snd );
		}
		return shuffled;
	}

	this.cards = shuffle( generateCards() );	 
	this.takeOne = function () { return this.cards.shift(); }
}

var deck, babyHand, userHand;

function Play()
{
	setTimeout( function () { player.URL= "http://www.trelford.com/BabyJack.gif"; clearTimeout();}, 100);
	player.controls.play ();
	var s = "&lt;input style=\"font-family:fantasy;font-size:20\" type=button onclick=\"Javascript:Shuffle();\" value=\"Play BabyJack!\"/&gt;";
	document.getElementById("Prompt").innerHTML = s;
}


function Shuffle()
{
	player.URL= "http://www.trelford.com/Shuffle.wmv";
	document.getElementById("Prompt").innerHTML = "Shuffling deck";
	deck = new Deck();
	babyHand = new Array();
	userHand = new Array();
	babyHand.push(deck.takeOne());
	userHand.push(deck.takeOne());
	babyHand.push(deck.takeOne());	
	userHand.push(deck.takeOne());

}

function StickOrTwist()
{
	var html = "Your cards " + userHand.join();
	if (userHand.length &gt; 2 &amp;&amp; ComputeHandRank (userHand) &gt; 21 )
	{
		html += " make you Bust";
		setTimeout( function () { player.URL = "http://www.trelford.com/Win.wmv"; clearTimeout(); }, 500);
	}
	else
 	{
		setTimeout( function () { player.URL= "http://www.trelford.com/StickOrTwist.gif"; clearTimeout(); }, 100);			
		html += " do you "; 
		html += "&lt;input style=\"font-family:fantasy;font-size:20\" type=button value=\"Stick\"/ onClick=\"Javascript:Stick();\"&gt;";
		html += "&amp;nbsp;or&amp;nbsp;"
		html += "&lt;input style=\"font-family:fantasy;font-size:20\" type=button value=\"Twist\"/ onClick=\"Javascript:Twist();\"&gt;";
	}
	document.getElementById("Prompt").innerHTML = html;	
}

function Stick()
{	
	if (ComputeHandRank (babyHand) &gt;= ComputeHandRank (userHand) )
	{
		document.getElementById("Prompt").innerHTML = "BabyJack wins with " + babyHand.join();
		player.URL = "http://www.trelford.com/Win.wmv";				
	}
	else
	{
		document.getElementById("Prompt").innerHTML = "BabyJack loses with " + babyHand.join();
		player.URL = "http://www.trelford.com/Lose.wmv";				
	}
}

function Twist()
{
	player.URL= "http://www.trelford.com/Card.wmv";
	document.getElementById("Prompt").innerHTML = "Dealing card";	
	userHand.push(deck.takeOne());
}

&lt;/SCRIPT&gt;

&lt;SCRIPT language=JScript event=playStateChange(newState) for=player&gt;
if (newState == 1) {
	if (player.URL.match ("Shuffle") != null) StickOrTwist ();
	if (player.URL.match ("Card") != null) StickOrTwist ();
	if (player.URL.match ("Win") != null) Play ();
	if (player.URL.match ("Lose") != null) Play ();
}
&lt;/SCRIPT&gt;

&lt;P&gt;For those of you interested in how it was done; the video was shot on a simple digital camera, and then sepia and film age&amp;nbsp;&lt;A class="" href="http://www.microsoft.com/windowsxp/using/moviemaker/create/addspecialfx.mspx#specialfx" mce_href="http://www.microsoft.com/windowsxp/using/moviemaker/create/addspecialfx.mspx#specialfx"&gt;effects&lt;/A&gt; were applied in&amp;nbsp;&lt;A class="" href="http://www.microsoft.com/windows/products/windowsvista/features/details/moviemaker.mspx" mce_href="http://www.microsoft.com/windows/products/windowsvista/features/details/moviemaker.mspx"&gt;Vista's Movie Maker&lt;/A&gt;, with sound generated by my eldest son &lt;A class="" href="http://www.youtube.com/watch?v=uapHhhQNdfk" mce_href="http://www.youtube.com/watch?v=uapHhhQNdfk"&gt;Thomas&lt;/A&gt; playing piano in the background. The stills were created&amp;nbsp;using Microsoft &lt;A class="" href="http://windowshelp.microsoft.com/Windows/en-US/help/f5feb1df-8dd7-4ab0-9f65-3c1c89a329ab1033.mspx" mce_href="http://windowshelp.microsoft.com/Windows/en-US/help/f5feb1df-8dd7-4ab0-9f65-3c1c89a329ab1033.mspx"&gt;Paint&lt;/A&gt; and the&amp;nbsp;Chiller font.&amp;nbsp;The video itself was embedded in the page using the &lt;A class="" href="http://msdn.microsoft.com/en-us/library/bb249579(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb249579(VS.85).aspx"&gt;Windows Media Player Control&lt;/A&gt;; and the interaction was coded&amp;nbsp;in &lt;A class="" href="http://www.w3schools.com/JS/" mce_href="http://www.w3schools.com/JS/"&gt;Javascript&lt;/A&gt; using trusty &lt;A class="" href="http://windowshelp.microsoft.com/Windows/en-NZ/Help/d85ed1d6-e6b7-468a-be39-9505c04ceb781033.mspx" mce_href="http://windowshelp.microsoft.com/Windows/en-NZ/Help/d85ed1d6-e6b7-468a-be39-9505c04ceb781033.mspx"&gt;Notepad&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Phil Trelford&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3061129" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/apg/attachment/3061129.ashx" length="5794" type="text/html" /><category domain="http://blogs.technet.com/apg/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.technet.com/apg/archive/tags/Games/default.aspx">Games</category></item><item><title>Lunar Lander Retro Vector XNA 2.0 Game sample written in F#</title><link>http://blogs.technet.com/apg/archive/2008/05/11/lunar-lander-retro-vector-xna-2-0-game-sample-written-in-f.aspx</link><pubDate>Mon, 12 May 2008 00:36:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3053806</guid><dc:creator>apg</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.technet.com/apg/comments/3053806.aspx</comments><wfw:commentRss>http://blogs.technet.com/apg/commentrss.aspx?PostID=3053806</wfw:commentRss><description>&lt;P&gt;While travelling to&amp;nbsp;Microsoft HQ in Redmond&amp;nbsp;earlier in the year for the annual TechFest&amp;nbsp;event - for some fun I decided to&amp;nbsp;have a go at writing a&amp;nbsp;small retro game in &lt;A class="" title=FSharp href="http://research.microsoft.com/fsharp/fsharp.aspx" mce_href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt; using &lt;A class="" href="http://creators.xna.com/" mce_href="http://creators.xna.com/"&gt;XNA 2.0&lt;/A&gt;, and attached are the results. When&amp;nbsp;moving over&amp;nbsp;to Pacific time I usually find myself waking up at 4am for the first few days, leaving me with plenty of wide awake hours I wouldn't normally have to while away, and this is when the sample was born. I&amp;nbsp;decided on an implementation of&amp;nbsp;&lt;A class="" title="Lunar Lander Computer Game" href="http://en.wikipedia.org/wiki/Lunar_Lander_%28computer_game%29" mce_href="http://en.wikipedia.org/wiki/Lunar_Lander_%28computer_game%29"&gt;Lunar Lander&lt;/A&gt; basically because it is pretty simple both logically and graphically,&amp;nbsp;and at the same time fun and achievable in a&amp;nbsp;relatively short time. The&amp;nbsp;sample lets you play with a game pad or keyboard ('Z' and 'X' to rotate, Space to thrust), and to complete the game you must land on the long flat section before you run out of fuel&amp;nbsp;and hit the jagged terrain.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Lunar Lander XNA Game Screenshot" style="WIDTH: 500px; HEIGHT: 375px" height=375 alt="Lunar Lander XNA Game Screenshot" src="http://blogs.technet.com/photos/apg/images/3053799/500x375.aspx" width=500 mce_src="http://blogs.technet.com/photos/apg/images/3053799/500x375.aspx"&gt;&lt;/P&gt;
&lt;P&gt;For those interested, the source is attached to this post, which comprises a Visual Studio 2005 solution, a C# XNA 2.0 shell project to take advantage of the content pipeline for audio, an F# game implementation project and a small utility project to create terrain vectors from points in an image file. Please feel free to download and&amp;nbsp;play with it, in theory if you have XNA 2.0 and F#&amp;nbsp;installed then you should be able to just load the solution and press F5 to build and run.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;EM&gt;Phillip Trelford&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3053806" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/apg/attachment/3053806.ashx" length="99988" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/apg/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://blogs.technet.com/apg/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.technet.com/apg/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.technet.com/apg/archive/tags/Games/default.aspx">Games</category></item><item><title>Silicon Minds Challenge (+ submission sample) </title><link>http://blogs.technet.com/apg/archive/2007/12/23/silicon-minds.aspx</link><pubDate>Sun, 23 Dec 2007 22:47:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2673521</guid><dc:creator>apg</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/apg/comments/2673521.aspx</comments><wfw:commentRss>http://blogs.technet.com/apg/commentrss.aspx?PostID=2673521</wfw:commentRss><description>&lt;P&gt;On the&amp;nbsp;8th December 2007&amp;nbsp;the &lt;A class="" title="Silicon Minds" href="http://www.dreambuildplay.com/main/" mce_href="http://www.dreambuildplay.com/main/"&gt;Silicon Minds challenge&lt;/A&gt;&amp;nbsp;was launched at the &lt;A class="" title=MALAGA href="http://research.microsoft.com/mlp/apg/malaga.aspx" mce_href="http://research.microsoft.com/mlp/apg/malaga.aspx"&gt;Machine Learning and Games&amp;nbsp;workshop&lt;/A&gt;&amp;nbsp;of the &lt;A class="" href="http://nips.cc/" mce_href="http://nips.cc/"&gt;NIPS conference&lt;/A&gt; in the picturesque Canadian ski resort of Whistler. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The challenge is to&amp;nbsp;push the limits of Artificial Intelligence while building a game with &lt;A class="" title="XNA Game Studio 2.0 Getting Started" href="http://creators.xna.com/Education/GettingStarted.aspx" mce_href="http://creators.xna.com/Education/GettingStarted.aspx"&gt;XNA Game Studio 2.0&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;The main prize an opportunity to interview for an internship with &lt;A class="" href="http://research.microsoft.com/cambridge/" mce_href="http://research.microsoft.com/cambridge/"&gt;Microsoft Research Cambridge&lt;/A&gt;, &lt;A class="" title=Rare href="http://www.rareware.com/" mce_href="http://www.rareware.com/"&gt;Rare Ltd&lt;/A&gt; or &lt;A class="" title=Lionhead href="http://www.lionhead.com/" mce_href="http://www.lionhead.com/"&gt;Lionhead Studios&lt;/A&gt;.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;The&amp;nbsp;submission entry period lasts&amp;nbsp;until the 27th January 2008.&lt;/LI&gt;
&lt;LI&gt;Full details of the competition are available at the&amp;nbsp;DreamBuildPlay&amp;nbsp;website: &lt;A href="http://www.dreambuildplay.com/"&gt;http://www.dreambuildplay.com&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The contest is to be judged on 3 criteria:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN class=bold&gt;Game A.I. (60%)&lt;/SPAN&gt; – Game A.I. will be evaluated based on how it serves the game design, and how it contributes to the game experience. Novelty and originality of the AI is appreciated but not required: a novel use of an existing state-of-the AI method is in itself considered to be innovative. General applicability of the AI concepts/techniques is also valued.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class=bold&gt;Fun Factor (20%)&lt;/SPAN&gt; – The fun factor will be evaluated based on how the game design creates a positive user experience. This may include how intellectually challenging, relaxing, stimulating or satisfying the game is. A key indicator for the fun factor will be the desire to keep playing.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class=bold&gt;Production Quality (20%)&lt;/SPAN&gt; – Make your game world as polished as possible and hook your judges with exciting, entertaining action. Production quality will be evaluated based on how seamless the overall game play is, the quality of the assets used, and the structure, readability and level of documentation of the code.&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;The submission must include the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Your finished game in .ccgame XNA Creators Club Game Package form.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The source code and content of your game.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A design summary.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Three screenshots of your finished game.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;To this end over the last week we have been having fun creating a mini-sample submission attached based on the &lt;A class="" title="Board Game Go" href="http://en.wikipedia.org/wiki/Go_%28board_game%29" mce_href="http://en.wikipedia.org/wiki/Go_%28board_game%29"&gt;board game Go&lt;/A&gt; demonstrating:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Using Monte Carlo methods to score&amp;nbsp;the board - thanks to David Stern. &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Some&amp;nbsp;well documented source - thanks to Ralf Herbrich. &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A sample design&amp;nbsp;summary - thanks to Thore Graepel.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Reused code and graphics - thanks to the &lt;A class="" title="Minjie sample" href="http://creators.xna.com/Headlines/minigames/archive/2007/03/07/Minjie.aspx" mce_href="http://creators.xna.com/Headlines/minigames/archive/2007/03/07/Minjie.aspx"&gt;XNA Minjie board game&amp;nbsp;sample&lt;/A&gt;. &lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Disclaimer: The mini-game sample itself actually uses a rule based AI and should not be seen as an example of AI or&amp;nbsp;game quality - more a sample of documentation quality and&amp;nbsp;the submission files required.&lt;/P&gt;
&lt;P mce_keep="true"&gt;What&amp;nbsp;we do hope is that you will find the sample a useful reference on how to document your code (specifically the XGoLibrary project), how to comment code you have&amp;nbsp;taken from other sources and how to write the design summary.&lt;/P&gt;
&lt;P mce_keep="true"&gt;On coding standards, if you are starting afresh for the competition we suggest you take a look at the MSDN&amp;nbsp;section &lt;A class="" title="Design Guidelines for Class Library Developers" href="http://msdn2.microsoft.com/en-us/library/czefa0ke(VS.71).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/czefa0ke(VS.71).aspx"&gt;".Net Framework General Reference -&amp;nbsp;Design Guidelines for Class Library Developers"&lt;/A&gt; for guidance. In summary this is what we would like to see in the code:&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Readability chosen over raw performance.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Short understandable classes and functions.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A consistent &lt;A class="" title="Naming Guidelines" href="http://msdn2.microsoft.com/en-us/library/xzf533w0(VS.71).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/xzf533w0(VS.71).aspx"&gt;naming convention&lt;/A&gt;.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Good &lt;A class="" title="XML Documentation Comments (C# Programming Guide)" href="http://msdn2.microsoft.com/en-us/library/b2s063f7.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/b2s063f7.aspx"&gt;C# XML&amp;nbsp;comments&lt;/A&gt;.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;Don't forget though 60% of the score is based on Game AI... hope you enjoy the contest - we are really looking forward to seeing your submitted games.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Last&amp;nbsp;but not least&amp;nbsp;a quick special thanks to Joaquin Quiñonero Candela for working so hard organising the challenge.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Update 1&lt;/STRONG&gt;: We have noticed that the PDF still had some review comments; they are removed now. Also, rendering during the scoring was accidently reset to constant black (rather than an alpha value proportional to the expected propability of the territory outcome). Finally, we slightly refined the passing algorithm of the AI: If the human player passes then the AI uses the Monte Carlo scorer to estimate whether or not each piece is already determined in colour up to a probability of at least 80%. If so, the AI passes already.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Update 2&lt;/STRONG&gt;: We have noticed a couple of further bugs and easy improvements that can be made: The rule-based AI would start to fill in own eyes if the eye is either on the side of the board or in one of the four corners. This was not intended and has been fixe now. Also, the Monte Carlo sampling can be sped up significantly by only checking for move validity and "eye-ness" after a random move from the list of empty vertices has been determined. Checking a vertex for being empty is a lot faster than checking if a move is valid on that vertex.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2673521" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/apg/attachment/2673521.ashx" length="3503129" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/apg/archive/tags/Xbox+360/default.aspx">Xbox 360</category><category domain="http://blogs.technet.com/apg/archive/tags/Machine+Learning/default.aspx">Machine Learning</category><category domain="http://blogs.technet.com/apg/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.technet.com/apg/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.technet.com/apg/archive/tags/computer+Go/default.aspx">computer Go</category><category domain="http://blogs.technet.com/apg/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.technet.com/apg/archive/tags/Games/default.aspx">Games</category></item><item><title>Composing a video game in F# </title><link>http://blogs.technet.com/apg/archive/2007/10/25/composing-a-video-game-in-f.aspx</link><pubDate>Thu, 25 Oct 2007 22:33:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2251976</guid><dc:creator>apg</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.technet.com/apg/comments/2251976.aspx</comments><wfw:commentRss>http://blogs.technet.com/apg/commentrss.aspx?PostID=2251976</wfw:commentRss><description>&lt;P&gt;This week it was my opportunity to present a topic for&amp;nbsp;15 minutes&amp;nbsp;at the &lt;A class="" href="http://research.microsoft.com/mlp/" mce_href="http://research.microsoft.com/mlp/"&gt;MLP&lt;/A&gt; group's ritual Tuesday afternoon&amp;nbsp;tea and cakes session (yes - we are based in the UK). I thought it might be fun to knock up a little game&amp;nbsp;with&amp;nbsp;the Microsoft functional programming language &lt;A class="" href="http://research.microsoft.com/fsharp/" mce_href="http://research.microsoft.com/fsharp/"&gt;F#.&lt;/A&gt;&amp;nbsp;With only a few hours to spare at the weekend I decided to&amp;nbsp;go with&amp;nbsp;a retro style game and an old favourite of mine - the light cycle game sequence featured in the&amp;nbsp;80s&amp;nbsp;movie &lt;A class="" href="http://en.wikipedia.org/wiki/Tron_%28film%29" mce_href="http://en.wikipedia.org/wiki/Tron_%28film%29"&gt;Tron&lt;/A&gt;. So after about 4 hours I had a 2 player game in Windows Forms with optional support for&amp;nbsp;&lt;A class="" href="http://blogs.msdn.com/pstubbs/articles/531008.aspx" mce_href="http://blogs.msdn.com/pstubbs/articles/531008.aspx"&gt;XBox 360 controllers&amp;nbsp;with&amp;nbsp;managed DirectX&lt;/A&gt;&amp;nbsp;all in under 200 lines of F#; and come tea time I even had some players.&amp;nbsp;If you fancy having a go yourself&amp;nbsp;the code&amp;nbsp;can be viewed on&amp;nbsp;the &lt;A class="" href="http://www.strangelights.com/fsharp/wiki/default.aspx/FSharpWiki/LightCycles.html" mce_href="http://www.strangelights.com/fsharp/wiki/default.aspx/FSharpWiki/LightCycles.html"&gt;F# Wiki&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG title="Light cycles" style="WIDTH: 601px; HEIGHT: 480px" height=480 alt="Light cycles" src="http://blogs.technet.com/photos/apg/images/2252066/601x480.aspx" width=601 mce_src="http://blogs.technet.com/photos/apg/images/2252066/601x480.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Have fun,&lt;/P&gt;
&lt;P mce_keep="true"&gt;Phil&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2251976" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/apg/attachment/2251976.ashx" length="7735" type="text/plain" /><category domain="http://blogs.technet.com/apg/archive/tags/Xbox+360/default.aspx">Xbox 360</category><category domain="http://blogs.technet.com/apg/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://blogs.technet.com/apg/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.technet.com/apg/archive/tags/Games/default.aspx">Games</category></item></channel></rss>