<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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 Right Moves</title><link>http://blogs.msdn.com/ben_anderson/default.aspx</link><description>Tips and tricks for using the Popfly Game Creator</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Popfly Parting Present</title><link>http://blogs.msdn.com/ben_anderson/archive/2009/08/26/popfly-parting-present.aspx</link><pubDate>Thu, 27 Aug 2009 00:30:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9885950</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/9885950.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=9885950</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/a&gt; closed its doors for good this Monday.&amp;#160; One of the questions we got quite a bit was whether we could release the source code in some form.&amp;#160; Unfortunately for most of Popfly, this wasn’t really possible – it was either tightly coupled with internal Microsoft web services, contained code from other products, had other IP encumbrances, or otherwise wouldn’t be useful except in an MS data center.&amp;#160; &lt;/p&gt;  &lt;p&gt;However, we were able to put together something for you – the Popfly Game Engine.&amp;#160; Now this is just the game engine – the part that plays the game data files.&amp;#160; It doesn’t include the creator (although it does contain enough reference information on the data files that someone could create a new one), nor any server-side support code – I took out the portions of the code that communicated with popfly.com for high scores, badges and the like.&amp;#160; However, I do think it’s an interesting bit of code showing how to create a simple game engine in C# on Silverlight.&amp;#160; This should also provide an avenue for those of you who would like to take the leap from the world of the GUI game builder, look under the covers to see how things work and actually get your hands dirty with some real code!&amp;#160; &lt;/p&gt;  &lt;p&gt;When you check out the code, there’s a few steps described in the readme on obtaining some dependencies and game data files.&amp;#160; If you used the &lt;a href="http://blogs.msdn.com/coding4fun/archive/2009/07/22/9845135.aspx"&gt;Popfly Game Downloader&lt;/a&gt; we released a few weeks back to grab your games, there’s also instructions on how to crack them open and grab the data files.&lt;/p&gt;  &lt;p&gt;With that, check out the Ms-PL licensed code at &lt;a href="http://popflygameengine.codeplex.com" target="_blank"&gt;Codeplex&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PopflyPartingPresent_CBFF/codeplex_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="codeplex" border="0" alt="codeplex" src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PopflyPartingPresent_CBFF/codeplex_thumb.jpg" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9885950" width="1" height="1"&gt;</description></item><item><title>Bye Bye Popfly</title><link>http://blogs.msdn.com/ben_anderson/archive/2009/07/22/bye-bye-popfly.aspx</link><pubDate>Thu, 23 Jul 2009 01:06:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9845347</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/9845347.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=9845347</wfw:commentRss><description>&lt;p&gt;By now you’ve probably heard the sad news that come August, &lt;a href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/a&gt; will be shutting down.&amp;#160; You can read more about the details &lt;a href="http://popflyteam.spaces.live.com/blog/cns!51018025071FD37F!336.entry"&gt;here&lt;/a&gt;.&amp;#160; While we’ll miss the site and working on it, the team has moved on to new and exciting projects which you’ll hear more about (here and elsewhere) as we get ready to talk about them.&amp;#160; &lt;/p&gt;  &lt;p&gt;In the meantime, one of the big pieces of feedback we got from users was a strong desire to be able to save the projects they made on the site.&amp;#160; Unfortunately, that’s not really possible for a lot of project types as they depend heavily on services hosted on popfly.com.&amp;#160; However, &lt;a href="http://blogs.msdn.com/Adam_Nathan/"&gt;Adam&lt;/a&gt; and I spent some time thinking about what could be done for game projects and &lt;a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=PopflyGameDownloader&amp;amp;DownloadId=6631"&gt;this&lt;/a&gt; is what we came up with:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/ByeByePopfly_D47E/image_22%5B1%5D_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image_22[1]" border="0" alt="image_22[1]" src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/ByeByePopfly_D47E/image_22%5B1%5D_thumb.png" width="504" height="334" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Basically, this app connects to popfly.com, downloads your game and creates a Silverlight XAP you can use to run your game locally on your own machine.&amp;#160; There’s also an option to download all your shared games at once.&amp;#160; Details can be found &lt;a href="http://blogs.msdn.com/coding4fun/archive/2009/07/22/9845135.aspx"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’m very glad we were able to get this out so people can save their hard work, not least of which because I have some games I want to save!&amp;#160; Please keep in mind this is something Adam and I did in our spare time (lots of Adam’s spare time – he created the nifty downloader app while I simply prepared a special version of the game engine that doesn’t require access to popfly.com).&amp;#160; There are undoubtedly a number of issues and it may or may not work on every game and on every computer.&amp;#160; Hopefully, in most cases it should “just work.”&amp;#160; &lt;/p&gt;  &lt;p&gt;Happy Downloading!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9845347" width="1" height="1"&gt;</description></item><item><title>Circular References no More</title><link>http://blogs.msdn.com/ben_anderson/archive/2009/02/25/circular-references-no-more.aspx</link><pubDate>Thu, 26 Feb 2009 03:01:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9444844</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/9444844.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=9444844</wfw:commentRss><description>&lt;p&gt;So the thing I’ve always found to be the biggest PITA about “web app” development is the classic DOM/JavaScript circular reference issue (I’m pretty sure this applies to both Firefox and IE and probably others).&amp;#160; The DOM is COM (or XPCOM) based and measures lifetime of objects by reference counting while JavaScript relies on a garbage collector.&amp;#160; The problem in the past has been they have no insight into each others’ memory management so when you have an event handler which has a reference to a DOM object, the DOM object holds on to a reference to the handler and the handler holds a reference to the DOM meaning the JavaScript garbage collector can’t clean up since it knows there’s an external reference to the handler and the DOM can’t clean up since it knows there’s a reference to it from JavaScript that the handler’s holding.&amp;#160; It can be pretty easy to end up in a situation like this when using closures as event handlers since closures keep a copy of all local variables from the function they are declared in.&amp;#160; You wind up in similar situations when interacting with other COM based add ons like Silverlight 1.0 from JavaScript.&amp;#160; &lt;/p&gt;  &lt;p&gt;When I was looking around for tooling to help identify these leaks (they’re not always easy to find, even through thorough code inspection and best practices like eliminating closures as event handlers), I came across this IE8 whitepaper:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=578" href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=578"&gt;http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&amp;amp;ReleaseId=578&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not sure if the fix includes only DOM object relate leaks or fixes COM references more generally.&amp;#160; Will try to find out and post an update if I find an answer.&lt;/p&gt;  &lt;p&gt;I’m actually surprised I haven’t heard about this before.&amp;#160; Memory leaks due to DOM/JavaScript interaction are one of the biggest headaches of anyone doing web “apps” like Popfly where the leakage really becomes noticeable as people interact with your pages extensively and for long periods of time.&amp;#160; I don’t think Firefox did anything about the issue in 3.0 (but they might have, I admit that since I didn’t even know about this in another MS product – IE8, I could very well have missed Firefox fixing the problem as well).&amp;#160; IE developer marketing folks – where are you?&amp;#160; This is awesome.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9444844" width="1" height="1"&gt;</description></item><item><title>Moving the Popfly Game Creator engine from Silverlight 1 to 2</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/12/05/moving-the-popfly-game-creator-engine-from-silverlight-1-to-2.aspx</link><pubDate>Sat, 06 Dec 2008 05:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9180923</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/9180923.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=9180923</wfw:commentRss><description>&lt;p&gt;In our most recent &lt;a href="http://www.popfly.com" target="_blank" mce_href="http://www.popfly.com"&gt;Popfly&lt;/a&gt; update, we shipped the project I’ve been working on for the last couple months (along with Patrick Wong, Tim Rice and help from the rest of the team), which is a fully backwards compatible game engine, completely rewritten from browser based JavaScript rendering using &lt;a href="http://silverlight.net" mce_href="http://silverlight.net"&gt;Silverlight&lt;/a&gt; 1 to a C# based engine using Silverlight 2.&amp;nbsp; As noted &lt;a href="http://popflyteam.spaces.live.com/blog/cns%2151018025071FD37F%21327.entry" target="_blank" mce_href="http://popflyteam.spaces.live.com/blog/cns!51018025071FD37F!327.entry"&gt;elsewhere&lt;/a&gt;, the new engine is a heck of a lot faster than the old (both due to switching to a compiled language from an interpreted one, and due to many efficiency improvements), but the most impressive thing about the switch in my mind is the fact that it’s as fully backwards compatible as any incremental change we’ve made since the original release.&amp;nbsp; Think about it – the engine’s written in C#, but all the custom code is still in JavaScript.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;That is largely thanks to Patrick’s efforts.&amp;nbsp; In order to keep custom code working, what we did was take the current version of the Silverlight version of the &lt;a href="http://www.codeplex.com/sdlsdk" target="_blank" mce_href="http://www.codeplex.com/sdlsdk"&gt;DLR&lt;/a&gt; (the “Silverlight Dynamic Languages SDK”).&amp;nbsp; We did tweak the JavaScript implementation a bit to make code intended to work with the JavaScript Silverlight interfaces play nice with the managed interfaces, but overall, it was pretty much plug and play aside from all the hard work figuring out a largely undocumented piece of prerelease software :) (I think it’s on version 0.4.0 currently).&amp;nbsp; If you haven’t checked it out, the DLR is a pretty slick piece of technology – despite the fact we’re running a bunch of JavaScript code, it’s still miles and away faster than the old engine which ran on the browser’s JavaScript engine (although I’m sure efforts in IE8, Chrome and Firefox 3.1 will narrow the gap).&lt;/p&gt;  &lt;p&gt;What does this mean for you?&amp;nbsp; If your a Popfly game creator, it means a much faster engine that is more consistent from browser to browser.&amp;nbsp; That means you can add more actors and other craziness to your games.&amp;nbsp; If your a software developer with a lot of code in Silverlight 1?&amp;nbsp; Well, for you I’d say it means you should feel free to move to C# and Silverlight 2.&amp;nbsp; It took me a couple months, largely on my own with about a month of help from Patrick to rewrite a large chunk of code that had been developed over the previous year or so by a team that grew from one to three (and occasionally more) devs.&amp;nbsp; The cost was larger than it might have been because I also used it as an opportunity to re-architect and clean up the game engine, and I had to maintain compatibility with a large and complex set of existing data (the thousands of games already on popfly.com).&amp;nbsp; I would expect that for most other Silverlight applications, the cost would be significantly less.&amp;nbsp; What I got out of the experience was the vastly superior tooling experience of C# and Silverlight 2, a huge perf boost by moving to a compiled language, the maintainability of C#, the chance to follow the computer science adage of "throw one away”, and a much better code browsing and IntelliSense experience (again due to the fact that C# is strongly typed and compiled).&amp;nbsp; My advice if your considering a similar move would be to take a look on what code you’re likely to touch again, and if you can see yourself working on it regularly, or if it has strong perf requirements take the leap.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;If you’d like to hear more about Silverlight 2, working with the DLR, the port, or the engine, let me know in the comments and I can go into more details on the areas that interest you.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9180923" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category></item><item><title>Performance Tips (Part 2)</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/10/14/performance-tips-part-2.aspx</link><pubDate>Wed, 15 Oct 2008 01:25:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9000126</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/9000126.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=9000126</wfw:commentRss><description>&lt;p&gt;Yesterday we began our discussion of performance optimizations in &lt;a href="http://www.popfly.com" target="_blank"&gt;&lt;a href="http://www.popfly.com/gamecreator" target="_blank"&gt;Popfly Game Creator&lt;/a&gt;.&lt;/a&gt;&amp;#160; In &lt;a href="http://blogs.msdn.com/ben_anderson/archive/2008/10/13/performance-tips-part-1.aspx"&gt;that post&lt;/a&gt; we discussed how collision detection impacts performance as you add actors and ways to mitigate that impact.&amp;#160; Today I’d like to talk a bit about the other bottleneck people hit and that is &lt;a href="http://silverlight.net"&gt;Silverlight&lt;/a&gt; drawing perf. along with some best practices in creating and using your actors to keep your games snappy.&amp;#160; Today’s article contains discussion and techniques that are fairly advanced, so if you feel a little over your head, definitely try the tips outlined in &lt;a href="http://blogs.msdn.com/ben_anderson/archive/2008/10/13/performance-tips-part-1.aspx"&gt;Part 1&lt;/a&gt; first.&lt;/p&gt;  &lt;p&gt;Silverlight has great support for a number of drawing mechanisms.&amp;#160; It supports static images in the form of jpegs and pngs, as well as XAML based vector art which can be generated either by hand, with a tool like Expression Blend or exported from art packages like Expression Design or Adobe Illustrator.&amp;#160; Vector art has the advantage that it can be smoothly scaled (as well as rotated, skewed etc) as large as you want, and since it’s all computed geometry it will look as sharp as it did in it’s natural size.&amp;#160; Some people also like to say that it has a smaller file size than traditional image files which define their content pixel by pixel, but this isn’t necessarily true.&amp;#160; It’s more accurate to say that the file size remains more or less constant regardless of it’s final rendered size.&amp;#160; With traditional image files, the file size grows as the image dimensions in pixels grows, however it shrinks when the dimensions shrink.&amp;#160; There is plenty of vector art (XAML or otherwise) with file sizes at reasonable resolutions that far exceed the equivalent png or jpeg representation.&amp;#160; This is because XAML file sizes grow as the complexity of the image they represent grows.&amp;#160; Designers can easily create files that weigh in the megabyte range by adding more and more detail to their images.&amp;#160; They can also create relatively small files by sticking to a few simple geometric shapes in their designs.&amp;#160; &lt;/p&gt;  &lt;p&gt;So what does that mean for all you budding &lt;a href="http://www.popfly.com" target="_blank"&gt;Popfly&lt;/a&gt; game designers out there?&amp;#160; Actors in Popfly are defined as XAML.&amp;#160; First, realize that the complexity of a XAML file doesn’t just increase the file size, it also increases the amount of time it takes Silverlight to draw an image.&amp;#160; So if you’re using XAML to draw your actors, you can shorten the time it takes Silverlight to draw them (and thereby increase your framerate) by simplifying their XAML – the fewer and the simpler elements the better.&amp;#160; This also has the added benefit of reducing their download size for your users.&amp;#160; Sometimes though, a complex image can do the job much better than a simple one.&amp;#160; If that’s the case, realize that unless you are scaling your actors to fairly large sizes, you can simply use an Image element in the actor to incorporate a static .png file of the appropriate dimensions containing your actor’s appearance.&amp;#160; Because with a static image, Silverlight can simply copy the bits to the appropriate location on the screen (an operation often called bit-blitting), it doesn’t have to do any processing to draw the image.&amp;#160; This can dramatically increase the speed at which it draws as bit-blitting is an operation that is highly optimized and has been hardware accelerated by graphics cards for many years – since well before consumer 3D graphics accelerators even existed.&amp;#160; Most Microsoft provided actors are XAML based so that they scale smoothly, but if you’re not using this functionality, you can always screenshot them while your game is running (press Print Screen to copy the current screen to the clipboard then paste the results into Paint or &lt;a href="http://www.getpaint.net/"&gt;Paint.Net&lt;/a&gt;), fill in the background with transparency, then save the image as a png of the appropriate size and replace the actor’s appearance with the static image.&amp;#160; Particularly with a scrolling viewport, this can save a lot of cycles.&amp;#160; &lt;/p&gt;  &lt;p&gt;Finally, if your game uses a tiled surface to represent areas of the game such as fences or the ground, you don’t necessarily have to tile multiple actors to achieve a tile effect.&amp;#160; Doing so increases the number of actors active in the game which hurts performance as we discussed yesterday.&amp;#160; Instead, you can tile the image in your XAML.&amp;#160; This is especially easy with image elements since you can just copy the image element, change it’s Canvas.Left or Canvas.Top and tile the image to any length you want.&amp;#160; To see an example of this technique check out the game I’ve shared &lt;a href="http://www.popfly.com/users/andersbe/RPGPNG" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; If you rip the game you will notice that I did not use a single fence actor but rather several – Tall Fence, Wide Fence and Medium Fence.&amp;#160; This is because I simply wanted the fence to stretch across the sides of the screen.&amp;#160; If I just stretched the actor the image skewed and if I tiled the actor things slowed down.&amp;#160; So instead I manually did the tiling.&amp;#160; Click on the Wide Fence’s appearance and select XAML to see the technique.&amp;#160; Tools like Expression Blend can help you do this if you’re having a hard time doing it in Popfly’s text editor:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart2_D8FD/splitview_2.png"&gt;&lt;img title="Editing XAML using Expression Blend" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="272" alt="Editing XAML using Expression Blend" src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart2_D8FD/splitview_thumb.png" width="504" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hopefully these articles will help out those of you who have been running into performance barriers when creating your games.&amp;#160; To discuss these tips and tricks, to share your own tips or to get additional help, checkout the Popfly Game Creator &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=2125&amp;amp;SiteID=1" target="_blank"&gt;forums&lt;/a&gt;.&amp;#160; You can also check back at this blog for future tips and tricks.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9000126" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Expression+Blend/default.aspx">Expression Blend</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/performance/default.aspx">performance</category></item><item><title>Twitter Feed Gadget</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/10/13/twitter-feed-gadget.aspx</link><pubDate>Mon, 13 Oct 2008 22:44:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8998503</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8998503.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8998503</wfw:commentRss><description>&lt;p&gt;I started playing around with Twitter recently and have been having a lot of fun.&amp;#160; Some of you may have noticed that I added a Twitter gadget to the blog sidebar here which allows readers to see my feed.&amp;#160; The block was created using the &lt;a href="http://www.popfly.com" target="_blank"&gt;&lt;a href="http://www.popfly.com/mashupcreator" target="_blank"&gt;Popfly Mashup Creator&lt;/a&gt;&lt;/a&gt; by simply connecting the Twitter block to a list display block.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/TwitterFeedGadget_B34E/twitter_2.png"&gt;&lt;img title="twitter" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="283" alt="twitter" src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/TwitterFeedGadget_B34E/twitter_thumb.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you’d like to use a similar gadget on your blog, Facebook account, personalized start page or Vista Sidebar, just use the mashout control to rip the project to your own Popfly account.&amp;#160; You can then customize the input to the twitter block and change the html link to point to your own feed (or simply use my project and enlighten yourself with my random musings!).&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8998503" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/twitter/default.aspx">twitter</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Mashup+Creator/default.aspx">Popfly Mashup Creator</category></item><item><title>Performance Tips (Part 1)</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/10/13/performance-tips-part-1.aspx</link><pubDate>Mon, 13 Oct 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8996804</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8996804.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8996804</wfw:commentRss><description>&lt;P&gt;While we’re constantly working to improve the performance of the &lt;A href="http://www.popfly.com/" target=_blank mce_href="http://www.popfly.com"&gt;&lt;A href="http://www.popfly.com/GameCreator/" target=_blank mce_href="http://www.popfly.com/GameCreator/"&gt;Popfly Game Creator&lt;/A&gt;,&lt;/A&gt; there are a number of tweaks you can make to your games right now to improve your users’ frame rate.&lt;/P&gt;
&lt;P&gt;Right now, there are two main bottlenecks for games created using &lt;A href="http://www.popfly.com/" target=_blank mce_href="http://www.popfly.com"&gt;Popfly&lt;/A&gt; and depending on the characteristics of your game, one or the other can probably help you.&lt;/P&gt;
&lt;P&gt;Today we’ll talk about the biggest perf. hit for most games, which is collision detection between a large number of actors.&amp;nbsp; There are a number of ways to address this.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The easiest trick is to make as many actors as possible non-solid:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart1_B579/non-solid_2.png" mce_href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart1_B579/non-solid_2.png"&gt;&lt;IMG title=non-solid style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=68 alt=non-solid src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart1_B579/non-solid_thumb.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PerformanceTipsPart1_B579/non-solid_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;This is a per state property, so if your actor has multiple states, make sure you set it for each one.&amp;nbsp; When an actor is non-solid, it’s collision bounds will be drawn in blue instead of red.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;When an actor is non-solid, it will no longer push or get pushed when it collides with other actors.&amp;nbsp; This allows us to skip testing it for collisions except when there is a collision listener whose event includes the actor.&amp;nbsp; Even then we only have to test it against other actors that are included as the other actor on the same event.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The next approach is to limit the number of actors you use on any scene.&amp;nbsp; While this can lead to a less compelling game, but if your game is bottlenecked on collision checking, it is guaranteed to increase performance.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If neither of the above is desirable, you can also increase performance by limiting the motion of your actors.&amp;nbsp; When an actor has not moved, it often allows us to skip testing it in parts of our collision detection.&amp;nbsp; This also improves &lt;A href="http://silverlight.net/" target=_blank mce_href="http://silverlight.net"&gt;Silverlight&lt;/A&gt; drawing performance (which we’ll talk more about tomorrow) since we will not have to update the Silverlight plugin and Silverlight will not have to re-render the actor in its new position.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Finally, if you are spawning new actors throughout the course of your game (through shoot behaviors, Appear behaviors, effects etc) there are a couple of things you can do to keep things snappy.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;First, make sure you limit the lifetime of the spawned actors.&amp;nbsp; Leaving the “disappear on scene leave” behaviors intact helps with this since once the actor reaches the edge of the screen, the actor will be removed from the game keeping the total number of actors low.&amp;nbsp; Second, limit the rate at which new actors are added.&amp;nbsp; For example, if you allow the player to shoot, try limiting the rate of fire by setting a property to 1 on your actor when the player presses the fire button, then clear the property to 0 on a timer.&amp;nbsp; Then simply add a filter to the fire behavior to only allow the player to fire when the property is 0.&amp;nbsp; Alternately, you can limit the # of bullets the player can fire at once by filtering on the # of BulletName property (you may have to copy the value of this property locally to your actor from the scene using an “every frame” timer).&amp;nbsp; Lastly, you can throttle down the rate at which your enemies fire when there are a lot of enemies on the screen through custom code or using a filter on # of EnemyBulletName.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Hopefully these tips will help those of you with games whose performance is bound by the total number of actors.&amp;nbsp; Because naive collision detection’s performance is an O(N^2 ) problem (where N is the number of actors, adding one more actor will cause another N + 1 collision checks to take place), adding actors can quickly cause problems.&amp;nbsp; Using the tips above can really improve performance.&amp;nbsp; If you’re having trouble after following these tips or they aren’t helping, be sure to head to the &lt;A href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=2125&amp;amp;SiteID=1" target=_blank mce_href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=2125&amp;amp;SiteID=1"&gt;forums&lt;/A&gt; where other users and members of the Popfly team can help.&lt;/P&gt;
&lt;P&gt;Tomorrow I’ll follow up with Part 2 where I will provide some tips for creating actors that are easy for Silverlight to draw and also help keep Popfly’s game engine running fast.&amp;nbsp; Stay tuned.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8996804" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/performance/default.aspx">performance</category></item><item><title>Popfly September Update</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/09/30/popfly-september-update.aspx</link><pubDate>Wed, 01 Oct 2008 03:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8970931</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8970931.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8970931</wfw:commentRss><description>&lt;P&gt;While I’ve been working on a super secret (ok, just regular secret and probably not exciting to anyone but me) project the last month which you won’t see for a bit, the rest of the Popfly team found time in between actually super (and secret) projects of their own to provide a couple cool updates to &lt;A href="http://www.popfly.com/" mce_href="http://www.popfly.com"&gt;Popfly&lt;/A&gt;.&amp;nbsp; One is a perennial request.&amp;nbsp; You’ll now be able to track which projects are ripped from which to see whose based projects on yours and what other projects were based on.&amp;nbsp; There’s also a new badge and more info on your news feed.&amp;nbsp; You can read more about the updates &lt;A href="http://popflyteam.spaces.live.com/Blog/cns!51018025071FD37F!326.entry" mce_href="http://popflyteam.spaces.live.com/Blog/cns!51018025071FD37F!326.entry"&gt;here&lt;/A&gt; on the team blog or check them out yourself at &lt;A href="http://www.popfly.com/" mce_href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/A&gt;! &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970931" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category></item><item><title>How To: Create Lander</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/09/17/how-to-create-lander.aspx</link><pubDate>Wed, 17 Sep 2008 21:37:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8955984</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8955984.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8955984</wfw:commentRss><description>&lt;p&gt;At PAX, one part of my presentation/demo on Popfly was creating the game &lt;a href="http://www.popfly.com/users/Team/Lander"&gt;Lander&lt;/a&gt; from scratch.&amp;#160; It was a hit with the crowd so I decided to do a screencast of an extended version of the demo which creates a full version of Lander (for the presentation I only implemented the up/down motions, not the swivel motions that let you travel horizontally.&amp;#160; &lt;/p&gt;  &lt;p&gt;So if you weren’t able to attend the presentation at PAX, or just want to check out Popfly and learn how to create a game from one of the developers, check out the video below!&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:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:6ce89db6-fc95-410b-ae70-edff75ff87c9" class="wlWriterSmartContent"&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="22d35c5c-7001-4c84-97dc-fd7d2be4dcc2"&gt;     &lt;div&gt;&lt;embed height="344" type="application/x-shockwave-flash" width="425" src="http://www.youtube.com/v/NGvexc5z3ik&amp;amp;hl=en&amp;amp;fs=1" allowfullscreen="true" allowscriptaccess="always" /&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8955984" width="1" height="1"&gt;</description></item><item><title>Popfly Game Creator at PAX</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/08/26/popfly-game-creator-at-pax.aspx</link><pubDate>Wed, 27 Aug 2008 00:07:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8898364</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8898364.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8898364</wfw:commentRss><description>&lt;p&gt;For those of you in the Seattle area this coming weekend for &lt;a href="http://www.pennyarcadeexpo.com/"&gt;PAX&lt;/a&gt;, be sure to stop by the Microsoft booth if you’re interested in checking out the Popfly Game Creator.&amp;#160; I will be giving a demos of the PGC Friday at 5:00, as well as Saturday and Sunday at 11:30 AM.&amp;#160; I’ll also hang around at the booth for a while after each talk if you want to stop by and chat.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;For a schedule of other MS demos, check out the full listing at Gamerscoreblog: &lt;a title="http://gamerscoreblog.com/team/archive/2008/08/22/560668.aspx" href="http://gamerscoreblog.com/team/archive/2008/08/22/560668.aspx"&gt;http://gamerscoreblog.com/team/archive/2008/08/22/560668.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PopflyGameCreatoratPAX_C6B4/pax_4.jpg"&gt;&lt;img title="pax" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="141" alt="pax" src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/PopflyGameCreatoratPAX_C6B4/pax_thumb_1.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8898364" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/demo/default.aspx">demo</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Penny+Arcade/default.aspx">Penny Arcade</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PAX/default.aspx">PAX</category></item><item><title>New Features Since Launch</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/08/04/new-features-since-launch.aspx</link><pubDate>Tue, 05 Aug 2008 04:59:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8832696</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8832696.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8832696</wfw:commentRss><description>&lt;p&gt;We’ve been hard at work on new features for the Popfly Game Creator since first launching this May.&amp;#160; I took some time to demo new features in the following video:&lt;/p&gt;  &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:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f540460e-bf77-43d0-8e99-0a99d928ed63" class="wlWriterEditableSmartContent"&gt;&lt;div id="05b25170-25e5-42fd-8b82-d20032534f39" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=zp1U8vzPUN8" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/ben_anderson/WindowsLiveWriter/NewFeaturesSinceLaunch_81A4/videob3efb6323159.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('05b25170-25e5-42fd-8b82-d20032534f39'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/zp1U8vzPUN8&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/zp1U8vzPUN8&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;You can also check out Adam’s blog for more info &lt;a href="http://blogs.msdn.com/adam_nathan/archive/2008/07/18/popfly-games-now-with-high-score-tracking.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/adam_nathan/archive/2008/06/12/new-game-creator-features-are-now-live.aspx"&gt;here&lt;/a&gt;, find games you haven’t played &lt;a href="http://www.popfly.com/Profile/TryGames.aspx"&gt;here&lt;/a&gt; (requires sign-in so we know what games you’ve played), and of course, check out &lt;a href="http://www.popfly.com"&gt;Popfly&lt;/a&gt; to see things for yourself!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8832696" width="1" height="1"&gt;</description></item><item><title>Happy Mother's Day! (Games for Mom)</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/05/11/happy-mother-s-day-games-for-mom.aspx</link><pubDate>Mon, 12 May 2008 04:56:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8490846</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8490846.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8490846</wfw:commentRss><description>&lt;p&gt;Look Mom, I made you something:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 100%; height: 400px" src="http://www.adjustablebias.com/wp-content/uploads/2009/09/index.html" frameborder="no" allowtransparency="allowtransparency"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Happy Mother's Day!&lt;/p&gt;  &lt;p&gt;For those of you who are not my mom, the above game is my take on Plato's Allegory of the Cave (my Mom is a Philosophy and Religious Studies professor at the &lt;a href="http://www.uidaho.edu/"&gt;University of Idaho&lt;/a&gt;).&amp;#160; I made the game using &lt;a href="http://www.popfly.com/GameCreator"&gt;Popfly Game Creator&lt;/a&gt;, the product I work on for the Non-Pro Developer Tools team at Microsoft.&amp;#160; You can use the tool to make 2D web games without writing any code.&amp;#160; If you don't believe me, check out what my very non-programmer girlfriend came up for her mom (who teaches Spanish to elementary age children).&amp;#160; A matching game for learning the colors:&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 100%; height: 400px" src="http://www.adjustablebias.com/wp-content/uploads/2009/09/SpanishMatchingGame.html" frameborder="no" allowtransparency="allowtransparency"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;And another game to learn the animals: &lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 100%; height: 400px" src="http://www.adjustablebias.com/wp-content/uploads/2009/09/animals.html" frameborder="no" allowtransparency="allowtransparency"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;It's great to be able to do something creative for Mother's Day again.&amp;#160; Love you Mom!&lt;/p&gt;  &lt;p&gt;(For those of you interested in how these games were made, just click the tweak button and you can see them in Popfly for yourself!&amp;#160; Next week I'll post some tips and tricks on the special effects I did in the &lt;em&gt;Allegory of the Cave&lt;/em&gt; so that others can incorporate them into their own games).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8490846" width="1" height="1"&gt;</description></item><item><title>One week of Popfly Game Creator</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/05/09/one-week-of-popfly-game-creator.aspx</link><pubDate>Sat, 10 May 2008 03:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8483026</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8483026.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8483026</wfw:commentRss><description>&lt;p&gt;It’s now been one week since we first released Popfly Game Creator to the public at &lt;a href="http://makerfaire.com/" mce_href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt; and on the web on May 2nd.&amp;#160; I thought I’d take today to point out some of the cool games that people have made.&amp;#160; &lt;/p&gt;  &lt;p&gt;User zbuff001 made this challenging set of minigames:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[removed...]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;while &lt;a href="http://blogs.msdn.com/adam_nathan/archive/2008/05/03/popfly-game-creator-sample-type-type-revolution.aspx" mce_href="http://blogs.msdn.com/adam_nathan/archive/2008/05/03/popfly-game-creator-sample-type-type-revolution.aspx"&gt;Adam&lt;/a&gt; made a pseudo-rhythm game “Type Type Revolution:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[removed...]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Raden managed to make “Badly Built Wall” very difficult: &lt;a href="http://www.popfly.com/users/Raden/HARD%20GAME"&gt;http://www.popfly.com/users/Raden/HARD%20GAME&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Moo777 had a great game – Bellyjish Adventure with multiple stages: &lt;a href="http://www.popfly.com/users/moo777/The%20Bellyjish%20Adventure"&gt;http://www.popfly.com/users/moo777/The%20Bellyjish%20Adventure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s an interesting one a bit along the lines of the old &amp;quot;Scorched Earth&amp;quot; type games that someone came up with at Maker Faire:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[removed...]&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;One of the great things about building PGC on the Popfly platform is the collaboration it provides.&amp;#160; Since the games are Popfly projects, users can share their games with others, which lets everyone learn from and tweak them.&amp;#160; It’s cool to see a variety of games coming both that make interesting tweaks on existing games and samples, and those that folks come up with all on their own.&amp;#160; It’ll be exciting to see what folks come up with after they’ve had more time with the creator.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’m sure there are plenty of great games that I missed.&amp;#160; If you have something you’d like to share, feel free to link it in the comments!&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;5/10/08 Update:&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;/em&gt;Bellyjish Adventure is back up, removed the embedded &amp;quot;Badly Built Wall&amp;quot; update since the sounds were annoying :).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;5/10/08 Update:&lt;strong&gt;&amp;#160; &lt;/strong&gt;&lt;/em&gt;Also removed the embedded Bellyjish Adventure since its sounds also were annoying :).&amp;#160; Both are linked instead.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;9/01/09 Update:&amp;#160; &lt;/em&gt;Removed embeds now that &lt;a href="http://blogs.msdn.com/ben_anderson/archive/2009/07/22/bye-bye-popfly.aspx"&gt;popfly.com is down&lt;/a&gt;, I’ve removed the embedded games.&amp;#160; If you &lt;a href="http://blogs.msdn.com/ben_anderson/archive/2009/07/22/bye-bye-popfly.aspx"&gt;downloaded your games&lt;/a&gt; before the shutdown, you can still host them on your own.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8483026" width="1" height="1"&gt;</description></item><item><title>Rainbow Duckies - Great post on creating games with grandchildren</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/05/07/rainbow-duckies-great-post-on-creating-games-with-grandchildren.aspx</link><pubDate>Thu, 08 May 2008 06:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8468566</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8468566.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8468566</wfw:commentRss><description>&lt;P&gt;Michael Leonard is another engineer on the Popfly team and just posted a great entry on the experience he had testing the Popfly Game Creator with his granddaughters.&amp;nbsp; It really is a great example of the interactions you can have when you're not just playing games, but actually &lt;A class="" title="Making games with a grandchild" href="http://thesoftwarestories.com/blogger/2008/05/creating-computer-game-with-my.html" mce_href="http://thesoftwarestories.com/blogger/2008/05/creating-computer-game-with-my.html"&gt;making them&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8468566" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Casual+Games/default.aspx">Casual Games</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Games/default.aspx">Games</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Family/default.aspx">Family</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Kids/default.aspx">Kids</category></item><item><title>Capping your actor’s speed</title><link>http://blogs.msdn.com/ben_anderson/archive/2008/05/07/capping-your-actor-s-speed.aspx</link><pubDate>Thu, 08 May 2008 01:23:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8467525</guid><dc:creator>Ben Anderson</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ben_anderson/comments/8467525.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ben_anderson/commentrss.aspx?PostID=8467525</wfw:commentRss><description>&lt;p&gt;If you’ve been playing around with Popfly Game Creator long enough, you’ve probably noticed that if actors get going fast enough, they can sometimes manage to fly right through a wall.&amp;#160; There are some things you can do to get around this like making your walls extra thick, or making sure your actors go slow, but I’ll be the first to admit that this can get kind of annoying.&amp;#160; &lt;/p&gt;  &lt;p align="center"&gt;&lt;img src="http://blogs.msdn.com/photos/ben_anderson/images/8467216/original.aspx" /&gt; &lt;/p&gt;  &lt;p&gt;The issue is that with the alpha release of PGC, we only check for collisions once during each frame.&amp;#160; If your actor is moving so fast that one frame it’s on the left side of the wall and on the next it’s on the right, we will never know that in between it should have collided.&amp;#160; We have to actually catch the actors colliding during a frame in order to realize they collided and then resolve the collision.&amp;#160; This was due to both time limitations and the performance limitations of running on the browser’s JavaScript engine (we could probably do it, but given our short timeframe before releasing the Alpha, we chose to go with the “good enough” method you see in the Alpha) since doing continuous collision checking is both harder to code and less performant [yes, I know this is &lt;a href="http://weblogs.asp.net/jgalloway/archive/2007/05/10/performant-isn-t-a-word.aspx"&gt;not&lt;/a&gt; a &lt;a href="http://boulter.com/blog/2004/08/19/performant-is-not-a-word/"&gt;word&lt;/a&gt; that &lt;a href="http://dictionary.reference.com/browse/performant"&gt;means&lt;/a&gt; &lt;a href="http://dictionary.oed.com/cgi/entry/30003374?single=1&amp;amp;query_type=word&amp;amp;queryword=performant&amp;amp;first=1&amp;amp;max_to_show=10"&gt;fast&lt;/a&gt; – but dude, English is a living language] due to all the math.&lt;/p&gt;  &lt;p&gt;We’ll probably do something about this down the road sometime after Silverlight 2.0 RTMs, we begin requiring it and can begin using C# (no promises as usual).&amp;#160; But in the meantime, I figured I’d post some quick custom code which you can help dealing with this by capping the speed of your actor.&lt;/p&gt;  &lt;p&gt;You might think that you can just use the “Max Speed” value in the motion dialog and be done, however there are many cases where this isn’t good enough.&amp;#160; While Max Speed does work, it only concerns itself with the current behavior.&amp;#160; What Max Speed does under the covers is calculate the amount of acceleration to apply such that the contribution from that behavior will reach terminal velocity at the value you enter.&amp;#160; If you have two behaviors, both with a Max Speed of 100, and they both are pushing in the same direction, your max speed will actually be 200.&amp;#160; While that example is a little contrived, there are many times, especially in physics based games like &lt;a href="http://www.popfly.com/users/team/Badly%20Built%20Wall"&gt;Badly Built Wall&lt;/a&gt;, that over time, the contribution from various behaviors and collisions will add up to making you go really fast.&amp;#160; &lt;/p&gt;  &lt;p&gt;How do you overcome this?&amp;#160; Why with a custom behavior of course!&amp;#160; Adding a custom behavior with the following code should do the trick:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="font-size: 10pt; font-family: monospace; background-color: #d5d5d5"&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; maxSpeed = 200;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; maxSpeedSquared = maxSpeed * maxSpeed;        &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; velX = &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.GetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;XVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;);        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; velY = &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.GetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;YVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;);        &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; velocity = {X: velX, Y: velY};        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; speedSquared = Vector2.MagnitudeSquared(velocity);        &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="color: black"&gt; (speedSquared &amp;gt; maxSpeedSquared)        &lt;br /&gt;{ &lt;/span&gt;&lt;span style="color: black"&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; normalizedVelocity = Vector2.Normalize(velocity);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.SetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;XVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;, normalizedVelocity.X * maxSpeed);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.SetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;YVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;, normalizedVelocity.Y * maxSpeed);        &lt;br /&gt;}&lt;/span&gt; &lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;Add this as a the last behavior to your actor and set its event to Timer-&amp;gt;Every Frame.&amp;#160; What this code does is check your speed every frame after all your motion behaviors have contributed to it and if it exceeds the value you set for maxSpeed at the top, resets your velocity to point in the same direction as before, but to go only as fast as maxSpeed.&amp;#160; You can set maxSpeed to a whatever value you want, and as long as that value is low enough that your actor can’t pass through the thickness of your walls in a single frame, you should avoid any unexpected jumping through walls. &lt;em&gt; [Note:&lt;/em&gt;&amp;#160; All the *Squared values are used as a programmer’s trick to avoid the square root operation (Math.sqrt) which is fairly costly in terms of processing time.&lt;em&gt;] &lt;/em&gt; For even simpler code, check out the following from Badly Built Wall:&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="font-size: 10pt; font-family: monospace; background-color: #d5d5d5"&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; velX = &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.GetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;XVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;);        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt;&lt;span style="color: black"&gt; velY = &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.GetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;YVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;);        &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="color: black"&gt; (velX &amp;gt; 201) &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.SetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;XVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;, 200);        &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt;&lt;span style="color: black"&gt; (velY &amp;gt; 201) &lt;/span&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: black"&gt;.SetValue(&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;YVelocity&amp;quot;&lt;/span&gt;&lt;span style="color: black"&gt;, 200);&lt;/span&gt; &lt;/div&gt; &lt;/blockquote&gt;  &lt;p&gt;This code doesn't actually cap the max speed, but rather the velocity in the vertical and horizontal directions. This is subtly different in that it means you could actually end up going 200 in the horizontal and 200 in the vertical directions, which, if we remember our distance formula means we end up going sqrt(200^2 + 200^2) altogether or about 283 pixels / second total.&amp;#160; Basically, it means you can go faster in the diagonals than you can just straight up and down or left and right.&amp;#160; As you can probably tell it’s quite a bit less complicated (and therefore faster) and even though it’s less general can actually be desirable in games like Badly Built Wall where you are colliding mostly against axis aligned rectangles (their sides are horizontal or vertical rather than at an angle).&amp;#160; &lt;/p&gt;  &lt;p&gt;Happy creating!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8467525" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly/default.aspx">Popfly</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Popfly+Game+Creator/default.aspx">Popfly Game Creator</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Casual+Games/default.aspx">Casual Games</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Games/default.aspx">Games</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/PGC/default.aspx">PGC</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Custom+Code/default.aspx">Custom Code</category><category domain="http://blogs.msdn.com/ben_anderson/archive/tags/Code/default.aspx">Code</category></item></channel></rss>