<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4836905228895499705</id><updated>2011-12-10T09:32:49.472+01:00</updated><category term='PC'/><category term='XBLIG'/><category term='IndieCity'/><category term='Steam'/><category term='YDAB'/><category term='XNA'/><title type='text'>Spyn Doctor Games</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-3808668939680415484</id><published>2011-12-09T17:52:00.000+01:00</published><updated>2011-12-09T17:52:29.763+01:00</updated><title type='text'>XBLIGs and the Xbox dashboard update 2011</title><content type='html'>So here's my take on the recent Xbox dashboard update, and how it affects XBLIGs.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To give the tl;dr first: I think it's horrible how XBLIGs are treated by this update.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-z9SEDp8V4kE/TuI7-o3ZLSI/AAAAAAAABhY/8ceAkkyaSms/s1600/indie_games_dash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-z9SEDp8V4kE/TuI7-o3ZLSI/AAAAAAAABhY/8ceAkkyaSms/s400/indie_games_dash.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;And in a few more words:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think that there are two different problem areas for XBLIGs with the 2011 dashboard.&lt;br /&gt;&lt;br /&gt;The first, which somehow overshadows much of the discussion I've read so far, is &lt;b&gt;discoverability&lt;/b&gt; - how easy/difficult it is to find the XBLIG section on the new dashboard. I guess there are different opinions here: Some (probably most) are saying it's worse than before, other saying it's not so bad, and others again saying that it simply is Microsoft's right to decide how many "precious" dashboard tiles they want to allocate to XLBIGs. So they decided to put us into a difficult to find corner? I guess we have to deal with that...&lt;br /&gt;&lt;br /&gt;This alone is of course already a big problem, but then, what totally baffles me, &lt;b&gt;layered on top of this is the second problem&lt;/b&gt;: &lt;br /&gt;&lt;br /&gt;Even there, inside our already hidden XBLIG corner, Microsoft continues to make our XBLIG dev lives difficult by &lt;b&gt;removing all options for filtering the huge game list!&lt;/b&gt;&amp;nbsp;So we now have a single huge list with currently &amp;gt;2000 entries (and growing) that can be sorted in four different ways (by release date, by rating, by downloads, by title), &lt;b&gt;but no way to filter it!&lt;/b&gt; That means that any game that happens to not be among the say first 100 under any of these four sort methods, is virtually invisible. There is no way for a user to find it unless he already knows the name and bings it. Because face it, nobody will scroll to the right more than about 100 games (if even so many) and scan through the covers to find a game.&lt;br /&gt;&lt;br /&gt;I understand (even if I don't like it) that MS doesn't want to include XBLIGs in the "main" new-release lists, or in the main "by-genre" or "by-first-letter" lists, where AAA and XBLA games live. &lt;b&gt;But why on earth did they not at least give XBLIGs their own "by-genre" and "by-first-letter" filtering?&lt;/b&gt; Or at least a "skip to next letter" option in the "by title" list?&lt;br /&gt;&lt;br /&gt;My only conclusion is: They either totally don't care about XBLIGs so they didn't realize this omission. Or they consciously left it out to marginalize XBLIGs even more. Both versions shed a very very dire light on the future of XBLIG. No matter which death we die, the passive one because no one cares, or the active one because we are cut down - &lt;b&gt;dead is dead!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;So you better have a game that is among the first 100 or so by one of these four sort methods, or your game will virtually be invisible on the service to anyone who isn't actively bing-ing it by name.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;My prediction: We'll see an influx of games with a name that starts with a number, to guarantee at least a front slot under the "by title" filtering.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Too bad for me that my last game's name starts with a "Y"! I just timed it: It took me 1:16min(!) to scroll to Your Doodles Are Bugged! under the "by title" sort order. And then it didn't even show me the box art of the game (or the ones surrounding it). Most likely it first had to&amp;nbsp;load the ~2000 box arts of all the other games that I passed on my way to the letter "Y". So I thought I'd just wait a bit until the box art appears - but I gave up after half an hour, when the box art still wasn't showing...&lt;br /&gt;&lt;br /&gt;Very, very disappointing...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-3808668939680415484?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/3808668939680415484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/12/xbligs-and-xbox-dashboard-update-2011.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3808668939680415484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3808668939680415484'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/12/xbligs-and-xbox-dashboard-update-2011.html' title='XBLIGs and the Xbox dashboard update 2011'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-z9SEDp8V4kE/TuI7-o3ZLSI/AAAAAAAABhY/8ceAkkyaSms/s72-c/indie_games_dash.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-8652902537143854051</id><published>2011-12-06T17:47:00.001+01:00</published><updated>2011-12-09T17:48:31.793+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>IndieGala - Pay-What-You-Want Indie Game Bundle</title><content type='html'>By now this probably isn't news for you anymore, but anyway, for the record:&lt;br /&gt;&lt;br /&gt;Your Doodles Are Bugged! is part of the first IndieGala pay-what-you-want-and-support-charity indie game bundle.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.indiegala.com/"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-8hsDMQPbpng/Tt4umNjgEtI/AAAAAAAABhQ/lG1YheRh6BU/s1600/png.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And of course it is not the only game in the bundle. In the main bundle, there is&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hacker Evolution: Duality&lt;/li&gt;&lt;li&gt;inMomentum&lt;/li&gt;&lt;li&gt;Saira&lt;/li&gt;&lt;li&gt;Your Doodles Are Bugged!&lt;/li&gt;&lt;li&gt;Zombie Shooter 2&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;plus, there's some bonus stuff:&amp;nbsp;two more games (Hacker Evolution: Untold and Zombie Shooter 1), the soundtrack theme for the Zombie Shooter games, and the "Easter Special 2011" bonus doodles for YDAB!.&amp;nbsp;If you buy during the first 48 hours you get it for free, after that, you have to pay above the average to get the bonuses.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All games come in form of separate Steam codes. So the bundle is a great deal even if you already own some games, because you can give away those duplicate codes to family and friends.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what are you waiting for? Go there and help us "up the average"!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;[[[&amp;nbsp;&lt;a href="http://www.indiegala.com/"&gt;http://www.indiegala.com&lt;/a&gt;&amp;nbsp;]]]&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-8652902537143854051?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/8652902537143854051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/12/indiegala-pay-what-you-want-indie-game.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8652902537143854051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8652902537143854051'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/12/indiegala-pay-what-you-want-indie-game.html' title='IndieGala - Pay-What-You-Want Indie Game Bundle'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8hsDMQPbpng/Tt4umNjgEtI/AAAAAAAABhQ/lG1YheRh6BU/s72-c/png.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-2155165509137649872</id><published>2011-08-21T18:40:00.001+02:00</published><updated>2011-08-21T18:40:54.788+02:00</updated><title type='text'>Rodeo - A New Game in XBLIG Playtest</title><content type='html'>It has been a long time, more than one and a half years, since the release of my last XBLIG, during which I was busy with the PC release of YDAB!.&lt;br /&gt;&lt;br /&gt;But now, finally, I have another XBLIG in playtest. Working title: &lt;b&gt;Rodeo&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;If you are an AppHub peer, &lt;a href="http://catalog.create.msdn.com/gamedetails.aspx?catalogEntryId=500940d1-f652-4725-b9a6-32d4f7c45ecd&amp;amp;type=1"&gt;check it out here&lt;/a&gt; (and &lt;a href="http://forums.create.msdn.com/forums/t/90058.aspx"&gt;here&lt;/a&gt; is the matching playtest thread in the AppHub forum, where I also made a post explaining how to play the game).&lt;br /&gt;&lt;br /&gt;The version that is in playtest right now is purely a gameplay prototype. So far, it has placeholder graphics only, and no sound effects, music, or any other kind of polish. Based on the feedback I get about the gameplay, I'll decide if I make this into a full game or not. So, if you like it, don't forget to tell me! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-2155165509137649872?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/2155165509137649872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/08/rodeo-new-game-in-xblig-playtest.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/2155165509137649872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/2155165509137649872'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/08/rodeo-new-game-in-xblig-playtest.html' title='Rodeo - A New Game in XBLIG Playtest'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-6658516837542864808</id><published>2011-08-03T18:44:00.000+02:00</published><updated>2011-08-03T18:44:14.397+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLIG'/><title type='text'>Raising Game Prices - I Must Be Mad, Right?</title><content type='html'>After thinking about it for a long time (even since before Luke did his &lt;a href="http://radiangames.com/?p=677"&gt;Bizarro Sale&lt;/a&gt;), I have today raised the prices for my games Your Doodles Are Bugged! and Kuchibi on the XBLIG marketplace (not the PC version!).&lt;br /&gt;&lt;br /&gt;Both games are now at 240 MSP. Yep, that's a whopping "you'll-never-be-able-to-pay-this-without-going-bankrupt" 3$ (or 3€). For Kuchibi that is actually the same as its original launch price (I lowered it to 80MSP a while ago), while for Your Doodles Are Bugged! this is indeed an increase.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #cc0000; font-size: large;"&gt;&lt;b&gt;So I must be utterly mad, right?&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/6/6b/Mad_scientist_caricature.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://upload.wikimedia.org/wikipedia/commons/6/6b/Mad_scientist_caricature.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Well, probably...&amp;nbsp;But I did it anyway. :-)&lt;br /&gt;&lt;br /&gt;I think 3$ is a fair price for these games, if you enjoy them. If you don't enjoy them, then even the old price of 1$ would have been too much. I always felt that, but the XBLIG price race to the bottom (hunting the oh-so-important spots on the top-lists) compelled me to go with a price that was below what I felt fair. Well, I decided to get out of this rat race.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-C9nzSBnPjG0/Tjk1b0RGIAI/AAAAAAAAAmk/wgpP1HYJHDg/s1600/FileBanksy-rat-result.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-C9nzSBnPjG0/Tjk1b0RGIAI/AAAAAAAAAmk/wgpP1HYJHDg/s320/FileBanksy-rat-result.jpg" width="267" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Will some players think this is unfair? Probably. In this age of entitlement, where even other &lt;i&gt;developers(!)&lt;/i&gt;&amp;nbsp;&lt;a href="http://forums.tigsource.com/index.php?topic=20772.165"&gt;write lengthy threads&lt;/a&gt; about how something like the Humble Indie Bundle is morally suspect because it is just "guilt-tripping" the customers, I think that no matter what you do, you will always have someone who complains. Probably even if you give the game away for free. So if anyone thinks that the new price is unfair, then by all means&lt;i&gt;, do not buy the games!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;And last but not least, it's an interesting experiment to see if (and how) sales are affected by this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-6658516837542864808?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/6658516837542864808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/08/raising-game-prices-i-must-be-mad-right.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6658516837542864808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6658516837542864808'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/08/raising-game-prices-i-must-be-mad-right.html' title='Raising Game Prices - I Must Be Mad, Right?'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-C9nzSBnPjG0/Tjk1b0RGIAI/AAAAAAAAAmk/wgpP1HYJHDg/s72-c/FileBanksy-rat-result.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-8143695097163506681</id><published>2011-07-31T16:52:00.007+02:00</published><updated>2011-11-27T13:19:20.738+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='IndieCity'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>XNA GameComponent for IndieCity Integration</title><content type='html'>By now you have probably already heard of &lt;a href="http://www.indiecity.com/"&gt;IndieCity&lt;/a&gt;, the upcoming new portal for indie games.&lt;br /&gt;&lt;br /&gt;IndieCity is currently still in closed beta, for invited developers&amp;nbsp;only, but I'm fortunate enough to be among the invited, so&amp;nbsp;I'm already in the process of implementing integration with the IndieCity achievement and leaderboards system into Your Doodles Are Bugged!.&lt;br /&gt;&lt;br /&gt;For this I have created a nice little XNA GameComponent that wraps all the nitty gritty details of the ICLIB (IndieCity's underlying development library) to make it easily accessible in a XNA game.&lt;br /&gt;&lt;br /&gt;And I thought I might share this component with all the other XNA developers out there, so here it is:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.spyn-doctor.de/files/IndieCityComponent-2011-11-27.zip"&gt;&lt;b&gt;Download IndieCityComponent-2011-11-27.zip&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I hope that this may help some of you with your own IndieCity integration.&amp;nbsp;There's actually only a single class file, and the source code contains a detailed description of how to integrate and use the component. For the curious of you, I've also quoted that description below. This is a work in progress and will evolve as the ICLIB matures. Any insights, ideas, suggestions and questions are welcome. Just post a comment below or contact me. Or even better: Post in the discussion thread about my component on the IndieCity forum:&lt;br /&gt;&lt;a href="http://www.indiecity.com/forum/viewtopic.php?f=20&amp;amp;t=118"&gt;http://www.indiecity.com/forum/viewtopic.php?f=20&amp;amp;t=118&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy programming!&lt;br /&gt;&lt;br /&gt;EDIT: Since I made this blog post, I have made updates to my component. I changed the download link above to point to the latest version of the component, but the description below is still the now outdated description of the very first version. Please see the IndieCity forum thread that is linked above for&amp;nbsp;the updated description and&amp;nbsp;the changes I made.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;b&gt;IndieCityComponent - a XNA GameComponent for the integration with the IndieCity ICLIB,&amp;nbsp;with support for achievements and leaderboards.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Developed with ICLIB version 1.0.1.2849.&lt;br /&gt;&lt;br /&gt;Compatible with XNA 3.1, XNA 4.0 and .NET 2.0 (or later).&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;The goal was to create a GameComponent that is easy to integrate into a XNA game and that does all the session updates, state management and event handling for you, so that you don't have to deal with them yourself.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Disclaimer: This component was written against a beta version of the ICLIB, for which the documentation at this time is rather incomplete. Therefore, if something in the code seems strange to you, then this may be because I was forced to work around some peculiar behavior in the current ICLIB (of course it may also be because I just didn't understand the ICLIB properly ;-).&lt;br /&gt;Some of the code is also untested. For example the methods for paging a leaderboard are kind of hard to test if the only leaderboards I can test with are either empty or have only a single entry (i.e. my own). Similarly, some methods are untested because the underlying method in the ICLIB itself is still not implemented (for example "RequestLastPage").&lt;br /&gt;The component will likely change a bit in future versions, as the ICLIB matures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Integrating the Component With Your Game&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is very simple. First some preparation:&lt;br /&gt;&lt;br /&gt;- Install the ICLIB (or ICSDK).&lt;br /&gt;&lt;br /&gt;- Add ICEBridge, ICECore and ICELanda to the "References" section of your game&lt;br /&gt;&amp;nbsp; (you find them on the "COM" tab of the "Add Reference" dialog).&lt;br /&gt;&lt;br /&gt;- Add the IndieCityComponent.cs file to your project.&lt;br /&gt;&lt;br /&gt;- Edit the namespace in that file to match your project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then in your main Game class, add a member for the component. Let's assume that you called this member "mIndieCityComponent". Then add the following to the Initialize method of your Game class:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: x-small; white-space: pre;"&gt; &lt;/span&gt;mIndieCityComponent = new IndieCityComponent(&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;"11111111-2222-3333-4444-555555555555",&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;// replace with GameID&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;"66666666-7777-8888-9999-000000000000", // replace with Game Secret&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;true,&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;// replace with false if your game has no achievements&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;true,&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;// replace with false if your game has no leaderboards&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;this);&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Components.Add(mIndieCityComponent);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's it. :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IndieCity Component Properties&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The component exposes the following properties:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;SessionActive&lt;/b&gt;: "true", if the IndieCity session is connected, "false" if not.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;UserId&lt;/b&gt;: The IndieCity ID of the current user.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;UserName&lt;/b&gt;: The IndieCity user name of the current user.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;b&gt;SessionEndDelegate&lt;/b&gt;: A delegate that is called after the IndieCity session&amp;nbsp;ends for some reason (see below for details).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Starting an IndieCity Session&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before you can do anything with the component, you need to start an IndieCity session. So at a convenient location in your code, add the following:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mIndieCityComponent.RequestSessionStart(null);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For example, you could do this after loading the game assets, or at a similar moment.&lt;br /&gt;&lt;br /&gt;Note, that this call only begins the process of starting a session. The session will not be completely started immediately, but will take some time to become active.&lt;br /&gt;&lt;br /&gt;While the session is not yet active (or hasn't even been started yet), any calls to the achievement or leaderboard related methods will have no effect and will return empty defaults.&lt;br /&gt;&lt;br /&gt;To see if the session is active already, you can check the SessionActive property.&lt;br /&gt;&lt;br /&gt;Optionally, if you want to be notified as soon as the session becomes active, you can also provide a callback delegate to the RequestSessionStart call (instead of the "null" argument). For example with an in-line delegate:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="font-size: x-small; white-space: pre;"&gt; &lt;/span&gt;mIndieCityComponent.RequestSessionStart(delegate()&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// This code will be called once the session has been&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// started and is active.&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;});&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course you can also specify any other method as a delegate that matches the ICCNotificationDelegate signature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ending an IndieCity Session&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Normally, you will probably never need to end the IndieCity session yourself, because the component already ends the session for you when the game exits.&lt;br /&gt;&lt;br /&gt;But if for some reason you want to prematurely end the session anyway, you can call:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mIndieCityComponent.EndSession();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While you will usually not need to end the session yourself, you need to be aware that an IndieCity session can also end for some other reason than you ending it actively. For example it could end because there is a network timeout.&lt;br /&gt;&lt;br /&gt;Once a session ends, the SessionActive property will be "false" again.&lt;br /&gt;&lt;br /&gt;If you want to know the reason *why* the session was ended, and/or if you want to be informed as soon as the session ends (and not only when you check the SessionActive property the next time), you can use the SessionEndDelegate:&lt;br /&gt;&lt;br /&gt;After you create your mIndieCityComponent, and before starting the session, set the SessionEndDelegate property to point to a callback method that is to be called when the session ends. For example with an in-line delegate:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mIndieCityComponent.SessionEndDelegate = delegate(IndieCityComponent.SessionEndReason reason)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// This code will be called once the session has ended,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;// with the applicable reason&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(Or any other delegate method that matches the ICCSessionEndDelegate signature.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another example - light-weight DRM:&lt;br /&gt;&lt;br /&gt;If the game is an unlicensed (for example pirated) copy of the game, i.e. if CoAccessControl.LicenseState == LicenseState.LS_NOLICENSE, then after the session starts, the component will immediately end the session again, with the SessionEndReason.NO_LICENSE. That way, in an unlicensed game the component will never be active, so achievements and leaderboards will never work.&lt;br /&gt;&lt;br /&gt;Additionally, you can use this as a light-weight DRM that shuts down the game if it is unlicensed, like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mIndieCityComponent.SessionEndDelegate = delegate(IndieCityComponent.SessionEndReason reason)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (reason == IndieCityComponent.SessionEndReason.NO_LICENSE ||&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt; &amp;nbsp; &amp;nbsp;reason == IndieCityComponent.SessionEndReason.BAD_CREDENTIALS)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Exit(); // replace with the correct code to exit the game&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This callback will automatically close the game if the session ends either because there is no license or because of incorrect user credentials. If however there simply is no internet connection to IndieCity, the game will still run (but of course then you can't access IndieCity achievements or leaderboards).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Indie City Achievements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you have created a valid achievement set on the IndieCity developers site and have associated it with your game, you can pass "true" for the "hasAchievements" parameter of the component's constructor and then access the achievements through the component.&lt;br /&gt;&lt;br /&gt;In this case, when you request to start a session, the component will automatically download all achievement data as part of the session start process.&lt;br /&gt;&lt;br /&gt;After the session is started (i.e. SessionAction == true), you can access the achievement related methods to get access to the achievements:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;int GetAchievementCount()&lt;/b&gt; :&lt;br /&gt;Returns the number of achievements in the achievement set in the IndieCity database.&lt;br /&gt;NOTE: This method accesses the cached achievement data that was loaded when the session was started (or during the last call to RequestAchievementDataRefresh, see below). It does not necessarily reflect the current information in the IndieCity achievement database, if the achievement set has been changed in the meantime.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CoAchievement GetAchievementByID(long achievementID)&lt;/b&gt; :&lt;br /&gt;Returns the achievement with the given ID (the ID is defined on the IndieCity developers site). You can then access the achievement details via the returned object.&lt;br /&gt;NOTE: Like above, this method returns information from the cached achievement data!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CoAchievement GetAchievementByIndex(int index)&lt;/b&gt; :&lt;br /&gt;Returns the achievement with the given index (where 0 &amp;lt;= index &amp;lt; achivement_count). You can then access the achievement details via the returned object.&lt;br /&gt;NOTE: Like above, this method returns information from the cached achievement data!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;bool IsAchievementUnlocked(long achievementID)&lt;/b&gt; :&lt;br /&gt;"true" if in the IndieCity achievement database the achievement with the given ID is unlocked for the current user, "false" otherwise.&lt;br /&gt;NOTE: Like above, this method returns information from the cached achievement data! This means in particular, that if an achievement has become unlocked in the IndieCity achievement database in the meantime (through a channel other than the UnlockAchievement method, see below), then the value returned by this method may be incorrect!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void UnlockAchievement(long achievementID)&lt;/b&gt; :&lt;br /&gt;Unlocks the achievement with the given ID for the current user in the IndieCity achievement database and stores the same information in the locally cached achievement data.&lt;br /&gt;NOTE: Theoretically you can also unlock an achievement by calling the CoAchievement.Unlock() method directly, but if you do this, you bypass the local achievement data cache. So while the achievement will then correctly be marked as unlocked in the IndieCity achievement database, any call to "IsAchievementUnlocked" (see above) will still return "false" (until you refresh the achievement data again, see below). It is therefore STRONGLY recommended to only unlock achievements through this method!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void RequestAchievementDataRefresh(ICCNotificationDelegate refreshCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Normally you will not have any need to call this method, because all achievement data is already downloaded from the IndieCity server into the local cache while the component starts the session. This includes both the information about the achievements themselves, and the information which of them are unlocked for the current user. So once the session is active, you can access this cached data via the methods described above.&lt;br /&gt;However, in some situations you may want to refresh the cached data while the session is already active (i.e. while the game is already running). For example:&lt;br /&gt;If your in-game achievement UI displays the achievement score, and you want to display the "true-score" for an achievement. This true-score can change over time, as more and more players unlock achievements of the game. So when the user views the in-game achievemet UI, the true-score that was cached when the session was started (usually at game start) may already be outdated. If you want to make sure that your UI displays the latest true-score, you can use this method to refresh the achievement cache. Of course if you don't display the true-score in the first place, you don't have to care about this.&lt;br /&gt;If you call this refresh method, then the same data refresh procedure is triggered that is also performed during a session start. The refreshed achievement data is not available immediately after the call returns, but takes a while to be fetched from the server. So normally you will want to supply a delegate for the "refreshCompleteDelegate" parameter, which is called as soon as the achievement refresh has finished.&lt;br /&gt;NOTE: Do not call this method a second time while the previous request is still pending, i.e. do not call it again before the "refreshCompleteDelegate" has been called back.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IMPORTANT: Do not call any of the achievement related methods if you have passed "false" for the "hasAchievements" argument in the constructor. If you do, the behavior of the methods is undefined and may cause exceptions or otherwise unexpected behavior.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Indie City Leaderboards&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you have created a valid leaderboard set on the IndieCity developers site and have associated it with your game, you can pass "true" for the "hasLeaderboards" parameter of the component's constructor and then access the leaderboards through the component.&lt;br /&gt;&lt;br /&gt;After the session is started (i.e. SessionAction == true), you can access the leaderboard related methods to get access to the leaderboards:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void PostLeaderboardScore(int leaderboardID, long score)&lt;/b&gt;&amp;nbsp;:&lt;br /&gt;Posts an entry with the given score and for the current user to the leaderboard with the given ID in the IndieCity leaderboard database (the ID is defined on the IndieCity developers site).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CoLeaderboardPage RequestOpenLeaderboard(int leaderboardID, int pageSize, ICCLeaderboardPageLoadDelegate pageCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Request the first page of the leaderboard with the given ID. The page will have the given page size. The page object is returned immediately, but will not yet be completely populated. This will take some time. So you will have to store a reference to the returned page and wait until it is populated before you can display it. You also need to hang on to this page object because you will need it for the other page related methods (see below). I.e. before you can call any of the other page related methods, you first need to obtain a page object with this RequestOpenLeaderboard method.&lt;br /&gt;To wait until a page has been populated, you can either poll the CoLeaderboardPage.PopulationState property yourself (in which case you would usually supply "null" for the pageCompleteDelegate parameter), or more comfortably, you can supply a pageCompleteDelegate that will be called as soon as the page is populated. For example with an in-line delegate:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;mIndieCityComponent.RequestOpenLeaderboard(1, 10, delegate(bool success)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (success) {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;// The page has been populated successfully,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;// you can now access its rows.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;else {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;// There was an error during the page population,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;// you should not use the associated page object.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;});&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(Or any other delegate method that matches the ICCLeaderboardPageLoadDelegate signature.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void RequestFirstPage(CoLeaderboardPage page, ICCLeaderboardPageLoadDelegate pageCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Sets the given page (which must have been obtained with RequestOpenLeaderboard) to point to the first entries of the leaderboard that the page belongs to. The number of entries (i.e. the size of the page) depends on the page size that was specified during RequestOpenLeaderboard. For example for page size 10, this call will request entries 1-10.&lt;br /&gt;Just like with RequestOpenLeaderboard, the page will not immediately be populated with the requested entries, but this will take some time. So again, you can either poll CoLeaderboardPage.PopulationState (and supply "null" for the pageCompleteDelegate) to wait until the page is populated, or you can supply a pageCompleteDelegate and receive a callback (with a success flag) as soon as the page is populated. See RequestOpenLeaderboard for details about this delegate.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void RequestLastPage(CoLeaderboardPage page, ICCLeaderboardPageLoadDelegate pageCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Similar to RequestFirstPage, but sets the page to the last entries of the leaderboard.&lt;br /&gt;NOTE: This method does currently not work, because the underlying functionality is not yet implemented in the ICLIB!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void RequestNextPage(CoLeaderboardPage page, ICCLeaderboardPageLoadDelegate pageCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Similar to RequestFirstPage, but sets the page to the next entries of the leaderboard, depending on the selected page size and the entries that are currently in the page. For example (with page size 10), if the page currently shows entries 1-10, then this call will request entries 11-20.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;void RequestPrevPage(CoLeaderboardPage page, ICCLeaderboardPageLoadDelegate pageCompleteDelegate)&lt;/b&gt; :&lt;br /&gt;Similar to RequestFirstPage, but sets the page to the previous entries of the leaderboard, depending on the selected page size and the entries that are currently in the page. For example (with page size 10), if the page currently shows entries 51-60, then this call will request entries 41-50.&lt;br /&gt;NOTE: I'm not sure if this method works yet (i.e. if the underlying functionality in the ICLIB has already been implemented).&lt;br /&gt;&lt;br /&gt;NOTE: Do not call any of these leaderboard releated RequestXXX methods while a previous request is still pending. I.e. do not call any of these RequestXXX methods again if you already have called the same or one of the other leaderboard related RequestXXX methods before, and the pageCompleteDelegate of that previous call has not yet been called back, or the CoLeaderboardPage.PopulationState of the page is still LeaderboardPopulationState.LPS_PENDING.&lt;br /&gt;&lt;br /&gt;IMPORTANT: Do not call any of the leaderboard related methods if you have passed "false" for the "hasLeaderboards" argument in the constructor. If you do, the behavior of the methods is undefined and may cause exceptions or otherwise unexpected behavior.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-8143695097163506681?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/8143695097163506681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/xna-gamecomponent-for-indiecity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8143695097163506681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8143695097163506681'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/xna-gamecomponent-for-indiecity.html' title='XNA GameComponent for IndieCity Integration'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-7503756535640708644</id><published>2011-07-14T17:30:00.001+02:00</published><updated>2011-07-31T17:01:12.131+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>On Using Custom Content to Promote YDAB!</title><content type='html'>While preparing for the PC release of Your Doodles Are Bugged!, the folks at Blitz 1UP had a very cool idea for how we could try to grab the attention of game reviewers:&lt;br /&gt;&lt;br /&gt;The idea was to use the game's own Doodle Studio to produce a number of special custom levels (i.e. doodles). To be precise, we created an individual custom doodle for each of the main game review sites, incorporating the logo of the site into the doodle. And when giving out the review copies of the game, we would also give the reviewer the matching custom doodle for the site that he (or she) writes for, together with the suggestion to use that level for their review, and to also make it available for download to their readers, so that they too could play it.&lt;br /&gt;&lt;br /&gt;Our hope was, that this would have several effects:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We were hoping that&amp;nbsp;the individual custom level, with the site's own logo, would increase the interest of the reviewer in the game, so that he would feel motivated to play (and hopefully review) the game in the first place.&lt;/li&gt;&lt;li&gt;Also we thought that the reviewer might like the chance to offer his readers a free goodie, in form of the downloadable doodle. This too would hopefully convince a few reviewers to write a review who otherwise might have passed.&lt;/li&gt;&lt;li&gt;And of course we imagined that getting a free custom level from the review site would motivate a few readers to also download the trial version of the game, so that they would be able to actually try out the free doodle. (And hopefully they would then like the game enough to actually buy it.)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All in all, it sounded like a great idea and several people at Blitz 1UP put a lot of effort into creating these custom doodles. And I would like to use this opportunity to &lt;b&gt;thank them again for this great help!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Well, it &lt;i&gt;still&lt;/i&gt; sounds like a good idea, in my opinion. Only for my game Your Doodles Are Bugged!, it turned out that it didn't actually work like we hoped.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;None of the reviewers made the doodle available to their readers as a download, and only a very few even mentioned it at all. For example the reviews at the larger sites like &lt;a href="http://pc.ign.com/articles/116/1165768p1.html"&gt;IGN&lt;/a&gt; and &lt;a href="http://www.gamespot.com/pc/puzzle/your-doodles-are-bugged/review.html"&gt;Gamespot&lt;/a&gt;, even though quite positive, did not mention the custom doodle at all.&lt;br /&gt;&lt;br /&gt;So the question is: Was it worth the effort to create the custom doodles? We don't really know. It seems as if those doodles were largely ignored and did not have much effect. But of course they still might have had some effect behind the scenes, like sparking an interest in the game in the first place, even if the reviewer did not end up using or mentioning the doodle in the review. It is really hard to tell.&lt;br /&gt;&lt;br /&gt;But that's how it goes when you try to promote a game: Some ideas work out and some don't, and for some, you just don't know.&lt;br /&gt;&lt;br /&gt;The one thing that is frustrating though is, that all these lovingly crafted doodles did not end up where they would do the most good: In the hands of the players, who could enjoy them in the game.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;So let's fix that!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Download the custom doodles here:&amp;nbsp;&lt;a href="http://www.spyn-doctor.de/files/CustomDoodles.zip"&gt;&lt;b&gt;[Download]&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The above link downloads a ZIP file that contains all the custom doodles that we made for the review sites. &lt;b&gt;This are 22 new doodles in total!&lt;/b&gt;&lt;br /&gt;To play these doodles, unzip the 22 doodle files to a temporary folder and then import them (one by one I am afraid) into the game by using the [Import] button in doodle studio.&amp;nbsp;Note, that these doodles are "DLC-style doodles", i.e. you can only play them, but can not edit/change them in doodle studio yourself. But on the other hand, there is also no "minimum-level" requirement. Everyone who has unlocked the doodle studio will be able to import and play these doodles.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-7503756535640708644?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/7503756535640708644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/on-using-custom-content-to-promote-ydab.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7503756535640708644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7503756535640708644'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/on-using-custom-content-to-promote-ydab.html' title='On Using Custom Content to Promote YDAB!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-1446009136038595057</id><published>2011-07-03T00:32:00.000+02:00</published><updated>2011-07-03T00:32:21.580+02:00</updated><title type='text'>Save 50% on Your Doodles Are Bugged!</title><content type='html'>As part of the Steam Summer Camp Sale, you can now save 50% on Your Doodles Are Bugged! (Steam version). Obviously for a limited time only, until the sale is over.&lt;br /&gt;&lt;br /&gt;Get the game here:&amp;nbsp;&lt;a href="http://store.steampowered.com/app/95500/"&gt;http://store.steampowered.com/app/95500/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-1446009136038595057?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/1446009136038595057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/save-50-on-your-doodles-are-bugged.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1446009136038595057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1446009136038595057'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/07/save-50-on-your-doodles-are-bugged.html' title='Save 50% on Your Doodles Are Bugged!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-77148808418293509</id><published>2011-05-19T23:40:00.000+02:00</published><updated>2011-05-19T23:40:43.965+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLIG'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Time-lapse video of Doodle #24</title><content type='html'>I'm not usually making a blog post for every video I upload on YouTube, but I thought this would be worth it, because it does not only show off the largest and most complex doodle in the game (which might be interesting for you to see if you are considering buying the game and want to know more about it), but it also demonstrates a few strategies and tricks for solving doodles in general.&lt;br /&gt;&lt;br /&gt;Of course if you don't want to be spoiled and want to play this doodle with an unbiased mind, you better not watch this video. :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/LA99FOH7pp8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LA99FOH7pp8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="560" height="349" src="http://www.youtube.com/v/LA99FOH7pp8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-77148808418293509?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/77148808418293509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/05/time-lapse-video-of-doodle-24.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/77148808418293509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/77148808418293509'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/05/time-lapse-video-of-doodle-24.html' title='Time-lapse video of Doodle #24'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-7684043971265081791</id><published>2011-05-19T13:30:00.000+02:00</published><updated>2011-05-19T13:30:36.627+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Your Doodles Are Bugged! Updated</title><content type='html'>The &lt;b&gt;new version 1.1&lt;/b&gt; of Your Doodles Are Bugged! has been released.&lt;br /&gt;&lt;br /&gt;The main new features in this version are the save options:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Mid-level saving.&lt;/b&gt; If you exit a doodle in the middle of playing it, either to go back to the level select screen or to quit the game, you now have the option to save your progress in the current doodle. When you later return to this doodle, you can then continue where you left it.&lt;br /&gt;This is useful for example if you get called away from playing, or if you can't finish one of the larger &amp;nbsp;doodles in a single playing session.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Checkpoint saving.&lt;/b&gt;&amp;nbsp;At any time while playing a doodle, you can now save a new checkpoint (which overwrites the previous checkpoint). Later, you can return to the last checkpoint.&lt;br /&gt;This is useful for recovering from mistakes. For example, if you had already progressed very far in a doodle and everything was running nicely, and then you make a mistake and the s$*#!d bugs fall to their death or get stuck in a particular difficult part of the doodle. Previously, you only had the option of either laboriously fixing your mistake by herding the bugs back to where you want them, or starting over the whole doodle from scratch. Now you can simply return to your last checkpoint - provided that you remembered to save one before you made the mistake! :-)&lt;br /&gt;But be warned: Loading a checkpoint does not reset the clock. So if you are aiming for a new time record, better don't make any mistakes that require you to load a checkpoint!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you bought the game on&amp;nbsp;&lt;a href="http://store.steampowered.com/app/95500/"&gt;Steam&lt;/a&gt;, it should update automatically the next time you start it (if you are in online mode at the time).&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;If you got the standard version from &lt;a href="http://www.blitz1up.com/YourDoodlesAreBugged"&gt;Blitz 1UP&lt;/a&gt;, you can get the new version from the same download page where you originally downloaded the game, by re-entering your code. Simply run the new installer and install the new version into the same folder where YDAB! is already installed.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-7684043971265081791?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/7684043971265081791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/05/your-doodles-are-bugged-updated.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7684043971265081791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7684043971265081791'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/05/your-doodles-are-bugged-updated.html' title='Your Doodles Are Bugged! Updated'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-46395236818336550</id><published>2011-04-29T16:56:00.001+02:00</published><updated>2011-07-31T17:01:46.387+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLIG'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Leaderboards in Your Doodles Are Bugged!</title><content type='html'>Over time, and with the different versions of YDAB!, I've programmed several different leaderboard implementations.&lt;br /&gt;&lt;br /&gt;The first was of course the global scoreboard in the XBLIG version. Since XBLIGs don't have access to real XBLA leaderboards (and aren't even allowed to use that name, hence the term "scoreboard"), the workaround-of-choice is usually a distributed peer-to-peer solution: Every instance of the game (on the various Xboxes out there) keeps a local copy of the scoreboard content. Whenever the player starts the game, the game automatically searches for other instances of the game that are also running, via the Xbox LIVE network. If it finds another instance, the two instances then exchange their scoreboard data, thus updating each other to the newest "global" state. Scoreboard data thus propagates itself from Xbox to Xbox, sort of like a virus. At least if enough people are playing the game, so that you actually "meet" some other instances of the game online while playing.&lt;br /&gt;I&amp;nbsp;initially implemented such a peer-to-peer scoreboard for my game Kuchibi, and later I used the same implementation (with a few enhancements) in YDAB! too.&amp;nbsp;And of course I've since made the code for it &lt;a href="http://spyn-doctor.blogspot.com/2010/12/global-scoreboard-component-for-xna-40.html"&gt;public&lt;/a&gt;, and quite a few XBLIGs are now using it (for example &lt;a href="http://marketplace.xbox.com/Product/Explosionade/66acd000-77fe-1000-9115-d80258550684"&gt;Explosionade&lt;/a&gt;, &lt;a href="http://marketplace.xbox.com/Product/radiangames-Fireball/66acd000-77fe-1000-9115-d802585506de"&gt;radiangames Fireball&lt;/a&gt;, &lt;a href="http://marketplace.xbox.com/Product/radiangames-Crossfire-2/66acd000-77fe-1000-9115-d8025855072d"&gt;radiangames Crossfire 2&lt;/a&gt;, &lt;a href="http://marketplace.xbox.com/Product/Toy-Stunt-Bike/66acd000-77fe-1000-9115-d80258550729"&gt;Toy Stunt Bike&lt;/a&gt;, etc.).&lt;br /&gt;&lt;br /&gt;Then came the PC version of YDAB!.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;The folks at Blitz 1UP offered me to host global leaderboards for the game on their server, with Facebook IDs to uniquely identify players. Of course I took them up on that offer, :-) and so I implemented another version of the leaderboards. This version communicates with the central Blitz server to store new scores and to retrieve the data when a user browses the leaderboards.&lt;br /&gt;For this browsing, in the XBLIG version I had implemented a page-based UI: You always see one page of the leaderboard (with 10 entries, but that's theoretically variable), and you can page up and down. Of course you can also jump to the first page and to the page that contains your own entry.&lt;br /&gt;I wanted to re-use this UI in the PC version to save me some work. Luckily, Thomas, who did the server side implementation at Blitz, was very accommodating when it came to implementing my wishes. So I was able to specify exactly what kind of access methods for the leaderboard data I wanted, which in turn allowed me to design them in a way that fit nicely with my existing UI.&lt;br /&gt;The implementation now supports all the request I needed for the page-based UI. This includes requests to retrieve the number of entries in the list, to retrieve the current rank of the player, and of course to retrieve a range of entries (a page).&lt;br /&gt;&lt;br /&gt;The next step happened when it turned out that YDAB! was accepted by Steam. Because Steam of course has its own leaderboard system, and though I didn't actually ask, I doubt that they would be equally willing to implement my requests as Thomas was. :-)&lt;br /&gt;Well, after reading their API documentation, it became clear that my design of the data access that I had done for the Blitz leaderboards wasn't so bad after all, as the access methods in the Steam API are almost the same.&amp;nbsp;They are so similar in fact, that I could do an almost plug-and-play-style replacement of the Blitz leaderboards code with matching code for the Steam leaderboards. And code reuse makes for one happy programmer! :-)&lt;br /&gt;&lt;br /&gt;So there are now three different versions of leaderboards in the various YDAB! versions: XBLIG, Standard Windows, and Steam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-46395236818336550?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/46395236818336550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/leaderboards-in-your-doodles-are-bugged.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/46395236818336550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/46395236818336550'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/leaderboards-in-your-doodles-are-bugged.html' title='Leaderboards in Your Doodles Are Bugged!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-2785683770458875391</id><published>2011-04-24T15:08:00.002+02:00</published><updated>2011-07-31T17:02:18.816+02:00</updated><title type='text'>YDAB! - The Vista Crisis</title><content type='html'>It's probably a tradition, that even with a software that has been working without problems for a long time during development and testing, a serious bug shows up just when the release date is getting close (or sometimes just &lt;i&gt;after&lt;/i&gt;&amp;nbsp;release).&lt;br /&gt;&lt;br /&gt;[Warning: This is about to get quite technical!]&lt;br /&gt;&lt;br /&gt;This also happened with Your Doodles Are Bugged!. With release scheduled for Monday, on the previous Thursday I get a message from Neil at Blitz 1UP, that the Steam version of the game crashes! But for me it always worked - what can this be? After some more testing by Neil (a lot more, actually - thanks again for that!) the details become clearer. The Steam version only crashes on Windows Vista. It works fine on Windows XP and Windows 7. And on Vista, the standard non-Steam version of the game works fine too. It is only the combination Steam-version + Vista where the game crashes. Which is also the reason why we didn't find this earlier. The game had been tested on Vista, but only the non-Steam version. And the Steam version had been tested too, but only on Windows 7.&lt;br /&gt;&lt;br /&gt;The kind of error messages that Neil reported led me to believe that this crash was related to calls into the Steam API. But to find out what was going on, I would have to test this myself.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Which meant that I needed access to a Vista machine. Being only a small indie developer, I do not have a large collection of computers with various OSes. And of the computers I have, none is running Vista (thank god!).&lt;br /&gt;So I ended up ripping out the system disk from my development workstation and temporarily replacing it with a spare disk I had lying around, on which I then installed Vista, VS C# Express and the XNA Game Studio 3.1. This alone was a huge undertaking. Vista installs are &lt;i&gt;so&lt;/i&gt;&amp;nbsp;slow! Especially if you then need to have SP 1 too (for GS 3.1). I think Vista downloaded and installed about 125 updates from Microsoft before it was ready to install SP1. And this takes &lt;i&gt;a lot&lt;/i&gt; of time!&lt;br /&gt;&lt;br /&gt;So a few hours later, I finally had a computer with Vista, and yes, I was able to reproduce the problem. I got the same crash and error messages that Neil had reported. Which was actually good, because reproducing a problem is the first step in fixing it.&lt;br /&gt;&lt;br /&gt;As said, my suspicion was that the crash was related to a Steam API call. And a quick run with the Debugger attached confirmed this: The game crashed when it called the achievement init function in my Steam wrapper DLL. In that init function, there was a call into the Steam API that returned NULL when actually it should not, so I ended up with trying to access a NULL pointer reference - with the expected&amp;nbsp;disastrous&amp;nbsp;results.&lt;br /&gt;&lt;br /&gt;But why did this call return NULL on Vista, when it worked fine (returning a proper non-NULL object) on Windows 7 and Windows XP?&lt;br /&gt;&lt;br /&gt;To be honest, I still don't know. I only know what I changed so that this &lt;i&gt;doesn't &lt;/i&gt;happen any longer.&lt;br /&gt;&lt;br /&gt;To explain this, I have to explain some background:&lt;br /&gt;&lt;br /&gt;The Steam API comes in form of a DLL that is written in unmanaged C++, plus some C++ header files. It can therefore not be used directly in a program that is written in managed C# (the language of XNA, which I also used for YDAB!). Instead you have to do &lt;a href="http://en.wikipedia.org/wiki/Platform_Invocation_Services"&gt;PInvoke&lt;/a&gt; calls, where you correctly marshal the arguments and return value of the function call. For complex C++ objects, this marshaling is very difficult (if even possible at all), so the usual solution, which I also chose, is to write a wrapper DLL in C++. In this wrapper, I have code that creates and uses the more complex C++ objects, and that exposes external functions in a way, that these functions are easy to call with PInvoke. So on the C# side, instead of having to deal with the complexities of the C++ objects (and how to marshal them), I only have to deal with the "nice" functions that I exposed in the wrapper DLL.&lt;br /&gt;&lt;br /&gt;Some of the Steam API functions however have such a trivial signature, that it is easy to call them with PInvoke directly, without the need for such a "nice" wrapper. For example there is a steam_init function that does not take any arguments and returns bool. Totally trivial to call with PInvoke.&lt;br /&gt;&lt;br /&gt;So for a handful of these trivial functions, I did not create stubs in my wrapper, but instead I called them directly from my C# code via PInvoke.&lt;br /&gt;&lt;br /&gt;And this, for some reason that I do not understand, created the problem. Or more precisely: There was no problem on Windows 7, which is why I was never aware of this during development. And there doesn't seem to be a problem on XP either, as Neil's testing showed. But on Vista, it just didn't work.&lt;br /&gt;&lt;br /&gt;The NULL pointer I mentioned was returned from a call into the Steam API that would normally return a pointer to an object. But only if you had previously called the steam_init function in the Steam API. Of course I had called &amp;nbsp;it (otherwise it wouldn't have worked on Windows 7 either), but I had called it like this:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First my C# code called the steam_init function in the steam_api.dll directly, via PInvoke.&lt;/li&gt;&lt;li&gt;After steam_init returned, my C# code then called the achievement init function in my SteamWrapper.dll, via PInvoke.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In this SteamWrapper, my C++ code then called a function in the Steam API to retrieve a certain object. This call returns NULL if steam_init has not been called before.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;This last call should normally return the object, but it returned NULL&amp;nbsp;- at least on Vista -&amp;nbsp;as if I had never called steam_init (which I however had, see the first bullet).&lt;br /&gt;&lt;br /&gt;A bit more testing showed me, that there was no problem if I added another call to steam_init directly in the achievement init function of my SteamWrapper code. Which sent me on the right track: It turns out, that if the call to steam_init happens via a direct PInvoke call into the steam_api.dll, but the the later call to another Steam API function happens from code in my SteamWrapper.dll, then on Vista this latter call behaves as if steam_init was never called.&lt;br /&gt;&lt;br /&gt;So my solution was to never call any function in steam_api.dll directly. Instead, even for the trivial functions like steam_init, I made stubs in my wrapper DLL, and all my calls would now go through the wrapper DLL. So I now have the following, slightly different flow:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First my C# code calls the steam_init stub in my SteamWrapper.dll, via PInvoke.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In the SteamWrapper, my C++ code then calls the real steam_init function in the steam_api.dll.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;After the steam_init stub returns, my C# code then calls the achievement init function in my SteamWrapper.dll, via PInvoke.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;In this SteamWrapper, my C++ code then calls a function in the Steam API to retrieve a certain object. And now this call no longer returns NULL!&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;And this works on Vista too. Crisis averted! :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-2785683770458875391?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/2785683770458875391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/ydab-vista-crisis.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/2785683770458875391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/2785683770458875391'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/ydab-vista-crisis.html' title='YDAB! - The Vista Crisis'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-5332214112538778300</id><published>2011-04-15T18:45:00.000+02:00</published><updated>2011-04-15T18:45:58.774+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Release Date for Your Doodles Are Bugged!</title><content type='html'>Finally I am able to announce the release date for Your Doodles Are Bugged!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DVSOGVRmyEM/Tah11J3sYWI/AAAAAAAAAEM/fOlQ8qR5SeQ/s1600/button.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-DVSOGVRmyEM/Tah11J3sYWI/AAAAAAAAAEM/fOlQ8qR5SeQ/s1600/button.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;YDAB! will be released on&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;April 25th, 2011 (&lt;/b&gt;&lt;b&gt;Easter Monday)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;And there will be an Easter surprise too! (which is however still secret...)&lt;br /&gt;&lt;br /&gt;This will be the version for &lt;b&gt;Windows PC&lt;/b&gt; of course (as the XBLIG version has been released since Feb. 2010 already). It will be released both on &lt;b&gt;Steam&lt;/b&gt; and as a &lt;b&gt;standard non-Steam version&lt;/b&gt;. Releases on other gaming portals will likely follow at a later time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-5332214112538778300?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/5332214112538778300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/release-date-for-your-doodles-are.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5332214112538778300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5332214112538778300'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/release-date-for-your-doodles-are.html' title='Release Date for Your Doodles Are Bugged!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-DVSOGVRmyEM/Tah11J3sYWI/AAAAAAAAAEM/fOlQ8qR5SeQ/s72-c/button.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-8867308319123129600</id><published>2011-04-06T21:05:00.000+02:00</published><updated>2011-04-06T21:05:58.685+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Achievements in Your Doodles Are Bugged!</title><content type='html'>The PC version of Your Doodles Are Bugged! comes with achievements. In the standard version, they are purely in-game achievements. But in the Steam version, they are of course real Steam achievements.&lt;br /&gt;&lt;br /&gt;And they look really cool in the Steam client, in my opinion (although I may be biased on account of seeing my own game in the Steam client is already very cool to begin with :-):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TBlUFW-VIgk/TZuMVOyAMVI/AAAAAAAAAEI/bUEP74a58BM/s1600/ydab-achievements.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-TBlUFW-VIgk/TZuMVOyAMVI/AAAAAAAAAEI/bUEP74a58BM/s1600/ydab-achievements.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;As you can see, there will be 21 achievements in total, 4 of which are secret achievements. Here are the other 17:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Journeyman&lt;/b&gt;: Reach the rank of Journeyman Doodler&lt;/li&gt;&lt;li&gt;&lt;b&gt;Master Doodler&lt;/b&gt;: Reach the rank of Master Doodler&lt;/li&gt;&lt;li&gt;&lt;b&gt;Campaigner&lt;/b&gt;: Complete all doodles of the main campaign&lt;/li&gt;&lt;li&gt;&lt;b&gt;Smoking Pen&lt;/b&gt;: Complete all main campaign doodles in a total time of under 3 hours&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pen of Steel&lt;/b&gt;: Solve enough doodles for a total completion time of more than 10 hours&lt;/li&gt;&lt;li&gt;&lt;b&gt;Knight in Shining Armor&lt;/b&gt;: Rescue ALL bugs in all main campaign doodles (except "Suicide Mission")&lt;/li&gt;&lt;li&gt;&lt;b&gt;Marathon&lt;/b&gt;: Solve all main campaign doodles in a single game sesion&lt;/li&gt;&lt;li&gt;&lt;b&gt;Life-Guard&lt;/b&gt;: Rescue a total of 10,000 bugs&lt;/li&gt;&lt;li&gt;&lt;b&gt;PWNED!&lt;/b&gt;: Beat the developer time in doodle 13, 17 or 18&lt;/li&gt;&lt;li&gt;&lt;b&gt;Deft Touch&lt;/b&gt;: Solve doodle 5 "Skydiving Lessons" with a single stroke&lt;/li&gt;&lt;li&gt;&lt;b&gt;Thrifty&lt;/b&gt;: Solve doodle 11 "Dancing On The Highwire" without running out of ink a single time&lt;/li&gt;&lt;li&gt;&lt;b&gt;No Regrets&lt;/b&gt;: Solve doodle 14 "Ghost From The Bottle" without using the eraser&lt;/li&gt;&lt;li&gt;&lt;b&gt;Quick 'n Slick&lt;/b&gt;: Solve doodle 15 "Things That Go Bump In The Night" in 2 minutes after removing the first barrier&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pacifist&lt;/b&gt;: Solve doodle 20 "Suicide Mission" without killing a single bug&lt;/li&gt;&lt;li&gt;&lt;b&gt;Work and Play&lt;/b&gt;: Create a new doodle and play through it&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mega-Collage&lt;/b&gt;: Create a new doodle with at least one element from every main campaign doodle&lt;/li&gt;&lt;li&gt;&lt;b&gt;Collector&lt;/b&gt;: Import a doodle that was created by another player&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-8867308319123129600?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/8867308319123129600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/achievements-in-your-doodles-are-bugged.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8867308319123129600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8867308319123129600'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/04/achievements-in-your-doodles-are-bugged.html' title='Achievements in Your Doodles Are Bugged!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-TBlUFW-VIgk/TZuMVOyAMVI/AAAAAAAAAEI/bUEP74a58BM/s72-c/ydab-achievements.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-1539096276948746909</id><published>2011-03-28T22:46:00.001+02:00</published><updated>2011-03-28T22:50:04.432+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Steam'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Your Doodles Are Bugged! is coming to Steam!</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-OjfAbYSwMHo/TZC1hz_MYEI/AAAAAAAAAEA/tvUqfMlbbjI/s1600/steamlogo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-OjfAbYSwMHo/TZC1hz_MYEI/AAAAAAAAAEA/tvUqfMlbbjI/s1600/steamlogo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;WOHOO! - The headline says it all! :-)&lt;br /&gt;&lt;br /&gt;This is probably not very important for anyone else, but for &lt;b&gt;me&lt;/b&gt;, it is a very big thing. &lt;a href="http://www.steampowered.com/"&gt;Steam&lt;/a&gt; simply is &lt;i&gt;the&lt;/i&gt;&amp;nbsp;downloadable PC game platform to be on, and I'm super happy that my little (buggy ;-) game was accepted by Valve.&lt;br /&gt;&lt;br /&gt;You might have wondered why I've been so mum about YDAB! development news lately, both here on the blog and on Twitter. After all, my last blog post was last year, and that wasn't even YDAB! related.&lt;/div&gt;&lt;br /&gt;It has driven me crazy not being able to write about all the exciting stuff that was happening (and there are still some things that I can't divulge yet, like the release date), but now everything has come far enough that I finally &lt;i&gt;can&lt;/i&gt;&amp;nbsp;talk about a few things. So let me give you a short history of how this unfolded.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZxcDnCQyMDY/TZC10HwXOkI/AAAAAAAAAEE/U75ey-Q6gvM/s1600/blitzlogo.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ZxcDnCQyMDY/TZC10HwXOkI/AAAAAAAAAEE/U75ey-Q6gvM/s1600/blitzlogo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Well, around the end of last year, when it looked like I had wrapped up all development for the YDAB! PC-version, we started looking into which game portals we wanted to approach about the YDAB! release. "We", that is the awesome people at &lt;a href="http://www.blitz1up.com/"&gt;Blitz 1UP&lt;/a&gt;, who are helping me with this. The portal of choice would of course be Valve's Steam, so that's where they pitched the game first. Only I couldn't talk about that, since at that point it was of course very uncertain how it would turn out.&lt;br /&gt;&lt;br /&gt;And then, actually quite quickly and much sooner than I had thought, we got the&lt;b&gt; green light from Valve!&lt;/b&gt; YDAB! would indeed be coming to Steam! You can imagine the victory dance I did when I got those news! :-)&lt;br /&gt;&lt;br /&gt;Only of course I &lt;i&gt;still&lt;/i&gt;&amp;nbsp;couldn't talk about it, since everything was still in a much too early stage.&lt;br /&gt;&lt;br /&gt;But behind the scenes I got busy... Remember my "The todo-list is now empty" tweet a while ago? - Ha! I should have know better than to twitter something like that! Suddenly I had a new set of tasks on the list: Integration with Steam, meaning the support for &lt;b&gt;Steam achievements&lt;/b&gt;, &lt;b&gt;leaderboards&lt;/b&gt; and &lt;b&gt;cloud storage&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;All very cool features that I absolutely wanted to have in my game, but it also meant learning how to use the Steam SDK (which, to complicate things, is in unmanaged C++, and YDAB! is XNA and thus in managed C#). And of course it also meant programming a lot of new stuff. Especially for the achievements, since of course I had to actually &lt;i&gt;have&lt;/i&gt;&amp;nbsp;some achievements first, before I could make them into Steam achievements.&lt;br /&gt;&lt;br /&gt;And that's what I've been busy with lately (well, and creating a lot of assets and marketing material, of course). While I couldn't twitter about it while I worked on this stuff, I'm planning to do a few blog posts in the near feature. Coming soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-1539096276948746909?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/1539096276948746909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2011/03/your-doodles-are-bugged-is-coming-to.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1539096276948746909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1539096276948746909'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2011/03/your-doodles-are-bugged-is-coming-to.html' title='Your Doodles Are Bugged! is coming to Steam!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-OjfAbYSwMHo/TZC1hz_MYEI/AAAAAAAAAEA/tvUqfMlbbjI/s72-c/steamlogo.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-301617383948874287</id><published>2010-12-23T19:05:00.003+01:00</published><updated>2011-01-20T23:04:42.543+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLIG'/><title type='text'>Global scoreboard component for XNA 4.0</title><content type='html'>I have now updated my global scoreboard component to make it compatible with XNA 4.0.&lt;br /&gt;&lt;br /&gt;Such global scoreboards are a XBLIG-workaround for the missing leaderboards. They use a peer-to-peer mechanism to distribute the scores via Xbox LIVE, from player to player. This here is my implementation for such a global scoreboard, now ready for XNA 4.0.&lt;br /&gt;&lt;br /&gt;Download the component for XNA 4.0 here:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.spyn-doctor.de/files/OnlineDataSyncManager-XNA4.0-20110120.zip"&gt;&lt;b&gt;OnlineDataSyncManager-XNA4.0-20110120.zip&lt;/b&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;See the readme.txt in the ZIP file for details about how the component works and how to integrate it into your game. You may also want to visit the &lt;a href="http://forums.create.msdn.com/forums/t/60475.aspx"&gt;thread about my component&lt;/a&gt; on the App Hub forum, for more useful information sprinkled through the questions and answers there.&lt;br /&gt;&lt;br /&gt;It was actually quite simple to make the component compatible with XNA 4.0: I just had to remove a statement where the Thread.Priority was set, and had to #ifdef a few Debug.Write statements so that they are only active in the Windows configuration. Everything else was already good for XNA 4.0.&lt;br /&gt;&lt;br /&gt;From now on, if I implement any further fixes or changes, I will only implement them in this XNA 4.0 version. I will no longer maintain the version for XNA 3.1 (but you can still download it from my&amp;nbsp;&lt;a href="http://spyn-doctor.blogspot.com/2010/09/global-scoreboard-component-for-xblig.html"&gt;original blog entry&lt;/a&gt;, if you absolutely want to).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-301617383948874287?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/301617383948874287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/12/global-scoreboard-component-for-xna-40.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/301617383948874287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/301617383948874287'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/12/global-scoreboard-component-for-xna-40.html' title='Global scoreboard component for XNA 4.0'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-9077308825420413746</id><published>2010-11-28T18:58:00.000+01:00</published><updated>2010-11-28T18:58:07.477+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>It's Bonus Time - Bonus Doodle Time!</title><content type='html'>I have now finished all 25 bonus doodles that will be included in the WinPC version of Your Doodles Are Bugged! These bonus doodles will be unlocked one after the other, as the player finishes the doodles in the main campaign.&lt;br /&gt;&lt;br /&gt;Here is a collage&amp;nbsp;showing all bonus doodles at once:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GtqBg93agkE/TPKW90sFzRI/AAAAAAAAADs/h1KfJRy59Rs/s1600/Bonus+Doodle+Collage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="288" ox="true" src="http://2.bp.blogspot.com/_GtqBg93agkE/TPKW90sFzRI/AAAAAAAAADs/h1KfJRy59Rs/s400/Bonus+Doodle+Collage.png" width="512" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;em&gt;&lt;span style="font-size: x-small;"&gt;(click for larger view)&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="center"&gt;﻿&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-9077308825420413746?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/9077308825420413746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/its-bonus-time-bonus-doodle-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/9077308825420413746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/9077308825420413746'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/its-bonus-time-bonus-doodle-time.html' title='It&apos;s Bonus Time - Bonus Doodle Time!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GtqBg93agkE/TPKW90sFzRI/AAAAAAAAADs/h1KfJRy59Rs/s72-c/Bonus+Doodle+Collage.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-3040756750653301623</id><published>2010-11-19T18:04:00.000+01:00</published><updated>2010-11-19T18:04:03.085+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Time-Lapse Video: Creating a Bonus Doodle</title><content type='html'>Below is a time-lapse video of how I created the bonus doodle #8 for the upcoming Windows PC version of Your Doodles Are Bugged!.&lt;br /&gt;&lt;br /&gt;The doodle is based on the &lt;a href="http://www.google.com/images?q=d%C3%BCrer+hare"&gt;famous picture of a hare&lt;/a&gt;, by Albrecht Dürer. I created it in Doodle Studio,&amp;nbsp;so everything you see in the video was done in the in-game editor.&amp;nbsp;I used an image of the hare&amp;nbsp;picture as a backdrop template, on which I then created the doodle, by&amp;nbsp;combining only existing elements from the doodle palette. Everything you see&amp;nbsp;in the video,&amp;nbsp;you will be able to do yourself in the game (well, if you are capabable of working at 4x time-lapse speed).&lt;br /&gt;&lt;br /&gt;This bonus doodle, and many others, will be available in Your Doodles Are Bugged! (WinPC) as unlockables, to play through, or to edit/change/experiment with in Doodle Studio.&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ehpmusnchdg?fs=1&amp;amp;hl=de_DE"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Ehpmusnchdg?fs=1&amp;amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-3040756750653301623?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/3040756750653301623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/time-lapse-video-creating-bonus-doodle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3040756750653301623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3040756750653301623'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/time-lapse-video-creating-bonus-doodle.html' title='Time-Lapse Video: Creating a Bonus Doodle'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-5318759769821449365</id><published>2010-11-04T23:16:00.000+01:00</published><updated>2010-11-04T23:16:44.899+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><title type='text'>A very special "Bug Report"</title><content type='html'>I just got a very special "list of bugs"&amp;nbsp;in YDAB!, from a concept artist at Blitz Games Studios. The&amp;nbsp;list was&amp;nbsp;in form of an image. It's so cute, I just &lt;em&gt;had&lt;/em&gt; to share it with you:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GtqBg93agkE/TNMwDfMotzI/AAAAAAAAADo/7Ur3zSTmpZI/s1600/bugs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" px="true" src="http://2.bp.blogspot.com/_GtqBg93agkE/TNMwDfMotzI/AAAAAAAAADo/7Ur3zSTmpZI/s1600/bugs.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-5318759769821449365?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/5318759769821449365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/very-special-bug-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5318759769821449365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5318759769821449365'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/very-special-bug-report.html' title='A very special &quot;Bug Report&quot;'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GtqBg93agkE/TNMwDfMotzI/AAAAAAAAADo/7Ur3zSTmpZI/s72-c/bugs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-1637391069803066388</id><published>2010-11-04T14:38:00.004+01:00</published><updated>2011-04-27T20:18:23.743+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Become a Tester of Your Doodles Are Bugged! for WinPC</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TNKxtaxHieI/AAAAAAAAADk/RmZxt_lgfY0/s1600/YDAB+Title+Image.bmp" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" px="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TNKxtaxHieI/AAAAAAAAADk/RmZxt_lgfY0/s1600/YDAB+Title+Image.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;Interested in becoming a pre-release tester of the Windows PC version of Your Doodles Are Bugged! ?&lt;br /&gt;&lt;br /&gt;Then go ahead and download the free&amp;nbsp;pre-release demo build below, install it on your Windows PC and start playing (and testing)!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;&lt;s&gt;Download Your Doodles Are Bugged! - 0.8 - Demo&lt;/s&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;i&gt;EDIT: I removed the link to the beta version, as the full game is now available. There's a &lt;a href="http://www.spyn-doctor.de/doodles/"&gt;free demo&lt;/a&gt; too.&lt;/i&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;Primarily I am interested in feedback about bugs and compatibility issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Did you have any problems with the installation?&lt;/li&gt;&lt;li&gt;Does the game start and run properly?&lt;/li&gt;&lt;li&gt;Any problems with the full screen mode?&lt;/li&gt;&lt;li&gt;Any problems with the mouse control?&lt;/li&gt;&lt;li&gt;If you have a pen tablet, try playing with the pen, any problems with that?&lt;/li&gt;&lt;/ul&gt;All feedback (also about other issues) is welcome. Please see my &lt;a href="http://www.spyn-doctor.de/contact.html"&gt;contact page&lt;/a&gt;&amp;nbsp;for my email address&amp;nbsp;(or just write a comment&amp;nbsp;to this post).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;EDIT: The latest demo is now version 0.8.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-1637391069803066388?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/1637391069803066388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/become-tester-of-your-doodles-are.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1637391069803066388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1637391069803066388'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/11/become-tester-of-your-doodles-are.html' title='Become a Tester of Your Doodles Are Bugged! for WinPC'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GtqBg93agkE/TNKxtaxHieI/AAAAAAAAADk/RmZxt_lgfY0/s72-c/YDAB+Title+Image.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-6828455016255698163</id><published>2010-10-25T18:55:00.003+02:00</published><updated>2010-10-25T22:55:39.682+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Improvements of Magic Pen in YDAB! for PC</title><content type='html'>In the upcoming PC version of Your Doodles Are Bugged!, I made some improvements to the magic pen, which you can&amp;nbsp;check out&amp;nbsp;in the video below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The pen now rotates slightly to the right when drawing and to the left when erasing.&lt;/li&gt;&lt;li&gt;There's now an animated rainbow color effect in the ink window: When not drawing or erasing, the color effect appears randomly every now and then. When drawing, the color effect runs in the direction of the pen's tip, to show the ink flowing out. When erasing, it runs in reverse direction, to show the ink flowing back in.&lt;/li&gt;&lt;li&gt;There's now also a very slight additional frame around the ink window to make it stand out a (tiny) bit more.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qIrjid97qlc?fs=1&amp;amp;hl=de_DE"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qIrjid97qlc?fs=1&amp;amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-6828455016255698163?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/6828455016255698163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/10/improvements-of-magic-pen-in-ydab-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6828455016255698163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6828455016255698163'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/10/improvements-of-magic-pen-in-ydab-for.html' title='Improvements of Magic Pen in YDAB! for PC'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-8932215782860299406</id><published>2010-09-21T18:28:00.001+02:00</published><updated>2010-09-21T18:29:19.077+02:00</updated><title type='text'>Global Leaderboard for YDAB! on Windows</title><content type='html'>With the help of the good folks at Blitz 1UP, who are taking care of the server side, I am currently adding support for a global leaderboard to the Windows version of Your Doodles Are Bugged!.&lt;br /&gt;&lt;br /&gt;In the XBLIG version, there are of course already global record lists, using the peer-to-peer score distribution system I have recently &lt;a href="http://spyn-doctor.blogspot.com/2010/09/global-scoreboard-component-for-xblig.html"&gt;made public&lt;/a&gt;&amp;nbsp;here on my blog.&lt;br /&gt;&lt;br /&gt;So I am happy that the Windows version will also have such a feature. Of course on Windows, there&amp;nbsp;is the&amp;nbsp;problem&amp;nbsp;of how to uniquely identify different players.&lt;br /&gt;&lt;br /&gt;For the YDAB! leaderboard on Windows, &lt;strong&gt;players will be indentified with their Facebook accounts&lt;/strong&gt;. Which of course means, that to make entries on the leaderboard, you need a Facebook account (and you need to grant the game&amp;nbsp;some access to the account data). But I guess in these times, and especially&amp;nbsp;in the target audience of players that like games like YDAB!,&amp;nbsp;most players will have such an account anyway. And people who are not on Facebook will only miss out on the global leaderboard - all other features of YDAB!&amp;nbsp;will of course be&amp;nbsp;available for them too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-8932215782860299406?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/8932215782860299406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/09/global-leaderboard-for-ydab-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8932215782860299406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8932215782860299406'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/09/global-leaderboard-for-ydab-on-windows.html' title='Global Leaderboard for YDAB! on Windows'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-5271235337560207722</id><published>2010-09-12T18:57:00.005+02:00</published><updated>2010-12-23T19:08:36.628+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLIG'/><title type='text'>Global scoreboard component for XBLIG, by Spyn Doctor</title><content type='html'>On the XNA forums and Twitter, there have recently been a few postings of&amp;nbsp;developers&amp;nbsp;who did not have much luck integrating&amp;nbsp;global scoreboards into their XBLIGs. Such global scoreboards use a peer-to-peer mechanism to distribute scores, to approximate Xbox LIVE leaderboards, which are not available for XBLIGs.&lt;br /&gt;&lt;br /&gt;So I decided to finally tidy up my code (mostly comment and describe it) and make my own global scoreboard implementation public, which I have used in &lt;a href="http://www.spyn-doctor.de/doodles/"&gt;Your Doodles Are Bugged!&lt;/a&gt; and &lt;a href="http://www.spyn-doctor.de/kuchibi/"&gt;Kuchibi&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;EDIT: This is the scoreboard version for XNA 3.1 (which I no longer maintain with bug fixes or changes). &lt;a href="http://spyn-doctor.blogspot.com/2010/12/global-scoreboard-component-for-xna-40.html"&gt;You can find the version for XNA 4.0 here&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You can download it here: &lt;a href="http://www.spyn-doctor.de/files/OnlineDataSyncManager-XNA3.1-20101223.zip"&gt;OnlineDataSyncManager-XNA3.1-20101223.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The ZIP file contains a readme.txt that explains how the component works and how to integrate it into your own game. See also the comments in the source code for more details.&lt;br /&gt;&lt;br /&gt;You can use this code however you want, but of course the usual disclaimer comes with this code: Provided "as is", no warranties whatsoever, use at your own risk, etc. etc. See the&amp;nbsp;readme file for the full legal mumbo-jumbo, if you feel masochistic.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;EDIT: I have updated the ZIP archive with some changes. Some minor bug fixes, plus I added optional friends-list filtering to the sample implementation for a global scoreboard. And the readme.txt now contains an additional "how-to" about how to write an UI&amp;nbsp;to display the scores from&amp;nbsp;this sample scoreboard.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;EDIT 2: The first game (that I know of) that uses my global scoreboard has now been released on XBLIG:&amp;nbsp;&lt;a href="http://marketplace.xbox.com/games/media/66acd000-77fe-1000-9115-d80258550684/"&gt;Explosionade&lt;/a&gt; from &lt;a href="http://www.mommysbestgames.com/"&gt;Mommy's Best Games&lt;/a&gt;.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-5271235337560207722?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/5271235337560207722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/09/global-scoreboard-component-for-xblig.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5271235337560207722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/5271235337560207722'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/09/global-scoreboard-component-for-xblig.html' title='Global scoreboard component for XBLIG, by Spyn Doctor'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-7705357735591317315</id><published>2010-08-27T19:34:00.000+02:00</published><updated>2010-08-27T19:34:14.225+02:00</updated><title type='text'>Player Creativity - Beware the Angry Granny!</title><content type='html'>One of the things I am looking forward to the most, regarding the release of Your Doodles Are Bugged! for PC, is to see what crazy and creative user created doodles the players will come up with in Doodle Studio.&lt;br /&gt;&lt;br /&gt;When&amp;nbsp;releasing a game, it&amp;nbsp;is already immensely satisfying to know that "out there" are a lot of people playing and enyoing &lt;em&gt;my&lt;/em&gt; game. But, for me at least, even better is when players start to get creative and do new and unexpected things with my game. Of course not every game lends itself to such player creativity, but YDAB! with Doodle Studio surely does. I am &lt;em&gt;so&lt;/em&gt; looking forward to see what people will create!&lt;br /&gt;&lt;br /&gt;Here is a first example: &lt;strong&gt;Angry Granny&lt;/strong&gt;, a doodle created by Kory, from &lt;a href="http://www.blitzgamesstudios.com/"&gt;Blitz Games Studios&lt;/a&gt;, during one of his beta testing sessions. I had a good laugh when he first sent it over. BTW,&amp;nbsp;it is assembled solely out of predefined doodle elements!&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/THf1JYjVGzI/AAAAAAAAADU/oCzeX2hQApU/s1600/AngryGranny.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" ox="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/THf1JYjVGzI/AAAAAAAAADU/oCzeX2hQApU/s400/AngryGranny.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;Angry Granny&lt;/em&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;(click for larger view)&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;Kory also came up with the "Flying Machine", which is totally awesome: He created a contraption out of the predefined doodle elements that causes two bugs to "cooperate" in such a way, that they help themselves to "fly" over the whole width of the doodle, without needing any ink to land on.&amp;nbsp;If I hadn't seen it myself, I would have said&amp;nbsp;it's impossible. Of course the bugs will simply fall down if there is no ink to walk or jump on. No way around it!&lt;br /&gt;&lt;br /&gt;Hah! The "Flying Machine" taught me better!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-7705357735591317315?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/7705357735591317315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/player-creativity-beware-angry-granny.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7705357735591317315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7705357735591317315'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/player-creativity-beware-angry-granny.html' title='Player Creativity - Beware the Angry Granny!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GtqBg93agkE/THf1JYjVGzI/AAAAAAAAADU/oCzeX2hQApU/s72-c/AngryGranny.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-8137296769914720273</id><published>2010-08-19T19:59:00.000+02:00</published><updated>2010-08-19T19:59:22.090+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Doodle Studio - Demo Video</title><content type='html'>The new Doodle Studio, which will be part of the upcoming PC version of Your Doodles Are Bugged!, is almost complete. So I took the time and recorded a video of myself playing around with it, demonstrating most of the features.&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aYRGW-LWNoM?fs=1&amp;amp;hl=de_DE&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aYRGW-LWNoM?fs=1&amp;amp;hl=de_DE&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Yes I know - the video is a bit lengthy. But there is a lot in it:&lt;br /&gt;&lt;br /&gt;In the first part, I show how to create a doodle out of the standard lines and "squiggles", including poisoned lines and gravity invert lines.&lt;br /&gt;Then I use the pre-defined doodle elements to create a new doodle by combining them like in a collage. These doodle elements come directly from the original doodles in the game, and the player has to unlock them by playing through the standard&amp;nbsp;doodle levels. Each time he completes a&amp;nbsp;new level, the elements from that level will become available in the doodle studio.&lt;br /&gt;In the third part I load a "flat"&amp;nbsp;PNG image file with a simple drawing that I created earlier in a drawing program. The game automatically detects the black lines in that drawing and uses them as the black "ink" that the bugs can crawl and jump on.&lt;br /&gt;In the last part, I combine the loaded PNG&amp;nbsp;file with some of the pre-defined doodle elements, showing how seamlessly the image and the pre-defined elements can be used together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-8137296769914720273?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/8137296769914720273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/doodle-studio-demo-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8137296769914720273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/8137296769914720273'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/doodle-studio-demo-video.html' title='Doodle Studio - Demo Video'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-7403346781991601947</id><published>2010-08-08T21:15:00.000+02:00</published><updated>2010-08-08T21:15:23.085+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Handling of large background textures in YDAB! on PC</title><content type='html'>Your Doodles Are Bugged!&amp;nbsp;uses background textures for the doodles&amp;nbsp;that have a size of 3840 x 2160 pixels. On the Xbox, that was no problem, as it is able to handle textures of sizes up to 8192 x 8192.&lt;br /&gt;&lt;br /&gt;But on the PC, the texture size that a given graphics card can handle varies. Quite a lot of graphics cards can only handle textures of up to 2048 x 2048. Too small for the large doodle background textures. So already a while ago I created a custom texture processor for the XNA content pipeline which splits the 3840 x 2160 background textures into 4 smaller textures. I also created a LargeTexture class that encapsulates these four textures so that for the rest of the code it still looks like there is only one very large texture.&lt;br /&gt;&lt;br /&gt;The thing is, that I split the large texture in the middle, i.e. into 4 textures of size 1920 x 1080. This worked fine on my workstation, but when I recently tested YDAB! on my little netbook, it crashed. Previously I had been able to run it without problems, but there had been one specific change since then: I had added mipmaps to these textures (generating them in my custom processor). If you've dealt with mipmaps before, you probably already see the problem: On many graphics cards, textures with mipmaps must have sizes that are a power of 2. And neither 1920 nor 1080 is a power of 2.&lt;br /&gt;&lt;br /&gt;To work around this problem, I have now changed my custom texture processor to split the large texture in a different, uneven way, with a bit of overhead. There's still a 2x2 grid of four textures, but those do not have equal sizes anymore, and together they are slightly larger than the required 3840 x 2160 pixels:&lt;br /&gt;&lt;br /&gt;The two textures at the top-left and top-right are 2048 x 2048, but in the top-right texture, only the 1792 pixel columns at the left are used, so there is an unused overhead of 256 pixel columns.&lt;br /&gt;The two textures at the bottom-left and bottom-right are 2048 x 128,&amp;nbsp;but both use only the top 112 rows, i.e. there are 16 rows unused at the bottom. And the bottom-right texture also has the 256 unused columns at the right, like the top-right texture.&lt;br /&gt;&lt;br /&gt;There's now a bit of overhead of unused pixels, but all textures now have width and height sizes that are a power of 2, and they are still inside the 2048 maximum range. Hopefully this will now be compatible with a wide range of graphics cards.&lt;br /&gt;&lt;br /&gt;Oh, and it runs on my netbook again. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-7403346781991601947?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/7403346781991601947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/handling-of-large-background-textures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7403346781991601947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7403346781991601947'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/handling-of-large-background-textures.html' title='Handling of large background textures in YDAB! on PC'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-547861902877860183</id><published>2010-08-03T19:52:00.001+02:00</published><updated>2010-08-08T21:15:41.933+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Blitz 1UP Signs Your Doodles Are Bugged!</title><content type='html'>Now that the &lt;a href="http://www.spyn-doctor.de/doodles/pressrelease20100803.html"&gt;press release&lt;/a&gt; is out, I can finally write about this: For its PC release, Your Doodles Are Bugged! has been signed by &lt;a href="http://www.blitz1up.com/"&gt;Blitz 1UP&lt;/a&gt; - and other possible platforms for release are also being looked into. &lt;span style="font-size: xx-small;"&gt;(And if &lt;em&gt;that&lt;/em&gt; doesn't sound good? ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blitz 1UP is a great initiative from &lt;a href="http://www.blitzgamesstudios.com/"&gt;Blitz Games Studios&lt;/a&gt;. If I may quote from the press release:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TFhTQ7ySIOI/AAAAAAAAADM/rYuOcIZN_0E/s1600/blitz1UPLogo.png" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" bx="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TFhTQ7ySIOI/AAAAAAAAADM/rYuOcIZN_0E/s320/blitz1UPLogo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;em&gt;The Blitz 1UP initiative was launched in 2008 as an outlet for small, independent teams to bring their titles - finished and unfinished - to market on XBLA, PSN, PC, WiiWare, iPhone Flash and Mac. The scheme offers tailor-made packages to indie developers including PR, QA and access to its established distribution channels. The initiative provides a wide range of services, from design and production advice through to assistance with finding distribution and publishing partners.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Since I initially approached Blitz 1UP a few months ago, the&amp;nbsp;people from Blitz have always been very friendly, supportive and of great help. I am very happy indeed that my game was accepted into this great initiative, where already a few other great XBLIGs have found a "second home away from the Xbox", like for example&amp;nbsp;&lt;a href="http://www.blitz1up.com/Clover"&gt;Clover: A&amp;nbsp;Curious Tale&lt;/a&gt; from&amp;nbsp;&lt;a href="http://www.binarytweed.com/"&gt;Binary Tweed&lt;/a&gt; and, not yet released, &lt;a href="http://www.mommysbestgames.com/weaponofchoice.html"&gt;Weapon Of Choice&lt;/a&gt; from &lt;a href="http://www.mommysbestgames.com/"&gt;Mommys Best Games&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This are exciting times for the little bugs too, I can tell you. I can hardly concentrate to write this, with all the squeaking and "Bingo!" and "Yippie!" shouts going on!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-547861902877860183?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/547861902877860183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/blitz-1up-signs-your-doodles-are-bugged.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/547861902877860183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/547861902877860183'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/08/blitz-1up-signs-your-doodles-are-bugged.html' title='Blitz 1UP Signs Your Doodles Are Bugged!'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GtqBg93agkE/TFhTQ7ySIOI/AAAAAAAAADM/rYuOcIZN_0E/s72-c/blitz1UPLogo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-7334772219259244425</id><published>2010-07-18T17:58:00.000+02:00</published><updated>2010-07-18T17:58:30.503+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>Some Details about the new YDAB! Doodle Studio</title><content type='html'>Feels like I have come far enough with the implementation of Doodle Studio to share some details about how it will work.&lt;br /&gt;&lt;br /&gt;When creating a new doodle, the user will have the choice of starting off with a blank white canvas or to load an image file as the initial doodle. In both cases, the user will then be able to place doodle elements from the YDAB doodles onto this canvas, to complete his own doodle. This allows for different styles when creating a doodle: You can either create the whole doodle out of the predefined YDAB doodle elements, or you can&amp;nbsp;pre-draw the whole doodle in a graphics application or drawing program of your choice, and only load it into Doodle Studio. Or you combine the two methods.&lt;br /&gt;&lt;br /&gt;When placing the predefined doodle elements into your own doodle, you have the choice of a large selection of elements from the YDAB doodles.&amp;nbsp;But: You will only be allowed to use elements from YDAB levels that you have already solved. So there's now additional motivation to play through&amp;nbsp;all levels (and to solve the secret of the blue bug), as&amp;nbsp;each complete level will give you access to more doodle elements for your own doodles.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GtqBg93agkE/TEMiXAHN8eI/AAAAAAAAAC0/iNqY8QQ8uzs/s1600/palette.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" hw="true" src="http://3.bp.blogspot.com/_GtqBg93agkE/TEMiXAHN8eI/AAAAAAAAAC0/iNqY8QQ8uzs/s400/palette.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;em&gt;A page from the doodle elements palette,&lt;/em&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;showing the elements from the first eight doodles.&lt;br /&gt;(Click for larger view.)&lt;/em&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;To work with&amp;nbsp;the elements in your doodle, you have the usual tools at your disposal: Select one or several elements by clicking or with a rubber-band selector. Move, rotate or flip elements, or&amp;nbsp;copy, delete, pull-to-front or send-to-back, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TEMiXbH9zmI/AAAAAAAAAC8/noKpaWcsZ9s/s1600/toolbar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="30" hw="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TEMiXbH9zmI/AAAAAAAAAC8/noKpaWcsZ9s/s400/toolbar.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;em&gt;The toolbar in Doodle Studio.&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;However you arrange all the doodle elements and/or combine them with a pre-drawn background doodle, as the result, the game will create a single doodle from this and will automatically detect where there is black ink in the doodle (i.e. ink that is a barrier for bugs and that bugs can walk on), in comparison to non-ink areas (colors etc.) that are no barriers for the bugs. And yes, this ink-detection works for the imported background image too, as long as you used black ink on relatively light background when you created it (similar to the original doodles).&lt;br /&gt;&lt;br /&gt;You will also be required to place at least one bug into the doodle (and you can place a lot more than only one if you want) and at least one honey pot (again, you can have several honey pots if you want).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GtqBg93agkE/TEMicB3X--I/AAAAAAAAADE/0vjSn7U1rfo/s1600/doodle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" hw="true" src="http://1.bp.blogspot.com/_GtqBg93agkE/TEMicB3X--I/AAAAAAAAADE/0vjSn7U1rfo/s400/doodle.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;em&gt;A simple user created doodle: The rather crudely drawn mountains, sun and hot air ballon and the blue frame are from the loaded background image. The honey pots, bugs, little houses and the circle of funny faces have been created in Doodle Studio, from doodle elements.&lt;br /&gt;(Click for larger view.)&lt;/em&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Of course you will be able to save your own creation. And you will be able to export a user created doodle to share with friends (or whoever else you like) and you can import user created doodles from other people to play through, or to edit them yourself.&lt;/div&gt;As a little special: While you will be able to import any user created doodle, you will only be able to actually open it (to play or edit) if the maximum level that the doodle's elements come from is not higher than the latest level that you have already solved. So if you get a user created doodle from a friend who has used elements from level 18 (and all other elements are from lower levels), then you can only open this doodle if you too have already solved level 18. Again, this gives the player additional motivation to solve all levels, to be able to open all user created doodles from other users.&lt;br /&gt;&lt;br /&gt;From playing around with the Doodle Studio in its current state, I can already say that it is great fun to create your own doodles from the predefined elements&amp;nbsp;(and get creative and combine them in unusual/surprising ways), then place a few honey pots into the creation and a lot of bugs, and let the bugs loose.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-7334772219259244425?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/7334772219259244425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/some-details-about-new-ydab-doodle.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7334772219259244425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/7334772219259244425'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/some-details-about-new-ydab-doodle.html' title='Some Details about the new YDAB! Doodle Studio'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GtqBg93agkE/TEMiXAHN8eI/AAAAAAAAAC0/iNqY8QQ8uzs/s72-c/palette.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-6926321632444538116</id><published>2010-07-08T22:58:00.002+02:00</published><updated>2010-07-08T22:59:46.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>New Feature in YDAB! for PC: Doodle Studio</title><content type='html'>If you know YDAB! from XBLIG,&amp;nbsp;and if you took a close look at the new level select screen for the PC version (which I posted at the end of my &lt;a href="http://spyn-doctor.blogspot.com/2010/07/ydab-for-pc-with-new-levels.html"&gt;previous blog entry&lt;/a&gt;), then you might&amp;nbsp;have&amp;nbsp;noticed that in addition&amp;nbsp;to the four new level icons,&amp;nbsp;the level select screen is now also sporting the following two new icons:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TDY7YyhgaRI/AAAAAAAAACM/3sTkRUhEweg/s1600/frePlay.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TDY7YyhgaRI/AAAAAAAAACM/3sTkRUhEweg/s320/frePlay.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This is the new access icon for the free-play arena.&amp;nbsp;Of course&amp;nbsp;you already know the free-play arena from the XBLIG version, only there it was accessed via the X-button on the Xbox gamepad. In the PC version it will be&amp;nbsp;accessed via this new icon instead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TDY7btfNFcI/AAAAAAAAACU/L7_9p5aCU9c/s1600/doodleStudio.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TDY7btfNFcI/AAAAAAAAACU/L7_9p5aCU9c/s320/doodleStudio.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This second new icon is more interesting, because it gives access to a new feature that is not included in the XBLIG version:&amp;nbsp;It is the icon for the new &lt;strong&gt;Doodle Studio&lt;/strong&gt;. In the doodle studio, the player will be able to &lt;strong&gt;create his own doodles&lt;/strong&gt; (and export and share them with friends). This new feature is currently under development. I'll be posting more details about it as development progresses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-6926321632444538116?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/6926321632444538116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/new-feature-in-ydab-for-pc-doodle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6926321632444538116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/6926321632444538116'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/new-feature-in-ydab-for-pc-doodle.html' title='New Feature in YDAB! for PC: Doodle Studio'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_GtqBg93agkE/TDY7YyhgaRI/AAAAAAAAACM/3sTkRUhEweg/s72-c/frePlay.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-1096950150530765507</id><published>2010-07-03T14:03:00.000+02:00</published><updated>2010-07-03T14:03:59.406+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>YDAB! for PC With New Levels</title><content type='html'>The PC version of YDAB! will have&amp;nbsp;four new&amp;nbsp;levels in comparison&amp;nbsp;to the XBLIG version. I inserted these new doodles in the early phase of the game, to provide for a gentler difficulty curve than in the XBLIG version.&amp;nbsp;Here are a few&amp;nbsp;cut-out details&amp;nbsp;from these new doodles:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GtqBg93agkE/TC8fpvYJFUI/AAAAAAAAABM/e_KwaYEI-4k/s1600/doodle5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://1.bp.blogspot.com/_GtqBg93agkE/TC8fpvYJFUI/AAAAAAAAABM/e_KwaYEI-4k/s320/doodle5.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GtqBg93agkE/TC8fvqSdEHI/AAAAAAAAABU/9urfp9Fs0Ck/s1600/doodle6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://1.bp.blogspot.com/_GtqBg93agkE/TC8fvqSdEHI/AAAAAAAAABU/9urfp9Fs0Ck/s320/doodle6.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_GtqBg93agkE/TC8fyBZcu7I/AAAAAAAAABc/JKw60BQk1es/s1600/doodle9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://2.bp.blogspot.com/_GtqBg93agkE/TC8fyBZcu7I/AAAAAAAAABc/JKw60BQk1es/s320/doodle9.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_GtqBg93agkE/TC8fzlRYKEI/AAAAAAAAABk/GGfkijdIawU/s1600/doodle11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://4.bp.blogspot.com/_GtqBg93agkE/TC8fzlRYKEI/AAAAAAAAABk/GGfkijdIawU/s320/doodle11.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;You&amp;nbsp;may wonder why I only add those four new doodles now, in the PC version, and why I didn't already include them in the XBLIG version. After all, having a gentler difficulty curve would be good thing there too, right?&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Well, there are several reasons for this, actually. The main reason is "&lt;strong&gt;80 MSP&lt;/strong&gt;". On XBLIG, to be allowed to be sold for 80 MSP, a game must be below 50 MB in size. And I had already&amp;nbsp;fully used up this size with the doodles that I included in the XBLIG version. There simply wasn't room for any more doodles.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;But then I could just have made some of the other doodles easier, for a gentler difficulty curve? Well, I had considered this, but that would have meant to take out some of the more interesting (and more difficult) doodles later in the game (to stay below 50 MB), a&amp;nbsp;thought which I didn't really like.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And I had to weigh this against the typical trial experience on XBLIG. An XBLIG trial game expires after 8 minutes (at least that's the current trial duration - in the early days of XBLIG, then called "community games", it was only 4 minutes!). Already with the 8 levels that are available in the current XBLIG version of YDAB!, I don't think that any player who plays the trial for the very first time will be able to go through all 8 levels in these 8 minutes. But he &lt;em&gt;may&lt;/em&gt; start the trial at least a second time, if he is interested but not convinced yet. The trial version saves your progress, so in order to convince a player that YDAB! is fun, I wanted to have some of the interesting features which appear in the later levels to already be available in the trial levels. So already in the trial levels, the limited ink, the deadly/poisonous floor and the teleport portals are introduced. If I also had wanted to include more easier levels, then a player would probably have to restart the trial several times to even reach these later, more interesting levels. Something which I think is highly unlikely - a player either already likes an XBLIG during the first trial session, or he gives up on it. He &lt;em&gt;may&lt;/em&gt; start a second trial, if you are lucky, but a third/fourth trial attempt? I don't think so...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Now in the PC version, the trial experience if very different, so here I am free to add a few more "easier" doodles in the early phase of the game.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;And&amp;nbsp;of course I also had to integrate these new doodles into the level select screen, which now looks like this:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GtqBg93agkE/TC8golehs6I/AAAAAAAAAB0/E9TTp-fKwg4/s1600/levelSelect.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" rw="true" src="http://1.bp.blogspot.com/_GtqBg93agkE/TC8golehs6I/AAAAAAAAAB0/E9TTp-fKwg4/s320/levelSelect.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-1096950150530765507?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/1096950150530765507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/ydab-for-pc-with-new-levels.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1096950150530765507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/1096950150530765507'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/07/ydab-for-pc-with-new-levels.html' title='YDAB! for PC With New Levels'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GtqBg93agkE/TC8fpvYJFUI/AAAAAAAAABM/e_KwaYEI-4k/s72-c/doodle5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-4016163482402279859</id><published>2010-06-29T18:02:00.001+02:00</published><updated>2010-06-29T18:08:17.352+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YDAB'/><category scheme='http://www.blogger.com/atom/ns#' term='PC'/><title type='text'>YDAB! coming to the PC</title><content type='html'>So what am I actually developing at the moment, what is this DevLog (currently) about?&lt;br /&gt;&lt;br /&gt;If you follow my &lt;a href="http://twitter.com/spyndoctorgames"&gt;Twitter&lt;/a&gt;, you might remember that back in early May, I twittered that I had put my latest project "Bugs in Doodle Hell" on hold because of an exciting new opportunity that turned up for Your Doodles Are Bugged!.&lt;br /&gt;&lt;br /&gt;Back then, I wasn't really able to talk about details, and unfortunately that's&amp;nbsp;partially still the case, but you probably then also saw what I twittered in the following weeks, about playing YDAB! with a pen tablet, implementing mouse-clickable buttons, implementing text input via keyboard and&amp;nbsp;creating new doodles and new art assets, including this one:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_GtqBg93agkE/TCZylDIgzyI/AAAAAAAAABE/BEbld7E0Rr4/s1600/100418795%5B1%5D.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" ru="true" src="http://1.bp.blogspot.com/_GtqBg93agkE/TCZylDIgzyI/AAAAAAAAABE/BEbld7E0Rr4/s320/100418795%5B1%5D.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After all this, it&amp;nbsp;therefore probably does&amp;nbsp;not come as a surprise to you if I&amp;nbsp;now officially announce an upcoming &lt;strong&gt;Windows PC version&lt;/strong&gt; of Your Doodles Are Bugged!&lt;br /&gt;&lt;br /&gt;And the good news is, that it also seems&amp;nbsp;that I have found a very good partner for this, who will help me&amp;nbsp;with publishing, distribution and marketing (in addition to other help). If everything goes as planned, I will soon be able to say more.&lt;br /&gt;&lt;br /&gt;I will&amp;nbsp;soon do a few posts with more details about&amp;nbsp;some of the stuff that I changed and implemented for the PC version of YDAB!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-4016163482402279859?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/4016163482402279859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/my-current-project.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/4016163482402279859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/4016163482402279859'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/my-current-project.html' title='YDAB! coming to the PC'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GtqBg93agkE/TCZylDIgzyI/AAAAAAAAABE/BEbld7E0Rr4/s72-c/100418795%5B1%5D.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-3468924877659247286</id><published>2010-06-27T15:24:00.000+02:00</published><updated>2010-06-27T15:24:12.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><title type='text'>XNA and Crysis</title><content type='html'>Every now and then someone comes into the &lt;a href="http://forums.xna.com/"&gt;XNA forums&lt;/a&gt; and asks a question like this:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;XNA seems to be all right, but is it possible to create a top-quality game like Crysis with XNA?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none;"&gt;This&amp;nbsp;is a little bit like if a person walks into the local outdoor shop, takes a pair of&amp;nbsp;trekking boots from the shelf and then asks the sales person: &lt;em&gt;These boots seem to be all right, but is it possible to climb Mt. Everest with them?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_GtqBg93agkE/TCYmiZUl2YI/AAAAAAAAAA8/vZI6FOwwwDs/s1600/2004-07-29+%40+12.47.52.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" ru="true" src="http://3.bp.blogspot.com/_GtqBg93agkE/TCYmiZUl2YI/AAAAAAAAAA8/vZI6FOwwwDs/s320/2004-07-29+%40+12.47.52.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;(&lt;em&gt;Not&lt;/em&gt; Mt. Everest!)&lt;/div&gt;&lt;br /&gt;So what's wrong with that question then?&lt;br /&gt;&lt;br /&gt;First of all, even though it surely is technically possible to climb Mt. Everest with standard hiking boots, the only possible answer that a responsible sales person could give is of course "Well, it is technically possible, but really, for this you need professional climbing/mountaineering-boots". Similarly with XNA: While technically you can do everything in XNA and managed C# that the Crysis devs do with whatever framework they are using and unmanaged C++, the only responsible answer would be "Well, it is technically possible, but for such a demanding game as Crysis, you really would want to avoid the limits of managed C#, at least for the current hardware generation".&lt;br /&gt;&lt;br /&gt;But, what &lt;em&gt;really&lt;/em&gt; is interesting&amp;nbsp;about that question is, that the answer is totally irrelevant for any person who has to ask it in the first place!&lt;br /&gt;&lt;br /&gt;Anyone with the actual skills and experience to climb Mt. Everest would never have to ask this question in an outdoor shop. He would already know this himself. And anyone who doesn't know this himself is most likely lacking the necessary skills for such an expedition anyway, so for him it is irrelevant if you can climb Mt. Everest in these boots or not. He will&amp;nbsp;encounter&amp;nbsp;his physical&amp;nbsp;(and other) limits long before he gets high enough so that his boots would become a problem. And it is just the same with the question about XNA and Crysis.&lt;br /&gt;&lt;br /&gt;So if you are about to get into game programming and this question about XNA is totally bugging you: Forget it and just get started on your first game. Rest assured,&amp;nbsp;if or if not you can do something like Crysis with XNA&amp;nbsp;won't be a problem for you for a long time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-3468924877659247286?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/3468924877659247286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/xna-and-crysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3468924877659247286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/3468924877659247286'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/xna-and-crysis.html' title='XNA and Crysis'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GtqBg93agkE/TCYmiZUl2YI/AAAAAAAAAA8/vZI6FOwwwDs/s72-c/2004-07-29+%40+12.47.52.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4836905228895499705.post-4148185894347591242</id><published>2010-06-26T16:51:00.001+02:00</published><updated>2010-06-26T17:33:58.620+02:00</updated><title type='text'>The doctor is [ IN ] - Spyn Doctor Games DevLog started</title><content type='html'>So there I was: Having been an indie games creator for a while, &lt;a href="http://www.spyn-doctor.de/goldenTangram/"&gt;with&lt;/a&gt; &lt;a href="http://www.spyn-doctor.de/kuchibi/"&gt;three&lt;/a&gt; &lt;a href="http://www.spyn-doctor.de/doodles/"&gt;published&lt;/a&gt; Xbox LIVE Indie Games under my belt - but still no development blog. That is something that really &lt;em&gt;had&lt;/em&gt; to be fixed! So here I go, starting my development blog.&lt;br /&gt;&lt;br /&gt;But what do you write in such a first blog entry? How to open the devlog?&lt;br /&gt;&lt;br /&gt;I think I'll just start with a short description of myself and what I do: Spyn Doctor Games is a one-man independent game studio with, as I guess "one-man" implies, one member: Myself. My name is &lt;strong&gt;Johannes Hubert&lt;/strong&gt; and having the whole "studio" to myself, I relish being head-developer, lead game designer, overall-chief and high-king of Spyn Doctor Games all in one person. That's the joy and freedom (and burden some might say) of being "indie".&lt;br /&gt;With Spyn Doctor Games, I currently create and publish games for the Xbox 360, available via the &lt;a href="http://marketplace.xbox.com/en-US/games/catalog.aspx?d=7"&gt;Xbox Live Indie Games channel&lt;/a&gt;. Check the "Games" box to the right to see my games.&lt;br /&gt;I am located in the city of Fürth, in Bavaria, Germany (sister city of Nuremberg).&lt;br /&gt;As "Spyn Doctor", I am quite active and well know in the &lt;a href="http://forums.xna.com/"&gt;XNA Creators Club Forums&lt;/a&gt;. You may also meet me in other forums under this nick. Or follow me on &lt;a href="http://twitter.com/spyndoctorgames"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Or just keep watching this space - who knows, I might actually write something interesting now and then! &amp;nbsp;;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4836905228895499705-4148185894347591242?l=spyn-doctor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spyn-doctor.blogspot.com/feeds/4148185894347591242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/doctor-is-in-spyn-doctor-games-devlog.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/4148185894347591242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4836905228895499705/posts/default/4148185894347591242'/><link rel='alternate' type='text/html' href='http://spyn-doctor.blogspot.com/2010/06/doctor-is-in-spyn-doctor-games-devlog.html' title='The doctor is [ IN ] - Spyn Doctor Games DevLog started'/><author><name>Spyn Doctor</name><uri>http://www.blogger.com/profile/05838784534818416246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
