<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Assistant to the Lounge-About</title>
	<atom:link href="http://www.chadweisshaar.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chadweisshaar.com/blog</link>
	<description>The fun begins when you quit your day job.</description>
	<lastBuildDate>Mon, 13 May 2013 23:05:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Zilch for the touch table</title>
		<link>http://www.chadweisshaar.com/blog/2013/05/13/zilch-for-the-touch-table/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/05/13/zilch-for-the-touch-table/#comments</comments>
		<pubDate>Mon, 13 May 2013 23:05:18 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[torque 2d]]></category>
		<category><![CDATA[Zilch]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=370</guid>
		<description><![CDATA[I have been working on a new game for the touch table. It is called Zilch (or Farkle, Greedy Dice or Dice 10000) and it is a &#8220;press your luck&#8221; style dice game that we often play at the end of a gaming session or while waiting between games. Players roll six dice and can [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working on a new game for the touch table. It is called <a href="http://en.wikipedia.org/wiki/Dice_10000">Zilch</a> (or Farkle, Greedy Dice or Dice 10000) and it is a &#8220;press your luck&#8221; style dice game that we often play at the end of a gaming session or while waiting between games. Players roll six dice and can score some or all of their dice. What scores depends on which rules you are playing by; but it at least includes 1s, 5s, and sets of 3+. The scored dice are removed and the player may continue and roll the remaining dice for more points or bank their existing score. If the new dice can&#8217;t score anything, the player loses their points and pass the dice. If all the dice score, the player may/must continue and roll all six again.</p>
<p>In my version of the game for the touch table, you can play more than one game at a time so that lots of people are rolling simultaneously. Here 10 players are playing 12 games:<a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Zilch-Game.jpg"><img class="aligncenter size-large wp-image-372" title="Zilch-Game" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Zilch-Game-1024x576.jpg" alt="" width="550" height="309" /></a></p>
<p><span id="more-370"></span></p>
<p>Since there are so many variations of Zilch, I support a fairly comprehensive set of options:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Zilch-Options.jpg"><img class="aligncenter size-full wp-image-371" title="Zilch-Options" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Zilch-Options.jpg" alt="" width="941" height="639" /></a></p>
<p>To avoid clutter on this options screen, I created a new up/down box. In the past I have used left/right or up/down arrow buttons placed next to the text box. This adds a lot of elements to the screen. For this game, the up/down elements are very small and placed within the text box. These are too small to be clickable, but let the user know that the value can be changed. When the user taps on that text field it expands to this element:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/UpDownElement.jpg"><img class="aligncenter size-full wp-image-373" title="UpDownElement" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/UpDownElement.jpg" alt="" width="214" height="148" /></a></p>
<p>The +/- icons are large enough to be touched accurately and when the &#8220;x&#8221; is pressed, the element shrinks back to its original look.</p>
<p>The other interesting thing about making this game was the large number of on-screen elements. When 10 players are playing 20 games, the center grid is made up of 231 elements and there are another 45 elements on each player&#8217;s area for a total of ~680 elements. Even if those were just static sprites the frame rate would drop to ~25 fps on our table. With most of those elements having to draw text, the frame rate dropped to ~10 fps. This frame rate made the dice rolling look very choppy.</p>
<p>To solve this performance problem, I needed to reduce the number of elements on the screen and stop drawing so much text. To reduce the number of elements, I created a new custom GUI element in C++ for the main scoreboard and another custom element for the player&#8217;s game board. To keep from drawing so much text, I created a bitmap font at the approximate size that I needed for this game and wrote code to manually draw each character where it needs to be. Both of these changes required code that was more complex than the original, slow, version. But the result is that the game can run at ~80 fps.</p>
<p>The game itself is fun. I am curious what it will be like with more players. But with two players it is more fun that plain zilch.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/05/13/zilch-for-the-touch-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surprise 50th Birthday party for Brenda</title>
		<link>http://www.chadweisshaar.com/blog/2013/05/05/surprise-50th-birthday-party-for-brenda/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/05/05/surprise-50th-birthday-party-for-brenda/#comments</comments>
		<pubDate>Mon, 06 May 2013 04:02:50 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Temple Raiding]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=358</guid>
		<description><![CDATA[We went to a surprise 50th birthday party for Brenda in Hutchinson Kansas this weekend. We brought the touch table along and had a good time seeing the family and playing touch games. Click through for more photos: Sandy had made birthday cupcakes which were quite good. She also had savory appetizers, fruit and marshmallow salad. The [...]]]></description>
			<content:encoded><![CDATA[<p>We went to a surprise 50th birthday party for Brenda in Hutchinson Kansas this weekend. We brought the touch table along and had a good time seeing the family and playing touch games.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-10.jpg"><img class="aligncenter size-large wp-image-360" title="Brenda's entrance" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-10-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p>Click through for more photos:<span id="more-358"></span><!--more--></p>
<p>Sandy had made birthday cupcakes which were quite good. She also had savory appetizers, fruit and marshmallow salad.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-02.jpg"><img class="aligncenter size-large wp-image-363" title="Birthday cupcakes" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-02-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p>The guests were asked to guess how many candies were in the jar. Here, Jenna is working on her guess. Danny ended up winning the jar which had 1760 pieces of candy.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-03.jpg"><img class="aligncenter size-large wp-image-364" title="Jenna studying the jar of candy" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-03-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p>There was quite a bit of drama getting everyone into the garage without Brenda noticing. To get Brenda to come over to Sandy&#8217;s garage for the surprise, they told her that Jenna and Danny had an announcement. This story was Jenna&#8217;s idea and she and Danny made sure to warn their parents that there really wasn&#8217;t any news on the baby front! In this picture, Sandy and Tracy are trying to coordinate Brenda&#8217;s arrival.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-06.jpg"><img class="aligncenter size-large wp-image-365" title="Tracy and Sandy coordinating Brenda's arrival" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-06-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p>All the deception seems to have worked. Here, Brenda is arriving at the party and she does seem to be surprised!</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-10.jpg"><img class="aligncenter size-large wp-image-360" title="Brenda's entrance" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-10-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p>Along with the candy jar, Sandy had planned a bubble-gum bubble blowing contest (I won) and a round of musical chairs. Musical chairs was a big hit and Ziya ended up winning:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Chairs.gif"><img class="aligncenter size-full wp-image-359" title="Chairs" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Chairs.gif" alt="" width="1024" height="680" /></a></p>
<p>After the party, we setup our touch table in Sandy&#8217;s living room and played games the rest of the day. Everyone seemed to enjoy themselves and we got to test out Bio Infiltrators with all four positions controlled with phones. Here we are playing &#8220;<a href="http://mesamundi.com/collections/software-games/products/temple-raiding">Temple Raiding</a>&#8221;</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-35.jpg"><img class="aligncenter size-large wp-image-362" title="Playing temple raiding on the touch table" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/05/Brenda50th-35-1024x680.jpg" alt="" width="550" height="365" /></a></p>
<p><a href="http://chadweisshaar.com/pictures/2013/Brenda50th.zip">Download</a> the rest of the pictures that I took of the party (92 MB).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/05/05/surprise-50th-birthday-party-for-brenda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Up the River</title>
		<link>http://www.chadweisshaar.com/blog/2013/04/21/up-the-river/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/04/21/up-the-river/#comments</comments>
		<pubDate>Mon, 22 Apr 2013 02:35:22 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[torque 2d]]></category>
		<category><![CDATA[UpTheRiver]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=353</guid>
		<description><![CDATA[I have been working on the multitouch games these last couple of weeks. I have started creating a new touch game based on the card games Oh Hell, Get Fred and Wizard. These games are trick taking games where you get points for correctly predicting how many tricks you are going to take. The main [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working on the multitouch games these last couple of weeks. I have started creating a new touch game based on the card games Oh Hell, Get Fred and Wizard. These games are trick taking games where you get points for correctly predicting how many tricks you are going to take. The main goal for this game project is to make an HTML based phone interface for displaying the player&#8217;s cards. The player will make their bid and select which card to play from their phone or tablet, while the main screen will show the cards played, bids made, running score, etc.</p>
<p>So far I have the game implemented with the player controls on-screen:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/UpTheRiver.jpg"><img class="aligncenter size-large wp-image-354" title="UpTheRiver" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/UpTheRiver-1024x580.jpg" alt="" width="550" height="311" /></a></p>
<p><span id="more-353"></span></p>
<p>Since there are lots of games with this basic rule set (see the Wikipedia entry for <a href="http://en.wikipedia.org/wiki/Oh_Hell">Oh Hell</a>) I have made the game very flexible. The intro/login screen is a bit overwhelming with all the options:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/UpTheRiverOptions.jpg"><img class="aligncenter size-large wp-image-355" title="UpTheRiverOptions" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/UpTheRiverOptions-1024x591.jpg" alt="" width="550" height="317" /></a></p>
<p>The next step is to start making the HTML interface and to do more testing of the different options. I&#8217;d also like to make an AI that can do more than play randomly.</p>
<p>I have also been re-visiting all the old games and updating them with our newest coding conventions and systems. As we have created more touch games, we have created a set of standards and utility functions that make coding faster and easier. Some of the first games that we made used very different systems for things like handling touch input, making a copy of the interface for each player, saving preferences, doing splash screens, etc.</p>
<p>It took almost a week to revisit all my old games and update them with our latest code. Hopefully that work will make it easier to upgrade those games and will allow us to apply more bug fixes to all the games at once.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/04/21/up-the-river/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yacht AI</title>
		<link>http://www.chadweisshaar.com/blog/2013/04/10/yacht-ai/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/04/10/yacht-ai/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 19:53:21 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[yacht]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=350</guid>
		<description><![CDATA[One of the lessons that we learned from PAX is that it is very nice to be able to switch between a human and AI player while playing the game. The only game that had this feature at PAX was Parcheesi. It made people more likely to start a game since they knew that they [...]]]></description>
			<content:encoded><![CDATA[<p>One of the lessons that we learned from <a title="PAX East" href="http://www.chadweisshaar.com/blog/2013/03/26/pax-east-2/">PAX</a> is that it is very nice to be able to switch between a human and AI player while playing the game. The only game that had this feature at PAX was Parcheesi. It made people more likely to start a game since they knew that they could be replaced by a computer player if they got bored or had to leave.</p>
<p>So one of our goals is to update the existing games so that you can switch back and forth between a human and computer player during the game instead of just at startup. Most of the games will be fairly easy to adapt to this system. We generally write the computer players in C++ while the rest of the game logic is in torquescript. This separation has meant that we generally pass everything the AI needs to make a decision each time the AI has to play.</p>
<p><a title="Yacht" href="http://www.chadweisshaar.com/blog/2012/02/09/yacht/">Yacht</a> didn&#8217;t have an AI at all, so to adapt it to the new system required me to write a computer player for it.</p>
<p><span id="more-350"></span></p>
<p>Yacht is a moderately complex game for a computer to play. The decision of which dice to keep depends not just on what you have rolled, but also on which categories are left to score. To play well, the AI needs to take into account the relative value and difficulty of each category and the chances of getting the bonus.</p>
<p>Fortunately, Yacht has been <a href="http://www.cs.loyola.edu/~jglenn/research/optimal_yahtzee.pdf">solved</a>(pdf). Unfortunately, it is still too computationally expensive to use this method while playing a game. I implemented a simpler system. It is fairly simple to find the &#8220;best&#8221; way to play each round if you ignore future rounds. This is similar to solving for one &#8220;widget&#8221; as described in the paper linked above. Then, instead of trying to solve for all possible futures, I simply use a set of rules to describe the value of each category. I can also tweak the constants used when applying these rules to make different two computer players play slightly differently.</p>
<p>The computer player plays a pretty good game and is fast enough to not be noticeable. If I wanted the AI to be more sophisticated, I would add more logic for determining the probability of getting the bonus based on the current scores. Then I would try to improve the value that I assign to each category by having AIs play against each other with different settings to see what works best.</p>
<p>Here is what the new GUI looks like:</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/YachtPlayerPanelsJPG.jpg"><img class="aligncenter size-large wp-image-351" title="YachtPlayerPanelsJPG" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/04/YachtPlayerPanelsJPG-1024x324.jpg" alt="" width="550" height="174" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/04/10/yacht-ai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trip to Boston</title>
		<link>http://www.chadweisshaar.com/blog/2013/03/26/trip-to-boston/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/03/26/trip-to-boston/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 02:43:57 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Vacation]]></category>
		<category><![CDATA[Arthur Ganson]]></category>
		<category><![CDATA[MIT]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=334</guid>
		<description><![CDATA[We went to Boston to demonstrate our touch table games at the Mesa Mundi booth at PAX. We allowed a couple extra days so that we could do some sight seeing around the city. The highlight of the trip was PAX. PAX would have been pretty cool even if we weren&#8217;t vendors, but we got a [...]]]></description>
			<content:encoded><![CDATA[<p>We went to Boston to demonstrate our touch table games at the Mesa Mundi booth at PAX. We allowed a couple extra days so that we could do some sight seeing around the city. The highlight of the trip was PAX. PAX would have been pretty cool even if we weren&#8217;t vendors, but we got a lot of joy and satisfaction from watching people enjoying our games.</p>
<p>You can see all the photos <a href="http://chadweisshaar.com/pictures/displayGallery.php?gallery=PAX%20in%20Boston">here</a> and I have a separate post for our <a title="PAX East" href="http://www.chadweisshaar.com/blog/2013/03/26/pax-east-2/">PAX experience</a>.</p>
<p><span id="more-334"></span></p>
<p>We started by touring the MIT campus and spent most of our time there in the MIT Museum. The exhibits include AI and robotics, slide rules, holography and the &#8220;Gestural Engineering&#8221; sculptures of Arthur Ganson. They had a hardware implementation of a LISP interpreter, a bunch of the robots that we have seen in videos, and some pretty impressive holograms. But the best part was the sculptures. These are Rube Goldberg style machines that are both mechanically interesting and artistic. They were all fun to watch and we spent a lot of time tracing how each one worked. My favorite was probably &#8220;Beholding the Big Bang&#8221; which is a motor attached to a series of 2x reduction gears. The first gear is spinning rapidly and the last gear is embedded in concrete. It would take 13 billion years for the final gear to make one revolution. <a href="http://www.youtube.com/watch?v=iFl8fmi8f4U">Video</a>.</p>
<div class="wp-caption aligncenter" style="width: 522px"><img title="Behold the Big Bang" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-035.JPG" alt="" width="512" height="340" /><p class="wp-caption-text">MIT Museum &#8211; Arthur Ganson &#8211; Behold the Big Bang</p></div>
<p>Another great sculpture was the &#8220;Wishbone&#8221;. In this sculpture, a wishbone appears to walk down a track dragging a large spinning machine behind it. When it gets to the end of the track it stops and waits while 1/3 of the track rotates 180 degrees so that the wishbone can walk back the other direction. <a href="http://www.youtube.com/watch?v=1t68NtsKYu4">Video</a>.</p>
<div class="wp-caption aligncenter" style="width: 650px"><img class=" " title="Machine with Chicken Wishbone" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-015.JPG" alt="" width="640" height="425" /><p class="wp-caption-text">MIT Museum &#8211; Arthur Ganson &#8211; Machine with Chicken Wishbone</p></div>
<p>Our other favorites were:</p>
<div class="wp-caption alignnone" style="width: 490px"><img title="Margot's Cat " src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-043.JPG" alt="" width="480" height="319" /><p class="wp-caption-text">MIT Museum &#8211; Arthur Ganson &#8211; Margot&#8217;s Cat</p></div>
<p><a href="http://www.youtube.com/watch?v=a6aicIcQJvc">Video</a>.</p>
<div class="wp-caption alignnone" style="width: 490px"><img title="Machine with ball chain" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-018.JPG" alt="" width="480" height="319" /><p class="wp-caption-text">MIT Museum &#8211; Arthur Ganson &#8211; Machine with ball chain</p></div>
<p><a href="http://www.youtube.com/watch?v=-iL96ucOpRw&amp;feature=endscreen">Video</a>.</p>
<div class="wp-caption alignnone" style="width: 490px"><img title="Machine with oil" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-029.JPG" alt="" width="480" height="319" /><p class="wp-caption-text">MIT Museum &#8211; Arthur Ganson &#8211; Machine with oil</p></div>
<p><a href="http://www.youtube.com/watch?v=__GhJl_UQg0">Video</a>.</p>
<p>We had planned to do the Freedom Walk, but it was really cold, so we went to the Museum of Science instead. We have been to quite a few museums of this style, so we had seen some of the exhibits before. This museum had a unique mathematics exhibit that was sponsored by Mathematica. It had a good probability display and a demonstration of minimal surfaces with soap films.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-083.JPG" alt="" width="480" height="319" /></p>
<p>The signature attraction at the museum is the &#8220;theater of electricity&#8221; where they have a three story Van de Graff generator, a Faraday cage made by Faraday and a Tesla coil that can be tuned to play music.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-096.JPG" alt="" width="640" height="425" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/03/26/trip-to-boston/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PAX East</title>
		<link>http://www.chadweisshaar.com/blog/2013/03/26/pax-east-2/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/03/26/pax-east-2/#comments</comments>
		<pubDate>Wed, 27 Mar 2013 02:41:39 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Fas Jack]]></category>
		<category><![CDATA[Got It]]></category>
		<category><![CDATA[Hansa Teutonica]]></category>
		<category><![CDATA[mesa-mundi]]></category>
		<category><![CDATA[Monolith]]></category>
		<category><![CDATA[pair soup]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=331</guid>
		<description><![CDATA[We went to PAX East to represent Machine Code Games at the Mesa Mundi booth. PAX East is held each year at the Boston convention center and draws some 90,000 people. Machine code games was assigned one of the touch tables at the booth and we ran demos of our software. The booth was very [...]]]></description>
			<content:encoded><![CDATA[<p>We went to PAX East to represent <a href="http://machinecodegames.com">Machine Code Games</a> at the <a href="http://mesamundi.com">Mesa Mundi</a> booth. PAX East is held each year at the Boston convention center and draws some 90,000 people.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-134.JPG" alt="" width="640" height="425" /></p>
<p>Machine code games was assigned one of the touch tables at the booth and we ran demos of our software. The booth was very busy and people were playing our games almost all the time. We were very happy with the reactions that we got from people. They seemed to really like the games and were always impressed with the touch hardware. You can see more pictures of the booth during PAX <a href="http://www.flickr.com/photos/mesamundi/sets/72157633089313953/">here</a>.</p>
<p><span id="more-331"></span></p>
<p>All the vendors are in 1/2 of the 516,000 square foot expo hall. Even with all that space, the floor was crowded with a large portion of the 90,000 PAX attendees. Another 1/4 of the hall is used by the board game vendors and game tables and the PC free play area. The final 1/4 is for lines and a food court.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/pic1596413_md.png"><img class="aligncenter size-full wp-image-332" title="pic1596413_md" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/pic1596413_md.png" alt="" width="257" height="136" /></a></p>
<p>We arrived Thursday afternoon to help with the setup of the booth and to get our software running. <span style="line-height: 1.7em;">This was the first time that we had seen Mesa Mundi&#8217;s new <a href="http://mesamundi.com/collections/multitouch-solutions/products/monolith-professional-multitouch-screen-series">Monolith</a> table. It is a very nice piece of hardware that combines a high end Samsung TV with a narrow IR touch sensor in a steel frame. It feels very solid and looks great. The picture is very good and the tempered glass means that touching the screen (even pressing firmly) doesn&#8217;t create any distortion in the picture.</span></p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/IMG_0981_resize_large.jpg"><img class="aligncenter size-full wp-image-339" title="IMG_0981_resize_large" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/IMG_0981_resize_large.jpg" alt="" width="480" height="320" /></a></p>
<p>Setup was fairly simple for the Mesa Mundi booth, but some of the larger vendors had large crews and rigging to assemble miniature buildings for their booths. We also saw the Intel people setting up the PC free-play area. This was a bank of 360 computers where attendees could play a wide variety of games.</p>
<p>When the expo hall opened on Friday, the line of people waiting to get in was huge. It was about 15 people wide and stretched back 500 feet. When the hall opened there was a mad rush of people to the big name games and vendors. They aren&#8217;t allowed to run so there was a lot of fast walking. During this rush to beat the lines, our booth was all but ignored. But it wasn&#8217;t long before the hall was full of people, and for the rest of the day the booth always had about 15 people checking out the tables.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-139.JPG" alt="" width="640" height="425" /></p>
<p><span style="line-height: 1.7em;">We attracted people to our table with &#8220;</span><a style="line-height: 1.7em;" href="http://www.youtube.com/watch?v=OB62TR-WRd8">Pair Soup</a><span style="line-height: 1.7em;">&#8220;. It is a quick and easy cooperative game that made it less intimidating for people to come over and play. If they liked the game and seemed interested in seeing more, we would play &#8220;</span><a style="line-height: 1.7em;" href="http://www.youtube.com/watch?v=dfqb5zSh7SE">Fas Jack</a><span style="line-height: 1.7em;">&#8221; or &#8220;</span><a style="line-height: 1.7em;" href="http://www.youtube.com/watch?v=Ma9k3zljw6U">Got It</a><span style="line-height: 1.7em;">&#8220;. These games are competitive, but still pretty easy to learn. For most people, this was enough. They were ready to move on or to hear about the hardware itself. But some people wanted to keep playing. Over the course of the weekend we played all the games that were for sale (except </span><a style="line-height: 1.7em;" href="http://www.youtube.com/watch?v=wlOW5ogHz5U">Hansa Teutonica</a><span style="line-height: 1.7em;">) many times. We even played a bunch of our incomplete games.</span></p>
<p style="text-align: center;"><img class="aligncenter" src="http://chadweisshaar.com/pictures/2013/Boston/800x600/PAXBoston-141.JPG" alt="" width="640" height="425" /></p>
<p>A lot of people were pleasantly surprised that the tables were for sale <em>now</em>, that they were running on windows PCs, and that most TVs can be converted to a multi touch table. I think that some people&#8217;s initial impression was that the table just ran MCG&#8217;s games. There was a lot of interest in the tables for both business and personal use. Some of the best reactions we saw were from people who had played our games for a while and said &#8220;I&#8217;d love to be able to run my D&amp;D games on one of these.&#8221; When we pointed them to the next screen, which was running <a href="http://d20pro.com/">d20pro</a>, they were so excited!</p>
<p>We were really happy to see how much people enjoyed and liked our games. We even gave an interview and signed autographs for someone collecting autographs from game developers. Several people commented about how great it was to be able to sit around a table and play games and a couple people said that it was the coolest thing at PAX. Considering that we were sharing the expo hall with huge game companies featuring their multi-million dollar titles, it was nice to see people interested in such a low budget production.</p>
<p>There were a couple of disappointments: <span style="line-height: 1.7em;">We had hoped to demonstrate our system for transferring game controls to a phone, but we couldn&#8217;t get a WiFi network setup. We brought a wireless router along, but we couldn&#8217;t get a good connection even though we were just feet from it. I had also hoped that there would be more interest from board game players. I had expected some people to have heard of &#8220;Hansa Teutonica&#8221; and want to see the computer version, but that didn&#8217;t happen.</span></p>
<p>Overall it was a very good experience. We came back with a lot of ideas for improving our existing games and making new ones. We made contact with some interesting people and learned a lot about the state of the game industry.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/03/26/pax-east-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simultaneous Pickomino</title>
		<link>http://www.chadweisshaar.com/blog/2013/03/15/simultaneous-pickomino/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/03/15/simultaneous-pickomino/#comments</comments>
		<pubDate>Sat, 16 Mar 2013 02:15:52 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[multitouch]]></category>
		<category><![CDATA[Pickomino]]></category>
		<category><![CDATA[torque 2d]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=323</guid>
		<description><![CDATA[After completing the AI for Pickomino I wanted to play against it and watch it in action. So I decided to create a version of the game for our touch table. I wont be trying to sell this game since I don&#8217;t have the rights from the creator of the board game. So it will [...]]]></description>
			<content:encoded><![CDATA[<p>After completing the <a title="Pickomino AI" href="http://www.chadweisshaar.com/blog/2013/03/15/pickomino-ai/">AI</a> for Pickomino I wanted to play against it and watch it in action. So I decided to create a version of the game for our touch table. I wont be trying to sell this game since I don&#8217;t have the rights from the creator of the board game. So it will just be for our own use.</p>
<p>The game came together pretty quickly. I spent a day or so learning Photoshop and creating graphics. Another couple of days building the game logic and integrating the C++ AI. Another day adding &#8220;simultaneous&#8221; mode. And a final day to add animations and work out bugs. Here is a screenshot of the final product.</p>
<p><a href="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/Pickomino.jpg"><img class="aligncenter size-full wp-image-324" title="Pickomino" src="http://www.chadweisshaar.com/blog/wp-content/uploads/2013/03/Pickomino.jpg" alt="" width="576" height="333" /></a></p>
<p><span id="more-323"></span></p>
<p>The board game supports 2-7 players, but my version allows 1-8 to play. In the screenshot above, there are five players in &#8220;simultaneous&#8221; mode. Four players are done and ready to take another tile while the player in the lower left is selecting a die to keep.</p>
<p>My main complaint with the physical game of Pickomino is that it can last too long as players swap tiles with each other. You also spend a lot of time watching other people roll. This is especially true in a game with a lot of players. As BoardGameGeek says, the game is really best with three or four players. &#8220;Simultaneous&#8221; mode is my attempt to fix these two problems.</p>
<p>Normally, each player takes a turn with the dice, rolling till they take a tile or scratch. In &#8220;Simultaneous&#8221; mode all the players roll dice at the same time. Once everyone has decided to stop and take a tile, or scratched, all the tiles are distributed at once. If multiple players earn/steal the same tile, they each get a copy of that tile. If a player steals a tile and multiple people are showing that tile, all the players showing the tile lose it and the stealing player gets a single copy. If a player scratches the tile is returned to the table if there isn&#8217;t another copy of that tile owned by a player, otherwise the tile is destroyed. The idea is to create copies as needed to make sure that everyone gets what they earned, but to destroy the extra copies whenever possible.</p>
<p>Simultaneous mode would be possible without the computer, but the computer automates all the tile copying and ensures that all the players are following the rules. Simultaneous mode plays much faster and there is no downtime waiting for other players to roll.</p>
<p>Now that I have had a chance to watch the AI, I&#8217;d say that the main difference between the AI and the humans I normally play against, is that the AI is more aggressive. The AI also does well at the end of the game when there are only a few tiles available. It can plan which dice to keep to maximize the odds that it will be able to take one of those specific numbers. That said, there is enough luck involved that I don&#8217;t feel overwhelmed by the AI.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/03/15/simultaneous-pickomino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pickomino AI</title>
		<link>http://www.chadweisshaar.com/blog/2013/03/15/pickomino-ai/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/03/15/pickomino-ai/#comments</comments>
		<pubDate>Fri, 15 Mar 2013 22:15:34 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=315</guid>
		<description><![CDATA[Pickomino is a dice game where each player takes turn rolling eight, six sided, dice. The player tries to build up a high enough total of dice to capture one of the available tiles from the board or from another player. To build up a die total, the player picks a set of dice all [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.boardgamegeek.com/boardgame/15818/pickomino">Pickomino</a> is a dice game where each player takes turn rolling eight, six sided, dice. The player tries to build up a high enough total of dice to capture one of the available tiles from the board or from another player. To build up a die total, the player picks a set of dice all showing the same number to save. The player then re-rolls the remaining dice. Each number can only be saved once. If you can&#8217;t pick a new number after a roll, or don&#8217;t build up enough points to claim a tile, you scratch and have to return a tile. Full rules are <a href="http://www.riograndegames.com/uploads/Game/Game_153_gameRules.pdf">here</a>(PDF).</p>
<p>After playing the game a few times, I began to wonder if this game could be &#8220;solved&#8221; by a computer. Would it be possible to consider all the possible sets to save and all the possible rolls that would result for all the rounds in one player&#8217;s turn to determine their best choice.</p>
<p><span id="more-315"></span></p>
<p>I started by writing a fairly standard recursive function that looks like this:</p>
<pre>choseBestFace()
{
  for each distinct number in the roll
  {
    if we can take a tile with this set
      score = value of the tile
    else
      score = -value of our last tile
    score = max ( score, valueOfRoll(remaining dice after taking this face) )
  }
  return the face with the highest score
}

valueOfRoll(remainingDice)
{
  if ( no remaining dice )
    return score of choseBestFace()
  else
  {
    value = 0;
    for each number of the first remaining die (1-6)
      value = value + valueOfRoll(firstDie, rest of remaining dice)/6
  }
  return value
}</pre>
<p>Imagine that we only roll 2 dice and they come up different. Now there are only two options and each option needs to calculate all the possible rolls of 6 dice. There will be a total of 14 calls to these functions. If we have 3 dice that come up different, there would be three options and each would need to try 36 combinations. But lots of those combinations will have a third round of rolling with six more options. It ends up being 1179 function calls. Starting with four dice is 487,636 calls. While this seems like a huge amount, computers are really fast and the result comes back immediately  Five dice is 958,460,025. On my machine, this takes several minutes. The problem space is growing exponentially and there is no way this method will be able to reach six dice, let alone eight.</p>
<p>While debugging and stepping through this code, I was struck by how many times the same problem was being solved. There are lots of ways to get the same set of dice. So, instead of re-calculating the solution each time, the program calculates the result once and then saves it. The input to the valueOfRoll function is the combination of: the number of dice left to roll, the number of each die face that we have saved and the number of each die face in this roll. There ends up being 8*6^8*6^8 = 816 million different ways to call this function (for eight dice). Most of those combinations can&#8217;t really happen. After putting in this change, I was shocked by how well it worked. For the same five die problem that ended up calling the functions almost 1 billion times, I ended up with only 4270 unique combinations. It seemed unbelievable till I stepped through the code and realized that one  early cache hit can save thousands of later recursive calls.</p>
<p>With this improvement in, I kept increasing the number of dice to see if I could do all eight. Six dice was 14,574 combinations. Seven dice is 38717 and eight is 93454. On my machine it takes about a fifth of a second to determine the best play.</p>
<p>There are some subtleties of the game that this AI is not considering. It doesn&#8217;t consider stealing a tile from another player to be any better or worse than taking a new one from the table. It also doesn&#8217;t try to make any calculation about whether a play would cause the game to end sooner or later. Both of these could be added by changing the scoring function, but would involve my judgement about what is best and would not change the overall speed much.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/03/15/pickomino-ai/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PAX East</title>
		<link>http://www.chadweisshaar.com/blog/2013/03/05/pax-east/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/03/05/pax-east/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 01:09:22 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Multitouch Table]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Vacation]]></category>
		<category><![CDATA[D20pro]]></category>
		<category><![CDATA[mesa-mundi]]></category>
		<category><![CDATA[PAX]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=312</guid>
		<description><![CDATA[We are headed to PAX East in Boston to join Mesa Mundi&#8217;s booth and demonstrate some of MCG&#8217;s touch table software. Mesa Mundi is going to have several touch tables setup and our software will be running on one of them. We are planning to show off the new mini-games, which are on sale now [...]]]></description>
			<content:encoded><![CDATA[<p>We are headed to PAX East in Boston to join <a href="http://mesamundi.com/">Mesa Mundi&#8217;s</a> booth and demonstrate some of MCG&#8217;s touch table software. Mesa Mundi is going to have several touch tables setup and our software will be running on one of them.</p>
<p>We are planning to show off the new mini-games, which are on sale now at Mesa Mundi&#8217;s site, along with Hansa Teutonica and a new game in development where players can control the action with a web browser on their phone.</p>
<p><a href="http://www.d20pro.com/">D20Pro</a> will also be on hand at Mesa Mundi&#8217;s booth to show off their role playing system. It should be an exciting weekend where we can see how people react to the touch tables and our games. Mesa Mundi has a short write up about PAX <a href="http://mesamundi.com/blogs/news/7404896-pax-east-here-we-come">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/03/05/pax-east/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fair Dice Roller</title>
		<link>http://www.chadweisshaar.com/blog/2013/02/26/fair-dice-roller/</link>
		<comments>http://www.chadweisshaar.com/blog/2013/02/26/fair-dice-roller/#comments</comments>
		<pubDate>Wed, 27 Feb 2013 03:27:15 +0000</pubDate>
		<dc:creator>Chad Weisshaar</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[settlers of catan]]></category>

		<guid isPermaLink="false">http://www.chadweisshaar.com/blog/?p=308</guid>
		<description><![CDATA[I have finished an HTML/javascript version of the fair dice roller. The fair die roller makes a die or dice less random by tweaking the probability of each roll so that the rolls come up in the correct ratios sooner. Check it out here. Or look here for a lot more detail about what this [...]]]></description>
			<content:encoded><![CDATA[<p>I have finished an HTML/javascript version of the fair dice roller. The fair die roller makes a die or dice less random by tweaking the probability of each roll so that the rolls come up in the correct ratios sooner. Check it out <a href="http://chadweisshaar.com/weissoft/fairdice/index.html">here</a>. Or look <a href="http://chadweisshaar.com/weissoft/fairdice/math.html">here</a> for a lot more detail about what this app does.</p>
<p><span id="more-308"></span></p>
<p>One of the first board games that we played over and over was Settlers of Catan. We got a lot of enjoyment out of that game, but the more we played it, the more frustrated we got with how random the game could be. We almost always played with the random board, but the initial city spots could vary so much in quality that picking first could be enough to win the game. But even more frustrating than the randomness of the board was the randomness of the dice. It seemed like some games we would roll three sixes for every eight. In others we would have long streaks of fours or tens that could win the game for the player on those tiles.</p>
<p>To solve this problem with a game that we otherwise still enjoyed, we created a fair board builder and fair die roller. The board builder would try to make a board that was balanced for all the players and the fair die roller would try to even out the distribution of rolls within a single game. The first version of this program was in Java and Java Web Start. As Java and especially Java Web Start fell out of favor and I learned C#, I re-wrote the application in C#. The C# app was great, but could be a pain to install at friends houses before a game. At my last job I learned Flash, so I re-wrote the fair die roller and board builder in Flash. Now that Flash is falling out of favor, I have re-written the fair die roller again in javascript.</p>
<p>Like the other re-writes before it, this version has been a learning experience. I have programmed in javascript before, but for this application I decided to learn and use jQuery. jQuery has some great features and there is a lot to like, but I would have to say that this version of the fair die roller has taken me longer to build than any of the others except the original in Java. I am not an expert at HTML or CSS and I spent a lot of time fighting with the layout of the page.</p>
<p>You can check out my latest fair die roller <a href="http://chadweisshaar.com/weissoft/fairdice/index.html">here</a>. You can also compare it to the previous versions in <a href="http://http://chadweisshaar.com/weissoft/settlershelper/SettlersHelper.html">flash</a>, <a href="http://http://chadweisshaar.com/weissoft/GameHelperSetup_0_6.exe">c#</a>, and <a href="http://chadweisshaar.com/weissoft/javasettlers/Settlers.html">java</a>.</p>
<p>I&#8217;d like to eventually add the fair board builder. But for that I will probably try to learn the HTML5 canvas. We also don&#8217;t play Settlers as much as we used to, so that isn&#8217;t a very high priority right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chadweisshaar.com/blog/2013/02/26/fair-dice-roller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
