<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://wotudo.net/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>Search results matching tags 'xna' and 'Mobile'</title><link>http://wotudo.net/search/SearchResults.aspx?o=DateDescending&amp;tag=xna,Mobile&amp;orTags=0</link><description>Search results matching tags 'xna' and 'Mobile'</description><dc:language>en-US</dc:language><generator>CommunityServer 2007 (Build: 20423.869)</generator><item><title>XNA: Gaming across many platforms and the cloud</title><link>http://wotudo.net/blogs/wotudo/archive/2010/03/25/xna-gaming-across-many-platforms-and-the-cloud.aspx</link><pubDate>Thu, 25 Mar 2010 11:10:50 GMT</pubDate><guid isPermaLink="false">2f2f3f54-a0d5-494d-ad23-22a6d9c85854:955</guid><dc:creator>paulfo</dc:creator><description>&lt;p&gt;I’ve been working with UK XNA MVP &lt;a href="http://xna-uk.net/blogs/randomchaos/archive/2010/03/12/stowaways-a-zuneray-game.aspx"&gt;Charles Humphrey&lt;/a&gt; on project ZuneRay. ZuneRay is a raycasting engine built by Charles’ for the Zune HD using XNA 3.1. With Windows Phone 7 Series in the pipeline we used the Zune HD as a target test platform with the intention of porting it to WP7S once the tools became available. ZuneRay uses a classic approach to delivering a 3D experience without requiring 3D support – at the time we didn’t know if 3D support would be in the Windows Phone 7 Series XNA version – so it was a pleasant surprise to find 3D support in there, and very satisfying to see ZuneRay port to XNA 4.0 and the WP7S really easily.&lt;/p&gt;  &lt;p&gt;Well the tools CTP is now available, so Charles and I have been working away on ZuneRay with excellent results. ZuneRay is an XNA 3.1 with Zune HD extensions project. You get a Windows version ‘for free’, and an Xbox version just required the additional of Gamepad support. Moving ZuneRay to WP7S required upgrading the project to XNA 4.0. There is no ‘wizard’ to do this, the best approach is to create a new XNA 4.0 game and then pull in all your existing code and content. There are some platform specific bits in the generated Game1.CS file that you want to ensure are retained – but coming from the Zune platform originally these already existed.&lt;/p&gt;  &lt;p&gt;There are breaking changes between Xna 3.1 and Xna 4.0 – the main ones for ZuneRay being around storage API, change of screen resolution and the changes in SpriteBatch parameters – but none of these took long to sort out. Shawn Hargreaves pointed out that WP7S running at 800x480 has 25% more pixels to draw than the original Xbox – but less CPU/GPU power to do it. The WP7S has a dedicated hardware scaler which means you can render your game at lower resolutions – like 600x360 56% of pixel data - and have the device scale it to fill the screen. While developing in the emulator this scaling functionality isn’t available, but then as the emulator is just that – not a simulator – your game takes advantage of the underlying PC hardware performance.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wotudo.net/blogs/wotudo/ZuneRay1_0C612A9C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="ZuneRay1" border="0" alt="ZuneRay1" src="http://wotudo.net/blogs/wotudo/ZuneRay1_thumb_1CF9258A.png" width="644" height="329" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;Project ZuneRay&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now I have the game running across Windows, Xbox, Windows Phone 7 Series and Zune HD – I wanted to integrate the cloud. My idea for demonstration purposes was really simple. Capture a camera image, publish it to the cloud and then have ZuneRay games acquire the image and use it in game as a wall texture.&lt;/p&gt;  &lt;p&gt;Storing my image in the cloud is very simple – the image copy to Windows Azure Blob storage just uses the &lt;a href="http://wotudo.net/blogs/wotudo/archive/2010/02/16/copying-files-to-windows-azure-blob-storage.aspx"&gt;code I posted&lt;/a&gt; a while back. To capture the web cam I used a &lt;a href="http://bit.ly/bO3jSI"&gt;WPF application&lt;/a&gt; by Geert van Horrik – all I had to add was the resizing of the image to fit with the game requirements before sending it to Azure blob storage.&lt;/p&gt;  &lt;p&gt;To retrieve the image from the blob store proved to be the tricky part. Although XNA is hugely consistent across the platforms the networking support varies enormously. The Zune has no programmatic network support. The Xbox only has networking to the Xbox&amp;#160; Live services. Windows Phone 7 Series has a good sprinkling of support in various areas and Windows of course has the lot.&lt;/p&gt;  &lt;p&gt;Looking at Windows Phone I was able to use the following code to simple make a webrequest using a known URL to the current image file.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7e6ca61e-f977-4d8a-9155-f62392523f76" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:500px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;" /&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; GetTextureFromAzure()&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;HttpWebRequest&lt;/span&gt; request;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;HttpWebResponse&lt;/span&gt; response = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request = (&lt;span style="color:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color:#2b91af;"&gt;WebRequest&lt;/span&gt;.Create(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;@&amp;quot;https://xxxx.blob.core.windows.net/publicfiles/dynamic.png&amp;quot;&lt;/span&gt;));&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response = (&lt;span style="color:#2b91af;"&gt;HttpWebResponse&lt;/span&gt;)request.BeginGetResponse(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;AsyncCallback&lt;/span&gt;(RespCallback), request);&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; { }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt;  &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The callback function then uses Texture2D.FromStream to create a new texture from the response stream.&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a0c518d1-d501-4192-8fd6-b749f1edbf73" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;max-height:500px;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2.5em;padding:0 0 0 5px;white-space:nowrap;" /&gt; &lt;li&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RespCallback(&lt;span style="color:#2b91af;"&gt;IAsyncResult&lt;/span&gt; asynchronousResult)&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;HttpWebRequest&lt;/span&gt; myRequestState = (&lt;span style="color:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;)asynchronousResult.AsyncState;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;HttpWebResponse&lt;/span&gt; response = (&lt;span style="color:#2b91af;"&gt;HttpWebResponse&lt;/span&gt;)myRequestState.EndGetResponse(asynchronousResult);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;Stream&lt;/span&gt; s = response.GetResponseStream();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;map.Textures[5] = &lt;span style="color:#2b91af;"&gt;Texture2D&lt;/span&gt;.FromStream(GraphicsDevice, s);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s.Close();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response.Close();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt; (System.Net.&lt;span style="color:#2b91af;"&gt;WebException&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//if (response != null)&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#008000;"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response.Close();&lt;/span&gt;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background:#f3f3f3;"&gt;}&lt;/li&gt;  &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;The maps.texture array contains the textures presented as walls and objects in the game. By directly replacing the texture[5] only certain walls in the game levels present the web cam image, as can be seen below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wotudo.net/blogs/wotudo/ZuneRay2_351C8FE5.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="ZuneRay2" border="0" alt="ZuneRay2" src="http://wotudo.net/blogs/wotudo/ZuneRay2_thumb_08FF92F4.png" width="644" height="330" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I use a count down timer to poll for a new image every minute for the purposes of this demo. I want to upgrade this poll mechanism with a push notification using the new Push Notification service for WP7S. In this way, the web cam application will be able to publish an image and then notify WP7S phones running the game of a new game texture. The games can then go and retrieve the image based on user preference for data service usage.&lt;/p&gt;  &lt;p&gt;Charles and I intend to share more of Project ZuneRay’s code shortly.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;a href="http://digg.com/submit?url=http%3a%2f%2fwotudo.net%2fblogs%2fwotudo%2farchive%2f2010%2f03%2f25%2fxna-gaming-across-many-platforms-and-the-cloud.aspx&amp;amp;title=XNA%3a+Gaming+across+many+platforms+and+the+cloud"&gt;&lt;img src="http://digg.com/img/badges/100x20-digg-button.png" width="100" height="20" alt="Digg This" title="Digg This" border="0" style="border:0;" /&gt;&lt;/a&gt;&lt;/div&gt;</description></item><item><title>TechCrunch: In Mobile, Fragmentation is forever. Deal with it</title><link>http://wotudo.net/blogs/wotudo/archive/2010/03/05/techcrunch-in-mobile-fragmentation-is-forever-deal-with-it.aspx</link><pubDate>Fri, 05 Mar 2010 12:46:05 GMT</pubDate><guid isPermaLink="false">2f2f3f54-a0d5-494d-ad23-22a6d9c85854:884</guid><dc:creator>paulfo</dc:creator><description>&lt;p&gt;Following on from my rant on the &lt;a href="http://wotudo.net/blogs/wotudo/archive/2010/03/04/are-widgets-worth-it.aspx"&gt;widgets&lt;/a&gt;, Richard Wong – venture capitalist and guest TechCrunch blogger – makes the point with more finesse, although we disagree in technology beliefs.&lt;/p&gt;  &lt;p&gt;In his post ‘&lt;a href="http://tcrn.ch/bkjXvZ"&gt;In Mobile, Fragmentation is Forever. Deal With It’&lt;/a&gt;, Wong lays out the issues of the mobile marketplace and why we aren’t going to see it simplified with ‘common standards’. He also spells out how to approach a mobile application project in a pragmatic manner. Here are the first two items from his list of five things you do to overcome this complexity:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Don’t wait for the Magic Bullet&lt;/strong&gt;.&amp;#160; The first step towards progress is acceptance of reality. I actually do believe that Webkit browsers, HTML5, continued progression of J2ME, Android and iPhone are all positive trends that will help make things easier for many developers, but none of them will be a single-threaded answer. There are too many markets where these solutions are insufficient. For example, India, one of the world’s fastest growing mobile markets is still dominated by Nokia, which has &lt;a href="http://metrics.admob.com/2010/03/q4-2009-southeast-asia-report/"&gt;70%+ market shar&lt;img src="http://i.ixnp.com/images/v6.21/t.gif" alt="" /&gt;&lt;/a&gt;e. I don’t think developing only for iPhones will be enough to dominate the India market given their &amp;lt; 5% share. &lt;/li&gt;      &lt;li&gt;&lt;strong&gt;Bound The Problem &amp;amp; Get Down the User Learning Curve&lt;/strong&gt;.&amp;#160; So, the critical next step is to limit the boundaries of the problem so you can actually solve it. Are you pursuing an enterprise app or a consumer app? Does your success require broad scale viral use, or is it perfectly good to have 2000 profitable users? Many developers focused on the consumer market are going to find that a blend of mobile web, and prototyping on iPhone-only or Android-only is the right first step and only then expand to broader platforms. Blackberry and WindowsMobile are similarly important in business applications. Rather than the costly efforts of chasing 4-5 platforms at once, focus in on the first one or two, prove your model, then expanding will help to bound the complexity.&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Playing to Wong’s article we have the recent announcement of Windows Phone 7 Series, and more specifically last night the announcement of some of the key application platforms within Windows Phone 7 Series namely Silverlight and XNA.&lt;/p&gt;  &lt;p&gt;I disagree outright with Wong’s belief that Webklits, HTML and J2ME are going to deliver the user experience people want on their devices. The same as with Widgets, the depth of capability just isn’t there, they are ‘lowest common denominator’ technologies. Consumers flock to the best experiences e.g. the iPhone effect. Those that don’t want to or simply can’t afford to, don’t purchase good application platform devices they buy phones, and I believe are not likely to purchase applications in any great volume. Unlike those that do purchase good application platform devices -&amp;#160; who, having got this technological wonder, want to push it and see what more it can do. There is simply a different level of expectation between these two types of device purchaser; an expectation that is fed by excellent user experience.&lt;/p&gt;  &lt;p&gt;Now I have always been in the client application camp. I don’t see network services as reliable, I don’t see web only technologies as being capable of delivering the user experience a user wants. But I know I can mitigate all of these things by using a well designed client application. This is why I subscribe to the &lt;a href="http://www.microsoft.com/softwareplusservices/"&gt;Software + Services&lt;/a&gt; strategy at Microsoft. The ability to have a smart client application on the device and external services in the network and/or in the cloud gives me all the capabilities I need to build the best user experience and deliver the highest levels functionality.&lt;/p&gt;  &lt;p&gt;That’s why you need to bite the bullet and go with a single platform that can best deliver on your application ideas. This is why Windows Phone 7 Series, using the key Microsoft assets of Silverlight and XNA coupled with the ability to consume anybodies cloud services, is going to change the game in mobile.&lt;/p&gt;  &lt;p&gt;With its emphasis on the user experience, and an app + cloud technology platform full of capability, Windows Phone 7 Series applications are going to deliver the best for users.&lt;/p&gt;  &lt;p&gt;Take the time before Mix to explore the key technologies of Silverlight and XNA and imagine utilising these on a mobile platform built to deliver them. Webkit solutions by comparison are going to suck.&lt;/p&gt;  &lt;p&gt;Once again its ‘All change!’ in the land of mobile.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:right;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;a href="http://digg.com/submit?url=http%3a%2f%2fwotudo.net%2fblogs%2fwotudo%2farchive%2f2010%2f03%2f05%2ftechcrunch-in-mobile-fragmentation-is-forever-deal-with-it.aspx&amp;amp;title=TechCrunch%3a+In+Mobile%2c+Fragmentation+is+forever.+Deal+with+it"&gt;&lt;img src="http://digg.com/img/badges/100x20-digg-button.png" width="100" height="20" alt="Digg This" title="Digg This" border="0" style="border:0;" /&gt;&lt;/a&gt;&lt;/div&gt;</description></item></channel></rss>