<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en"><title type="text">The Code Zone Bargain Basement Blog</title><link rel="alternate" type="text/html" href="http://thecodezone.blogspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TheCodeZoneBargainBasementBlog" /><subtitle type="html">Decades of dubious game development wisdom!</subtitle><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-11-29T15:47:36+00:00</updated><generator uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1172</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="thecodezonebargainbasementblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><id>tag:blogger.com,1999:blog-5927544581291786949</id><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/TheCodeZoneBargainBasementBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FTheCodeZoneBargainBasementBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><title type="text">New Windows Fun</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/GZqSYzM3X3Q/new-windows-fun.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-11-29T07:47:36-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-7828330641282610269</id><content type="html">Well at some point a couple of weeks ago the hard drive in my Main Development Box decided that booting to an OS was no longer necessary. And it chose to do so right in the middle of a deadline. So I hoofed it over to Frys to purchase a replacement drive and a copy of Windows 8. While the UI is controversial, I hadn't heard about any problems with Windows 7 apps, so I quickly installed Windows 8, my development tools, and my projects. And I was able to complete the project after a couple of very late nights.&lt;br /&gt;
&lt;br /&gt;
Fast-forward a week and I finally have a chance to make Windows 8 operate the way I like. For me, Windows 8 reminds me of the last two MacOS updates in that there are some nice refinements hidden behind a treacly front-end that's designed for someone other than me. Windows 8 does have some very nice refinements that make it a better Windows 7, but that's all lost (literally) under the Metro UI.&lt;br /&gt;
&lt;br /&gt;
But, much like MacOS, it's a simple to shun the stuff that annoys you and keep the stuff you like. And so here's my list of essential tools and tweaks that I found myself installing. And now that it's all installed, I'm hunky-dory with Windows again. Most of this stuff is free. If it's not, I mention it:&lt;br /&gt;
&lt;br /&gt;
SharpKeys (&lt;a href="http://sharpkeys.codeplex.com/"&gt;http://sharpkeys.codeplex.com/&lt;/a&gt;) - A simple gizmo that sets registry entries to remap your keyboard. I remap the CAPS LOCK key to operate as a shift-key because the CAPS LOCK is a holdover from typewriters. And this thing just modifies the registry, so there's nothing to do once you're done remapping. Just remap and forget forever.&lt;br /&gt;
&lt;br /&gt;
Free42 (&lt;a href="http://thomasokken.com/free42/"&gt;http://thomasokken.com/free42/&lt;/a&gt;) - My brain thinks in RPN. The Windows calculator doesn't. The MacOS calculator does have RPN, so points to them.&lt;br /&gt;
&lt;br /&gt;
MicroBin (&lt;a href="http://www.e-sushi.net/microbin/"&gt;http://www.e-sushi.net/microbin/&lt;/a&gt;) - Puts a tiny recycle bin in the tray so you don't have to hunt for it on the desktop whenever you wanna use the danged thing.&lt;br /&gt;
&lt;br /&gt;
Win 7 Library Tool (&lt;a href="http://www.pcworld.com/article/232246/win7_library_tool.html"&gt;http://www.pcworld.com/article/232246/win7_library_tool.html&lt;/a&gt;) - The "Libraries" menu on the explorer sidebar is a terrific neglected feature. And for some reason Microsoft cripples it by applying some arbitrary rules as to what folders can live there. This gizmo gets around that so I can have related stuff all together. For example, I have a "cloud" library that points to my Dropbox, Google Drive, etc. so I don't have to hunt for those folders.&lt;br /&gt;
&lt;br /&gt;
Cyberduck (&lt;a href="http://cyberduck.ch/"&gt;http://cyberduck.ch/&lt;/a&gt;) - very nice little FTP client. There's an identical one on the Mac, and I give preference to apps that are identical on both platforms so I don't have to reconfigure my brain. Ditto for Free42.&lt;br /&gt;
&lt;br /&gt;
Notepad++ (&lt;a href="http://notepad-plus-plus.org/"&gt;http://notepad-plus-plus.org/&lt;/a&gt;) - Is free. Is very fast. Is pretty-much the only text editor you need if you don't plan to mold your life around your text editor (i.e. VIM, EMACS)&lt;br /&gt;
&lt;br /&gt;
ImageMagick (&lt;a href="http://www.imagemagick.org/script/index.php"&gt;http://www.imagemagick.org/script/index.php&lt;/a&gt;) - A pile of command-line tools to do stuff with image files. I use these quite a lot in my build scripts for resizing icons and such, so I install this right away.&lt;br /&gt;
&lt;br /&gt;
PowerArchiver (&lt;a href="http://www.powerarchiver.com/"&gt;http://www.powerarchiver.com/&lt;/a&gt;) - Not free, but it's the best one. While Windows' ZIP integration is pretty good, there are plenty of formats it still doesn't grok, like RAR. For those you need an archiver.&lt;br /&gt;
&lt;br /&gt;
PromptPal (&lt;a href="http://www.promptpal.com/"&gt;http://www.promptpal.com/&lt;/a&gt;) - Also not free, and there are plenty of free alternatives, but I have this registered so I keep it. Basically it's a command-prompt replacement that has some enhancements but most importantly keeps your command history persistent from launch to launch. So if you come up with a really hairy clever path-laden command line to do something, you don't lose it if you need it again. Why the default one doesn't do this, I'll never know.&lt;br /&gt;
&lt;br /&gt;
Sizer (&lt;a href="http://www.brianapps.net/sizer/"&gt;http://www.brianapps.net/sizer/&lt;/a&gt;) - Just discovered this a couple of months ago. It adds a sub-menu to your windows system menu (yep, there's still one there) that lets you resize a window to a particular size. This is just the thing if you need to capture screenshots of a particular size.&lt;br /&gt;
&lt;br /&gt;
XNView (&lt;a href="http://www.xnview.com/"&gt;http://www.xnview.com/&lt;/a&gt;) - A perfect companion for Sizer, as it has plenty of options for screen-capture including "capture just the client area of a window", and it can snap to files without interaction, so you can just set your windows up and then play your game and snap away until you get enough screenshots.&lt;br /&gt;
&lt;br /&gt;
VLC (&lt;a href="http://www.videolan.org/vlc/index.html"&gt;http://www.videolan.org/vlc/index.html&lt;/a&gt;) - Yeah Windows 8. Good thinking. If I wanna play an MP3 file, I want it to take up the whole danged screen. Or maybe I just wanna play it in a little window and shove it out of the way.&lt;br /&gt;
&lt;br /&gt;
Adobe Reader (&lt;a href="http://get.adobe.com/reader/"&gt;http://get.adobe.com/reader/&lt;/a&gt;) - See VLC. Windows 8 comes with a PDF reader now, but it only runs full-screen. This reader (or any other, really) fixes that.&lt;br /&gt;
&lt;br /&gt;
Classic Shell (&lt;a href="http://classicshell.sourceforge.net/"&gt;http://classicshell.sourceforge.net/&lt;/a&gt;) - A dozen "get back your start menu" gizmos have appeared over the past weeks. This is the best one, mainly because it's been in existence long before Windows 8. It's very stable and is instantly familiar.&lt;br /&gt;
&lt;br /&gt;
CPU Meter, Network Meter, and Drives Meter (&lt;a href="http://addgadgets.com/"&gt;http://addgadgets.com/&lt;/a&gt;) - Yeah Windows 8 killed Desktop Gadgets, but there are plenty of hacks to bring 'em back, including instructions on that page. I can't function well without these little guys sitting in the corner telling me the state of the Main Development Box.&lt;br /&gt;
&lt;br /&gt;
CCleaner (&lt;a href="http://www.piriform.com/ccleaner"&gt;http://www.piriform.com/ccleaner&lt;/a&gt;) - There are billions of "clean out useless files and crap" software out there. This one is excellent and is free.&lt;br /&gt;
&lt;br /&gt;
Google Chrome (&lt;a href="https://www.google.com/intl/en/chrome/browser/"&gt;https://www.google.com/intl/en/chrome/browser/&lt;/a&gt;) - IE10 is actually pretty good, but my brain's too used to Chrome to turn back now. Also all my bookmarks and saved passwords and such instantly sync up the moment I install it, and that's cool.&lt;br /&gt;
&lt;br /&gt;
Chrome Remote Desktop (&lt;a href="https://chrome.google.com/webstore/detail/chrome-remote-desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp"&gt;https://chrome.google.com/webstore/detail/chrome-remote-desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp&lt;/a&gt;) - The most dirt-simple and best performing remote desktop system I've ever used. Only drawback is that it currently only exists on desktop Chrome. Hopefully it's moving to mobile soon.&lt;br /&gt;
&lt;br /&gt;
Disable Aero Shake (&lt;a href="http://www.howtogeek.com/howto/windows-7/disable-aero-shake-in-windows-7/"&gt;http://www.howtogeek.com/howto/windows-7/disable-aero-shake-in-windows-7/&lt;/a&gt;) - Not an app per-se, but something I like to do. I like all the Aero stuff like snap and preview, but Aero Shake just seemed to be something that jumps up when I didn't wanna use it. So here are the registry values that shut it off.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://box.com/"&gt;Box&lt;/a&gt;, &lt;a href="http://db.tt/bE2U6QE"&gt;Dropbox&lt;/a&gt;, &lt;a href="https://www.sugarsync.com/referral?rf=sms4tnvgxmcg"&gt;SugarSync&lt;/a&gt;, &lt;a href="https://drive.google.com/start"&gt;Google Drive&lt;/a&gt;, &lt;a href="http://skydrive.live.com/"&gt;SkyDrive &lt;/a&gt;- Hey, I like clouds. Might as well use 'em to hold stuff for me. Dropbox is still the most mature, but the others are getting better.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/GZqSYzM3X3Q" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-29T09:47:36.888-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/11/new-windows-fun.html</feedburner:origLink></entry><entry><title type="text">Good Freebie Deal</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/7urLedMc98Q/good-freebie-deal.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-09-25T08:49:22-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-862242655725971446</id><content type="html">&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;Oh but I have a good freebie that's coming up in a couple of days. I was going to post this as a gamedev.net front-page news item, but it appears that our news-feed is entirely scraped from other sources now (which is just fine with me), so I'm posting this as a blog item. Feel free to upvote it on that front page tab so everybody sees it.&lt;/span&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;Packt Publishing, one of the new "biggies" in technical publishing is announcing that they're publishing their 1000th book. And, in honor of that milestone, they're giving a "pleasant surprise gift" (their words not mine) to everyone who has an account on the site before 9/30.&lt;/span&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;(and I have permission to tell you that the gift is a free ebook of your choice)&lt;/span&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;So go to&amp;nbsp;&lt;/span&gt;&lt;a class="bbc_url" href="http://www.packtpub.com/" rel="nofollow external" style="background-color: white; color: #0f72da; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" title="External link"&gt;www.packtpub.com&lt;/a&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;&amp;nbsp;before 9/30 and sign up for a free account if you don't already have one. Their little ebook online store is top-notch and DRM-free, and they have PDF and EPUB versions of all their books, so you can view 'em on practically every computer or e-reader out there.&lt;/span&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;br style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;" /&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;Also they have some free books on the site already, so you can check 'em out.&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; color: #282828; font-family: helvetica, arial, verdana, tahoma, sans-serif; font-size: 14px; line-height: 22px;"&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/7urLedMc98Q" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-25T10:49:22.685-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/09/good-freebie-deal.html</feedburner:origLink></entry><entry><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/s6IXQD5C3QU/okay-this-is-mostly-just-testing.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-07-31T06:15:26-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-1348109827137729420</id><content type="html">Okay, this is mostly just testing. Looks like Blogger is finally integrating itself with G+, so posting stuff to Blogger will automagically repost on G+. I rather figured it would go the other way, with some kind of checkbox that I could click on long G+ entries to make 'em post to my blog.&lt;br /&gt;
&lt;br /&gt;
Yes, again I'm aware this isn't getting updated often. My G+ feed (&lt;a href="http://gplus.to/johnhattan"&gt;gplus.to/johnhattan&lt;/a&gt;) is really becoming the repository for shorter, yet more timely blog entries. It used to be that whenever I had something cool to say I'd bunch 'em all up until I had a couple paragraphs worth, then I'd format a nice fancy blog post. Now it seems like I can serve things up almost in real-time, ala "hey, here's a screenshot of what I'm doing" and people can almost immediately tell me that it sucks. I'm testing to see how well this works, and if it looks nice and seamless over on G+, I might start posting shorter entries more often here.&lt;br /&gt;
&lt;br /&gt;
But if you're unwilling, I'm still writing games. Had some minor successes and I still have a couple of things that'll get me noticed that are in the pipeline, but I'm on NDA so I can't tell you about 'em yet. I'm currently working on a pretty light "hide and seek" game that I decided to put into the Zombie Kitten continuum. It was originally planned as a quickie development run of about two weeks, but lately my schedule's been stretched because it's the summer and I've been sharing duties between job and house-husband.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/s6IXQD5C3QU" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-31T08:15:26.806-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/07/okay-this-is-mostly-just-testing.html</feedburner:origLink></entry><entry><title type="text">Changes to Mac versions</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/z6RvJdQIsTk/changes-to-mac-versions.html" /><category term="siteannouncements" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-03-06T09:27:42-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-8826801636482508713</id><content type="html">This is a long-needed change to the Mac versions of my games. In the past, my Mac games worked on both the old PowerPC-based Macs as well as the newer Intel ones. Well, now the PowerPC Macs have graduated from "old" to "ancient", and Apple has been gently nudging developers into working only with newer releases.&lt;br /&gt;
&lt;br /&gt;
And that extends to the new Mac OS X "Lion", which drops backward-compatibility with PowerPC-based technologies entirely. So I have to look forward instead of backward, and I have now uploaded new Lion-compatible games. If your Mac has complained in the past about compatibility with my games, simply re-download your games and they should work without complaint.&lt;br /&gt;
&lt;br /&gt;
As for PowerPC-based games, I will still keep them around but I will deal with them on a case-by-case basis. If you, for example, have an old PowerPC-based Mac and you need to re-download and/or re-install your game, you should contact support@thecodezone.com directly and I will get you your games.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/z6RvJdQIsTk" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-06T11:27:42.225-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/03/changes-to-mac-versions.html</feedburner:origLink></entry><entry><title type="text">The simple solutions sometimes</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/34eyMG5NgLw/simple-solutions-sometimes.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-02-10T09:38:15-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-8271138388481563586</id><content type="html">Tech support tip for independent game developers selling game downloads&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gmail is a GREAT tech support tool.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I've been selling downloadable games on my website since 2007. And in those years I've had plenty (and by plenty I mean hundreds) of emails to support@thecodezone.com from people who need help. 99% of the emails fall into two categories:&lt;br /&gt;
&lt;br /&gt;
1. (&amp;lt;7 days from purchasing) I am having trouble downloading/unlocking/installing&lt;br /&gt;
2. (&amp;gt;7 days from purchasing) I bought a game quite some time ago and I switched computer/email/gender/whatever and I lost my original download instructions.&lt;br /&gt;
&lt;br /&gt;
When I first built my little order/download system, I made sure to stuff every transaction I made into a MySQL table. I kept transaction numbers and emails and products purchased and all that stuff. And that way if anybody from category (2) above had a problem, I could look up their order.&lt;br /&gt;
&lt;br /&gt;
And I have NEVER used that table.&lt;br /&gt;
&lt;br /&gt;
It's still out there, full of everything I'd need to look up an order. But I don't use it because I have Gmail. When someone buys a game, the last step on my side is a little piece of PHP generates and sends and email to the them with instructions on how to download and install the game. And, just to be safe, I also sent that email to sales@thecodezone.com where it is quietly filtered and stuffed it into a Gmail folder.&lt;br /&gt;
&lt;br /&gt;
And that's pretty-much my tech support. If anyone emails me saying "My name is Fredrick Fribble and I bought Bulldozer around two years ago", I can find their order by searching my gmail. Re-sending their download instructions is as easy as re-forwarding that old email back to them. There have been a couple of occasions where I had to go back and forth a couple of times because they ordered under a different name or changed email addresses or something, but I have always been able to find their order and send it back to 'em. Usually in a couple of minutes.&lt;br /&gt;
&lt;br /&gt;
So I guess the suggestion here is not to overengineer things. I realize this wouldn't scale if your orders got into the huge numbers. But my orders do number in the thousands, and this little system is showing no signs of breaking down.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/34eyMG5NgLw" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T11:38:15.892-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/02/simple-solutions-sometimes.html</feedburner:origLink></entry><entry><title type="text">What? A deal post?</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/b6eIrO0LIPo/what-deal-post.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2012-02-02T08:02:15-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-214279781787380358</id><content type="html">Been about forever since I posted a good deal. So here's a good deal.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://slickdeals.net/permadeal/68386/daz3d-daz3d-3-free-software-suite-programs-daz-studio-4-pro-bryce-7-pro-hexagon-2.5"&gt;Three good freebies from Daz3D&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Mind you, it requires that you sign up to a newsletter and such. But still, they're some fun 3D programs if you're looking to model stuff.&lt;br /&gt;
&lt;br /&gt;
This deal's apparently lasting all the way through February, so don't push it off too long. Have fun!&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/b6eIrO0LIPo" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T10:02:15.183-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2012/02/what-deal-post.html</feedburner:origLink></entry><entry><title type="text">My belated review</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/eUIdT-AoUbA/my-belated-review.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-12-23T15:57:58-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-2485415875000552926</id><content type="html">&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;span style="line-height: 15px;"&gt;First off, apologies to Kobold Quarterly for this. I promised a review of their book a while back. And I actually wrote the review. But we're having a bit of a problem with Gamedev's CMS right now, so I'm going to do an end-run around it and post it to the blog.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;Problem is, the Amazon-scraper we use to grab book covers and links and info about books is having a fit about &lt;i&gt;The Kobold Guide To Board Game Design&lt;/i&gt; because there's no dead-tree version listed on Amazon. Envisioning this as a one-act play, I think the process is going something like this.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b style="line-height: 15px;"&gt;Gamedev&lt;/b&gt;&lt;span style="line-height: 15px;"&gt;: Amazon, do you have a listing for &lt;i&gt;The Kobold Guide To Board Game Design&lt;/i&gt;?&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Why yes, it appears that I do!&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Outstanding. Please send me a bitmap of the cover art.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Oh, that would be no bother at all. Here you go!&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Much obliged. Would you mind sending me the Amazon price and the number you have on the shelves right now?&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: I would be delighted to. The price is $9.99 and we have zero copies on the shelves.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Gamedev&lt;/b&gt;: Zero copies eh? Oh that's just ducky. I shall mark it as out of print until such time as you get some inventory.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;b&gt;Amazon&lt;/b&gt;: Suit yourself!&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;i&gt;FIN&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;I don't know exactly what field is giving our book-scraper fits. But there's something about e-books that's convincing the scraper to mark it as out of stock whenever it checks Amazon. As I'll post the review and feature it, but then a couple of hours later it'll get delisted from our little book section.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;And I'm not faulting our programmer, as he's got much bigger fish to fry right now than fixing a bug in our book-scraper. He's tied up making Gamedev a far awesomer and more organized thing than it's been in quite some time, so I'm staying outta the way.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;So for the time being I'm going to post the review here. At least the Kobold guys can link to it and/or quote-mine it. Once the scraper bug is tackled, I'll make sure it's properly listed on the site proper.&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;Cheers and thanks for everyone's patience!&lt;/span&gt;&lt;br /&gt;
&lt;span style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;---&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s1600/51%25252BiuEFzxtL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="color: black; font-family: inherit;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s320/51%25252BiuEFzxtL.jpg" width="215" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;I'll say this from the onset.&amp;nbsp;&lt;em class="bbc"&gt;The Kobold Guide To Board Game Design&lt;/em&gt;&amp;nbsp;is the best book on game design that I have encountered in quite some time. I discovered this book outside of the normal PR-channels where my to-be-reviewed books normally appear. I happened across the title while reading one of the dozen or so nerd blogs that I frequent. It looked interesting, so I plunked down ten bucks for the PDF at&amp;nbsp;&lt;a class="bbc_url" href="http://www.koboldquarterly.com/k/front-page10553.php" rel="nofollow external" style="text-decoration: none;" title="External link"&gt;koboldquarterly.com&lt;/a&gt;&amp;nbsp;and took a look.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;The book is a collection of twenty essays written by some of the most popular non-computer game developers around today. While board game developers do not achieve the inexplicable rock-star status that some computer game developers get, their chops are every bit as sharp, if not sharper. Some of the authors are responsible for a five great games. Some have a dozen. And at least one has probably fifty games to his credit. What board game designers lack in notoriety, they make up for in prolificacy.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;What, for me at least, moved this book from good to great was the chapter on writing precise rules. Virtually all computer game development books concentrate so hard on the steps from concept to "code complete" that they ignore the other half of the process, which is how to get the danged game done and boxed and to a point where someone other than the test-team can play it. Coherent instructions or tutorials seem to be of no concern to developers because that will be handled by a technical writer in another office somewheres. Game development is a pile of a hundred little tasks, and if you assume that those tasks will be best handled by "someone else", then your game won't be done to your satisfaction.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;And what does this have to do with computer games? Well, stout yeoman, computer games and board games are virtually the same. If you grab the latest deep fantasy quest game on Xbox ("sky-something-or-other"), I guarantee that big chunks of it could be played with pencil-n-paper or a hex map with miniatures or dice or even just your hands.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;Heck, those DS "Pokemon" games are, at their hearts heart, rock-scissors-paper.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white; font-family: inherit; line-height: 15px; text-align: left;"&gt;My only complaint about this book is with the packaging. On the&amp;nbsp;&lt;a class="bbc_url" href="http://www.koboldquarterly.com/" rel="nofollow external" title="External link"&gt;Koboldquarterly.com&lt;/a&gt;&amp;nbsp;site, I could buy a paper or DRM-free PDF of the book. On Amazon (linked above), I could get a Kindle-DRM'ed epub. Unfortunately, neither solution is optimal for my cheapo e-reader. Unless fidelity of the screen to printed page is important, I would prefer an epub to a pdf. And this book is about 95% text with just a couple of illustrative graphics, so epub is best.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: inherit;"&gt;&lt;span style="background-color: white; line-height: 15px; text-align: left;"&gt;But that's just me venting a minor pet peeve. If you fancy yourself a game designer, you need broader horizons than simply having played every game available on Xbox. You need to know how to develop a working mechanism. And a board game is the mechanism of a game stripped down to its essentials, with the 3D animation and particle effects and, yes, even the computer itself stripped away. This is game design as design itself.&lt;/span&gt;&lt;span style="background-color: white; line-height: 15px; text-align: left;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/eUIdT-AoUbA" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-23T17:57:58.368-06:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-FPAy1jmFkP0/TvUSfJuPDrI/AAAAAAAACO0/EX6MhdJbKIw/s72-c/51%25252BiuEFzxtL.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/12/my-belated-review.html</feedburner:origLink></entry><entry><title type="text">How to fail, PART TWO!</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/wxbbXVsl6YI/how-to-fail-part-two.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-11-21T07:00:39-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-8114740672449768082</id><content type="html">&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following &lt;a href="http://thecodezone.blogspot.com/2009/05/how-to-write-pitch-that-doesnt-get.html"&gt;this post of a couple of years ago&lt;/a&gt;, here's the second in my series&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;b&gt;How To Write A Losing Pitch For Your Indie Game Project&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;I just found this taking up a little space in Google Docs. It's the original "pitch" I made for Monkey Blockade a couple of years ago.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;To be honest, I don't even remember who I was pitching this to. As I recall, some mobile game website/portal/publisher put out a call for people to send in two-minute elevator pitches for original mobile games that could be developed quickly. And since I'm nothing if unable to slap together a game fast, I sent in an idea.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;Needless to say, they weren't interested. Given that I can't even figure out who wanted me to pitch the idea to 'em, I'm assuming they didn't even have the courtesy of emailing me to turn me down flat.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;Anyway, a couple of years later I was digging through some old stuff and found the screenshots. I still thought it was a good idea, so I spent a few weeks actually implementing it. I added some stuff (snacks that distract monkeys and changing the red circles to clanking robots), and didn't implement some stuff (the comic strip back-story), but I thought it turned out rather well.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;If you wanna see the final product, go to my mobile page at &lt;a href="http://m.thecodezone.com/"&gt;m.thecodezone.com&lt;/a&gt; and check out the screenshots in any of the app stores.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: x-small;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; white-space: pre-wrap;"&gt;---&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span id="internal-source-marker_0.35617236187681556" style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Name: Monkey Blockade&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Game Type: Quick Puzzle&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Description: Trap the monkeys that are trying to escape by placing blocks in their way. Monkeys are tricky, though, and they find ways to get around the blocks.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Introduction screen:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following is a mockup intro screen. Note that the screen might be implemented as a "pop up", similar to the jumping-up windows in the Code Zone Flash games. Fewer screens makes for a simpler experience. I'm also toying with the idea of eliminating as much text as possible, with the idea that less text makes for a better experience for international users. The following text might be replaced with a "slide show", not unlike a comic strip, illustrating the backstory and the gameplay.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh4.googleusercontent.com/_-7HJH775U80WQEY1IWCZEiim7jP6GpbXIJHSspNVxNCzKnjPk88aA6E4RFV8MCUdWFhtvAF8sG0us_7qy7KbVWLwzBLhDJTMPZsoaRJerVefgHU3F0" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Following accepting the start-playing screen, you see the gameplay screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh3.googleusercontent.com/4jYtB2ALpXb4fkBkFV7G3vg3N7KIGmY70cvEChmc2oCwYTYGxY6Ury5TLAfc4RTlMIMwP37hl1-z2xd6_s2A6UT-g1R7UGg9TGzRjyp0HAvtW4y5pHs" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;You initially start with ten monkeys, one on the board (in a random spot, but near the middle), and nine under the "remaining" text. As monkeys escape or are captured, they move to the "escaped" or "captured" sections at the top of the screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;To place a block, tap the screen. The block will not actually set itself until you let up with your finger, so you can make sure it's over the hex you want to use before you place it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;The "Blocks" and "Time" will accumulate throughout the game. They will likely be replaced with icons (a block and a clock).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Once all of the monkeys are either captured or escape, you get the game summary screen. Again, this may be a popup if that's easier to do, in keeping with the "one screen" motif.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 16px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;img height="480px;" src="https://lh3.googleusercontent.com/TIAX5VRpzj0LIzYqAc9emB457VqJ1PBNOCjOmThk2Gq7iDc2lhRnKqrfCo2sWZh-VBMLfiQJ6KM_FAguzvG56i7ySjh66iTbVSOTGOEQLJlqaDjW_r4" width="320px;" /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Your score is a combination of captures (big points) minus a small penalty for number of blocks used and a time bonus. At this point, the user will get the opportunity to enter his score in a global table that will work a bit like the Mochi highscore table (daily, weekly, and monthly high scores).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Possible enhancements.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 13px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Since this game is a natural for making a daily puzzle, there's a possibility that I'll couple this with a daily puzzle version on thecodezone's site. If the user chooses to play the game as a daily puzzle (from the main menu), he can enter his thecodezone ID and password, and he'll be presented with the same puzzle as the Flash version and can submit his score to the site just as if he played the Flash version.&lt;/span&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/wxbbXVsl6YI" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T09:00:39.311-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/11/how-to-fail-part-two.html</feedburner:origLink></entry><entry><title type="text">Idea to App Store in ONE week</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/Gut4FmL7LwU/idea-to-app-store-in-one-week.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-11-02T09:15:21-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-8743537002488954178</id><content type="html">Yeah, I noticed my last post to the blog was a quick postmortem of Marble Bump, which was a game that I intended to take from concept to app stores submit in two weeks.&lt;br /&gt;
&lt;br /&gt;
Well, I decided to one-up myself, and I wanted to find something I could write and submit in ONE WEEK, mainly to get stuff in app-stores for the pending Kindle Fire and Nook Color 2 launches. So I went with one of my simplest games, Countdown Dice. It's just a cute little "push your luck" game where you roll dice to launch rockets. It's very simple and takes about two minutes to play, but it is oddly addictive once you grok the mechanism.&lt;br /&gt;
&lt;br /&gt;
And not only did I get it finished and submitted in a week, I actually got it listed in an app store already!&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/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s1600/IMG_00000015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://2.bp.blogspot.com/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s320/IMG_00000015.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
(Countdown Dice in the Playbook store)&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;
Yeah, it's just the Playbook store, and it's a bit of a degenerate case because the Playbook store typically approves in a shorter time than the rest (save for Android Market which has no approval process at all). Still, I'm happy. To quote the slave-driving colonel in "Bridge on The River Kwai", be happy in your work.&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 once again I must plug my G+ feed, which is where I now post the bulk of my development-related info. It's at&amp;nbsp;&lt;a href="https://plus.google.com/106460508525236363626/posts" style="text-align: -webkit-auto;"&gt;https://plus.google.com/106460508525236363626/posts&lt;/a&gt;&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;
Soanyway, here are some pics of the process.&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: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-IquzeDb7Vmk/TqiHV5Dx27I/AAAAAAAABT0/2PtAO-_egtI/s1600/Untitled-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/-IquzeDb7Vmk/TqiHV5Dx27I/AAAAAAAABT0/2PtAO-_egtI/s320/Untitled-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
Here's the first cut at a title screen. It's not much different from it as it shipped. I added a little Matrixesque animation to the title text, and I adjusted the text and colors a bit, but this is it. The buttons are lifted directly from Dice-A-Rama&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Development Tip:&lt;/b&gt; If something works, steal it and use it elsewhere. Quit reinventing the wheel.&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/-lBS1adRme20/Tqr1wE9tqiI/AAAAAAAABVs/3BHx9Q2_N4s/s1600/Untitled-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://4.bp.blogspot.com/-lBS1adRme20/Tqr1wE9tqiI/AAAAAAAABVs/3BHx9Q2_N4s/s320/Untitled-1.png" width="320" /&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;
Here are the graphics. The little vector rockets are lifted directly from the old 2007 AS2 game. I figure that game's been played several million times with no complaints about usability, so I wouldn't make many changes there. I did change "Turns Remaining = 5" to "Turn 1 of 5", as it seemed a little more obvious. Gets around that "do we throw the guy off the bridge at 1-2-3-GO or 1-2-3" problem.&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;
I didn't reuse any code from the original. The logic was simple enough that I didn' bother.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;b&gt;Development Tip:&lt;/b&gt; Don't worry about making nontrivial objects reusable. While you might find yourself reusing a Pair or Dice class, you probably will just rewrite the CountdownDiceScorer class anyway, so don't kill yourself making it reusable. You've always got the code right there for copy-n-paste if there's a particularly hairy algorithm in there anyway.&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="" style="clear: both; text-align: left;"&gt;
Heck, I didn't even reuse the friggin' Dice class from Dice-A-Rama. It has several non-standard dice (with colored pips and face cards) that this game wouldn't need, so I just copy-n-pasted out a few lines of standard dice code.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-AOpHqoCqqAI/Tq60byZVADI/AAAAAAAABY4/CxEMiBDg9oQ/s1600/icon_114x114.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-AOpHqoCqqAI/Tq60byZVADI/AAAAAAAABY4/CxEMiBDg9oQ/s1600/icon_114x114.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
The icon. Took me about ten minutes. I used IconWorkshop (motto: The only icon editor you will ever need. Trust me) to make the purple roundy background, and then I pasted it into Flash to add the vector rocket and dice. And then I saved it out as a 512x512 pixel PNG and used a batch file and ImageMagick to &amp;nbsp;make all the other icon sizes that the other app stores needed.&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;
&lt;b&gt;Development Tip:&lt;/b&gt; IconWorkshop is great. It's especially great with its free "iOS icon library" add-on that lets you drag together a classy iPhone-style icon in seconds.&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;
ImageMagick is also great and is free. If you use a batch file or makefile or ant-file to build your app, use ImageMagick to size things in batch mode.&amp;nbsp;Oh, and ImageMagick can also make .ico files with all of the sub-bitmaps embedded in it, but it's not trivial and requires an absurdly long command-line. I recommend making a batch file once you get it working so you don't have to retype it again.&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: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gmouHVuj_gg/TrFnEXRXGFI/AAAAAAAABeQ/6Z53yDFwlQA/s1600/featured_1920x1186.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/-gmouHVuj_gg/TrFnEXRXGFI/AAAAAAAABeQ/6Z53yDFwlQA/s320/featured_1920x1186.png" width="320" /&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;
The "Featured Item" image. The Playbook, Android, and Amazon app stores want a "featured" image along with your icon and screenshots. It's usually just a publicity photo kind of thing like this, and it's about twice as wide as high. And they want all kinds of sizes, from enormous (1920x1186 on Playbook) to small (290x140 on Android Market).&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;
Again, I use Flash for this. Since it's vector-based, you can export out to arbitrarily large sizes and the edges stay nice. I generally save out to a 2048x1536 image with plenty of whitespace (purplespace in this case) near the edges. Then I can just shrink and crop to whatever the app store wants to see.&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;
Yeah, I could probably use Illustrator or Inkscape or some other vector tool. I don't know how to use those and I'm too lazy to figure it out. If you wanna do it for free, use Inkscape.&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;
&lt;b&gt;Development Tip:&lt;/b&gt; To take a screenshot on an iphone, it's RoundButton+PowerButton.&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="text-align: -webkit-auto;"&gt;To take a screenshot on a Nook Color, it's NButton + VolumeDownButton.&amp;nbsp;&lt;/span&gt;To take a screenshot on a Playbook, press both volume buttons at the same time, although I just take Playbook screenshots from the emulator using Alt+PrtScn.&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;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
So that's just a quick overview of a couple of tricks I use to get stuff into app stores fast.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/Gut4FmL7LwU" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-02T11:15:21.601-05:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-caYvSdWn04g/TrFhx1BAF8I/AAAAAAAABd8/x3ZEDhkvXVE/s72-c/IMG_00000015.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/11/idea-to-app-store-in-one-week.html</feedburner:origLink></entry><entry><title type="text">Idea to app store(s) in two weeks</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/cjXeheaOiYw/idea-to-app-stores-in-two-weeks.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-08-10T07:57:27-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-8116090511556462183</id><content type="html">First off, if you don't have me circled on G+, I'm at &lt;a href="http://gplus.to/johnhattan"&gt;gplus.to/johnhattan&lt;/a&gt;. I've been liveblogging the process there. If you don't have a G+ invite, my invite link is &lt;a href="https://plus.google.com/_/notifications/ngemlink?path=%2F%3Fgpinv%3D-gYLTFQP-Hc%3ANtsuOq9ATDk"&gt;here&lt;/a&gt;. I only have 145 of my original 150 invites left, so get in now :)&lt;br /&gt;
&lt;br /&gt;
I had an idea for another simple particle-collision game, and this time I decided to see how quickly I could get the game from concept to app stores. And it happened in two weeks, one week of which was waiting for approvals.&lt;br /&gt;
&lt;br /&gt;
Originally I planned for it to be an atomic-particle-colliding motif, not unlike Meltdown. After some back and forth with the community, I went with the name "Particlusion" (particle+fusion). I wasn't completely in love with the name, but it worked and wasn't in use anywhere else. And I quickly mocked up a menu screen.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;img src="https://lh6.googleusercontent.com/-aiwFJa78oeE/Ti35Yky26WI/AAAAAAAAAnY/Aqt95rAnp9I/w402/shot.png" style="display: block; text-align: left;" /&gt;&lt;br /&gt;
&lt;div style="text-align: left;"&gt;The original eye-searing Tron-ish main menu&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I even made a cool animation for the main screen when I had a couple minutes of downtime.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img src="https://lh6.googleusercontent.com/-2_phjAIOp1c/TjAmFFbpXyI/AAAAAAAAAn8/D-nvMxohvYU/w316/Untitled-1.gif" style="display: block;" /&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Then I started on the mechanic. The mechanic was quite simple (slide objects into other objects. If one object is left, you win), and you could even build some fairly challenging random levels by following some simple rules. This is unlike something like Bulldozer (aka Sokoban), where it's nigh impossible to randomly generate a decently challenging level. There's less "depth" than Sokoban (which is a mean feat, as Sokoban's depth is itself limited), but it was intended from the onset to be something quick and cheap.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Fast-forward a couple of days, and I was looking for some inspiration for my little colliding particles. I was thinking of some little nondescript spheres like in Meltdown when I came across some old marble clipart. I pasted a couple in, and it just fit. In fact, they fit so well that I decided to change the motif to marbles. A little name-check and "Marble Bump" was born. I originally planned to have the marbles on grass with a sidewalk texture here and there, but the contrast was much better just with the cement texture, so I left it everywhere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;img src="https://lh5.googleusercontent.com/-EB7HImtE2NY/TjLoOxk3DUI/AAAAAAAAAo4/FQm-fyRky5k/w402/Untitled-1.png" style="display: block;" /&gt;The rebranded main screen, four days in. Close to how the release looks&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The little wrench button in the corner brought you to a very simple level editor that let you place marbles. As you placed marbles, it built a string containing the level and the solution. I eventually added a little clipboard button so you could hop back to the main menu and test a level after copying its level string to the clipboard. From there I spent a few hours drawing and testing levels until I had the 24 "canned" levels that roughly run from trivial (two marbles) to nigh-impossible (19 marbles, I think).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The level editor was just for me, so that wrench-button hides for the release version. It added all of 2K to the game, so I didn't bother cutting it out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I also got my random level-generator working, which is what you get from the row of buttons along the bottom. I figure if I could randomly generate challenging levels, I didn't need so many "canned" ones. So there are only 24 levels, but you're not stuck once you've beaten 'em all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;After taking the weekend off to carpool the kid to summer camp, I decided my marbles needed some more personality. So I tried the most obvious thing and added little cartoon eyes to 'em. They're actually pretty simple. They have two states (normal and wide-eyed terror), and both pupils are actually a single MovieClip that I tween in whatever direction the marble's moving. If a marble is about to be hit, I switch the eyes to the wide-eyed terror state, and I tween the pupils very small (and that's why the pupils get close together when a marble is about to die. It's actually just one meta-pupil). I added three mouth positions, and I now had marbles that expressed the gamut of emotions from "I'm gonna hit you" to "oh no, I'm gonna be hit" to "Yay, I killed all my friends so I'm happy!"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;And I added a random tint to the pupils, so marbles can have green, blue, or brown eyes. That's the sum-total of Marble expressions. As I learned from crafts and cartooning a long time ago, eye shape, eye placement, and pupil placement can impart a lot of personality without a lot of work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;And I put together a little video. It's very close to final form.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&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://3.gvt0.com/vi/jg8W8wsI1rc/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jg8W8wsI1rc&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/jg8W8wsI1rc&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Same day as I posted the video, I declared the game finished. I actually had a minor button-graying bug that I have since fixed. But posting updates to app stores is a simple process, just requiring you to upload the updated game and some simple release notes. It's the initial approval that takes the time, so get on that ASAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;As for app stores, I posted to the iOS store first because it has typically had the longest lead-time (5-7 working days in my experience). Then the Playbook store, which takes 1-2 days to approve. And finally the Android store, which has no approval process, and your game becomes available whenever Google's indexing-bot finds it. Typically an hour.&lt;/div&gt;&lt;blockquote&gt;And code-signing for iOS and Playbook are a friggin' nightmare that requires enormous amounts of trial-and-error. And even if you get it working, you will NEVER understand it. I'd detail the process, but it makes me cry whenever I do.&lt;/blockquote&gt;&lt;div&gt;Just as a lark, I signed up for the Amazon and Nook developer programs and got approved for both (because I'm a force in this industry goldurnit). Modifying the Android app for Amazon was pretty simple, just requiring you to point to a different location to download the AIR runtime.&amp;nbsp;The Amazon approval time was about the same as iOS. Maybe a little longer. I didn't watch it too closely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I still haven't submitted the game to the Nook store, mainly because I've rooted my Nook with CyanogenMod (which is really awesome and makes your Nook into a full tablet), but I'll need to revert back to stock firmware to test.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Submitting to app stores is a bunch of monkey-work. They all need a textual description of your game, which I just wrote once and cut-n-pasted.&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Marble Bump is an original new puzzle game. It is quite simple, but it is pretty tough to master. At first it appears simple. Just bump marbles together to shatter them, and once you are down to a single marble, you win. And the initial levels are fairly easy, but the game gets tough quickly, and the highest levels are guaranteed to bend your brain.&lt;/blockquote&gt;&lt;blockquote&gt;The game comes with 24 levels of increasing difficulty. But you're not done when you have mastered all of the included levels. Marble Bump also comes with an infinite number of randomly-generated levels, so you can tease your brain whenever you want. Have fun&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Screenshots are a pain because every store wants certain sizes, so you can't just whip up a pile of generic screenshots and upload them everywhere. Playbook is easiest because your bitmaps can be any aspect as long as no dimension is bigger than 640 pixels. Android has four sizes that they'll accept, corresponding to the most popular phones and tablets. iOS wants 'em in iPhone and iPad size, and you need to upload both. I have an iPod Touch for testing, so snapping iOS screenshots was easy (power+roundbutton snaps screens to your film-roll). I don't have an iPad, and AIR apps don't work in Apple's "not really an emulator" emulator, so I had to fake those.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;You also need icons, both for development and app stores. Icon sizes are all over the place, and I recommend you grab a copy of &lt;a href="http://www.imagemagick.org/script/index.php"&gt;ImageMagick&lt;/a&gt; right away. It's got a command-line utility called "convert" that'll convert a bitmap's size and/or format, and it does a terrific job of retaining detail and transparency. The biggest icon that everybody wants is 512x512, so I just drew a giant icon PNG and then made a batch file that would downsize that mega-icon to the half-dozen other sizes I need (480x480, 128x128, 114x114, 72x72, 57x57, 48x48, 29x29, 36x36, 32x32, 16x16). Every store wants all images in PNG, so get used to using PNG as your file format of choice. I prefer Adobe Fireworks for all my bitmaps and screenshots and such, as it's designed around PNG and works with it nicely.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The only other picture you need is a "featured" image for Android and Playbook. This is just sort of an advertising picture. You can see one as my big main title picture &lt;a href="https://market.android.com/details?id=air.com.thecodezone.games.marblebump"&gt;here&lt;/a&gt;. Android and Playbook want 'em in various sizes, but generally around 16x9 aspect. My best advice is to make a giant bitmap at least 1200 wide with a healthy amount of whitespace around the edge that you can crop and resize without much stretching. As you can see in my Android Market shot, there's plenty of yellow on either side of the marbles, as this particular one has around a 2/1 aspect ratio.&lt;br /&gt;
&lt;br /&gt;
The only other weirdness is Apple's two-step process for submitting. Every app store but Apple's lets you upload your game during the "describe your game and upload your screenshots" process. Just choose your APK or BAR file and press "upload". Except iOS. After you get all your descriptions and screenshots uploaded and Apple says you're ready to go, you then have to run a free utility that comes with xCode that uploads your IPA file to Apple. It's not particularly obnoxious, but it'll catch you by surprise the first time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;If you want to check out how Marble Bump looks in the four app stores, head over to my newly-updated mobile site at &lt;a href="http://m.thecodezone.com/"&gt;m.thecodezone.com&lt;/a&gt; and click on the four app-store buttons under the game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;And I'll make the same deal here as I made on FaceTwitterBookPlus. If you review my game, I'll reimburse you for the buck you paid for the game via Paypal :)&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/cjXeheaOiYw" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-10T09:57:27.643-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/08/idea-to-app-stores-in-two-weeks.html</feedburner:origLink></entry><entry><title type="text">AS3 Controls</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/ICwkGcP_Ra8/as3-controls.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-07-12T12:01:19-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-1165397969220548693</id><content type="html">Still doing my mobile games here. One problem I ran into is with controls. My games aren't very control-heavy, but there are times that I do need to impart a little textual or columnar information to the user (i.e. help and high scores). And I'd really rather not roll my own. And this problem is compounded by Adobe's apparent abandonment of the control model for mobile Flash.&lt;br /&gt;
&lt;br /&gt;
Mind you, the standard AS3 Flash/Flex controls render fine in mobile apps. Problem is, a lot of the controls are not at all finger-friendly. Some controls, like PushButtons, work fine. After all, clicking a button with a mouse and tapping a button with your finger is the same operation as long as you make the button large enough to accommodate a finger. Some operations though, like scrolling a text-field with a scrollbar, are frustrating. Adobe addressed this on Flex by releasing several finger-friendly controls. But unlike the previous releases of AS3 controls, they didn't keep parity with Flash. If you're using Flash with mobile, and you want controls, you're pretty-much on your own.&lt;br /&gt;
&lt;br /&gt;
I have played around with a couple of the mobile-friendly Flash control sets out there, but none of 'em really set me on fire. Some looked good but looked more like Android than iOS. Some were built around an odd model that made it difficult for me to just say something easy like myTextField = new TextField().&lt;br /&gt;
&lt;br /&gt;
And I understand that it'll take time. The AS3 controls that come with Flash are pretty danged robust and well documented, and you won't be able to duplicate all that functionality in the short term. But I did find &lt;a href="http://activeden.net/item/touchcomponents-v20/310694"&gt;this&lt;/a&gt;, which I think is pretty interesting. &amp;nbsp;Rather than write new controls, the author just wrote subclasses for &amp;nbsp;the touch-unfriendly controls and added touch-friendly events. So, for example, you can now have a TouchDataGrid object that's just the old standard DataGrid control, only the mouse events are overloaded so you can drag in it with your finger to scroll it around.&lt;br /&gt;
&lt;br /&gt;
And that's great for me, because I don't wanna have to mess with controls. I'd much rather create a DataGrid and populate it with high score data than manage all the drawing myself. When I use standard controls, it's usually for stuff that I just want to implement and then ignore so I can work on the game. For example, Help.&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/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s1600/Untitled-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s320/Untitled-1.png" width="210" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Wow, a scrolling text field and an OK button. Don't wanna spend much time on that!&lt;br /&gt;
&lt;br /&gt;
One thing you'll notice is the little scroll-elevator thing on the right side. On iOS and Android, that little scroll indicator only appears when things are actually scrolling. And I don't really like that. Dice-A-Rama actually got down-rated on iTunes because one reviewer stated that there are just a couple sentences of help without a detailed rundown of scoring. And that's not true. There's quite a lot of help and detailed scoring for each game, but you get the impression that there's just one screen because there's no indication that you're looking at a scrolling field and there's more to see. And I do realize that it's an OS sin to go against the One True Mobile Look, but I think it's an equal OS sin to hide from the user that there's more information to be seen. So I'll either leave the scroll indicator on or I'll add some "drag the danged screen to read more help" text.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/ICwkGcP_Ra8" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-12T14:01:19.220-05:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-0G8pC4Cu8q0/ThySiChuRuI/AAAAAAAAAgY/2zypZblZrnE/s72-c/Untitled-1.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/07/as3-controls.html</feedburner:origLink></entry><entry><title type="text">Now with Google +1</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/ZC0jlhPtcv0/now-with-google-1.html" /><category term="siteannouncements" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-06-07T13:45:10-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-6176849538216127994</id><content type="html">Well I haven't had any substantial updates to the site since November. And that's both good and bad. It's good in that there haven't been any site emergencies in six months. We're nice and stable.&lt;br /&gt;
&lt;br /&gt;
But it's not good in that there haven't been any other site updates of note.&lt;br /&gt;
&lt;br /&gt;
But I haven't been sitting on my mini-empire of puzzles. Blackberry Playbook Bulldozer, Duck Tiles, and Pop Pies Portable (based on Pop Pies 3) are shipping. Brain Bones and an all-new game called Dice-A-Rama are also getting ready for release on Playbook, Android, and iOS.&lt;br /&gt;
&lt;br /&gt;
As for this site, I've just added &lt;b&gt;yet-again-still-another social networking widget&lt;/b&gt;, I have now added Google +1 buttons on all of thecodezone.com's pages! Excitement!&lt;br /&gt;
&lt;br /&gt;
The way it works is simple. If you have a particular game you like (ConFusebox, for example), click the little Google "+1" button at the bottom. That way the page gets a little boost on Google's search results. This will hopefully drive a few more people to the site, giving me another dollar or two of ad revenue and financing more puzzles.&lt;br /&gt;
&lt;br /&gt;
Big thanks for your support!&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/ZC0jlhPtcv0" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-07T15:45:10.440-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/06/now-with-google-1.html</feedburner:origLink></entry><entry><title type="text">Your AIR for Android app is open source - like it or not!</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/Fpj5mohnt8s/your-air-for-android-app-is-open-source.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-05-11T09:39:38-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-3240684431859205391</id><content type="html">First off, I’m not posting this with the hopes of inviting malice. I’m posting this to inform you that anything you thought regarding code security in AIR for Android apps is probably illusory, and that you (and hopefully also Adobe) need to take some extra steps if you don’t want your assets stolen.&lt;br /&gt;
&lt;br /&gt;
That being said, here’s how to take apart an AIR for Android app you’ve downloaded from the Android Market.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Get the free Astro file manager from the Android Market.&lt;/li&gt;
&lt;li&gt;Run Astro.&lt;/li&gt;
&lt;li&gt;From the app menu, choose “tools” and then “Application Manager/Backup”.&lt;/li&gt;
&lt;li&gt;Choose any app you’ve installed on your Android device. You can choose any app you want, but AIR apps are particularly egregious in their lack of security.&lt;/li&gt;
&lt;li&gt;The application will be copied from internal storage and will be copied to your backup folder (most likely on your SD card) as an APK file.&lt;/li&gt;
&lt;li&gt;While still in Astro, navigate over to that backed up APK file and click on it. Choose “send to”, and send it to your desktop machine via email or Dropbox.&lt;/li&gt;
&lt;li&gt;Now that the APK is on your desktop computer, rename the APK extension to ZIP and open it with your favorite ZIP-reading program.&lt;/li&gt;
&lt;li&gt;In the “assets” folder within the ZIP, you should find a file with the extension SWF. Yes, this is the same SWF that was created with Flash/Flex. The AIR Android packager doesn’t do anything to the file at all. It just copies it into the right spot in the APK ZIP-file so the AIR runtime can run it.&lt;/li&gt;
&lt;li&gt;Copy that SWF out of the ZIP file, and you’re done.&lt;/li&gt;
&lt;/ol&gt;At this point, you can do whatever you want with it. You can download the Adobe AIR SDK and Android SDK, re-package the SWF into a new APK, and upload it to the Android Market under your own name. You can decompile the SWF with a tool like Sothink SWF Decompiler (which worked great on all the examples I tried), then change up the game enough to pretend it’s an entirely different game. You can put the SWF on your website. Or you can just browse through all the author’s source code and copy out his code/graphics/sound assets into your game!&lt;br /&gt;
&lt;br /&gt;
Note that there are tools like secureSWF (which I reviewed &lt;a href="http://archive.gamedev.net/features/reviews/productreview.asp?productid=777"&gt;here&lt;/a&gt;) that are very effective at munging ActionScript bytecode into something that can’t be meaningfully decompiled, but that would only prevent people from decompiling and/or reading and/or recompiling your source code into a new SWF. There’s still nothing preventing me from making a new APK out of your game's SWF.&lt;br /&gt;
&lt;blockquote&gt;also note that exactly ZERO of the AIR for Android apps I tried actually had obfuscated their bytecode with a third-party tool . A couple of you guys have atrocious naming conventions :)&lt;/blockquote&gt;Fact is, if you are going with Adobe and Android’s recommended sequence to make an AIR for Android APK file with the aim of putting your app on the market, you are essentially open-sourcing your app. Unless you go with some further security (and I don’t even know what further security you could implement beyond obfuscating bytecode), you are leaving your app wide open for IP theft.&lt;br /&gt;
&lt;br /&gt;
And I’m not doing this with the aim of convincing every 13 year-old creep with a decompiler to start stealing apps and republishing ‘em under his own name. It’s more like discovering that every door-keypad at the Pentagon opened with the combination 1-2-3-4-5. Would publishing such information be inviting terrorism or would it be informing the Pentagon that their security is worthless and needs updating ASAP?&lt;br /&gt;
&lt;br /&gt;
Also I’m posting this because I’m angry. And I’m angry because I brought this up during a Q&amp;amp;A at an Adobe conference when AIR was announced as “Apollo” in 2007. The Q&amp;amp;A went something like this:&lt;br /&gt;
&lt;blockquote&gt;Me: If your compiling step is just zipping up all of the web-app’s assets with an XML manifest file and some icons, what’s to prevent me from unzipping that file, making changes, and re-deploying it.&lt;br /&gt;
&lt;br /&gt;
AIR guy: We’re planning some security stuff.&lt;/blockquote&gt;Turns out the “security stuff” was apparently their app signing process. And the ONLY thing that prevents me from doing is me making changes within the AIR file itself. I can’t open an AIR (or APK) file and make changes to the file itself, as the certificate file would no longer match file checksums for the AIR/APK file. I’m still free to open, decompile, read, write, update, steal, and rebuild the app under my own name.&lt;br /&gt;
&lt;br /&gt;
They’ve had four years to fix this.&lt;br /&gt;
&lt;br /&gt;
Finally, a note about the iPhone. While an iPhone IPA file is also a renamed ZIP and IPA files are also easy to retrieve, the contents of AIR for iOS files beyond icon PNG files and a manifest XML weren't in a readily decompile-able format. Looks like the Adobe AOT compiler really works.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/Fpj5mohnt8s" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-11T11:39:38.501-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/05/your-air-for-android-app-is-open-source.html</feedburner:origLink></entry><entry><title type="text">Good book deal</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/IfX1NQhVchs/good-book-deal.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-03-22T10:36:25-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-6222312749055616603</id><content type="html">Good deal today. O'Reilly has several good titles today. The good deal part is that they're giving all proceeds (minus author royalties, I'm sure that's a contractual thing) to Japanese disaster relief.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://oreilly.com/store/dd-jpn.html"&gt;http://oreilly.com/store/dd-jpn.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Couple of good looking titles there. Although I don't know how good a book on Audacity can be. Audacity is REALLY easy to use.&amp;nbsp;Anyway, browse and get a book for a good cause.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/IfX1NQhVchs" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-22T12:36:25.643-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/03/good-book-deal.html</feedburner:origLink></entry><entry><title type="text">New project part two</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/y8tko0-aevI/new-project-part-two.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-02-24T08:49:51-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-865814893269699073</id><content type="html">Well, the &lt;a href="http://angriestprogrammer.com/"&gt;angriestprogrammer.com&lt;/a&gt; project has spawned a successor. And the successor came from its sheer overengineering. Even though my little database/XML/PHP driven comic compositor could've been simpler than it was, I gave it a few extra capabilities. Namely the capability to overlay several bitmaps in a frame, although angriestprogrammer.com only shows one bitmap so it was never needed.&lt;br /&gt;
&lt;br /&gt;
And I got to thinking, what if I was able to define bitmaps with descriptive names and have them appear only if they're called into existence in a frame, i.e. if they're speaking? And what if I gave the speech little comic "bubbles" so I could use backgrounds other than just white? If I did those things, I could build a more&amp;nbsp;sophisticated (but only slightly more so) "red meat" style comic (google for it) out of a simple XML description.&lt;br /&gt;
&lt;br /&gt;
And then I got the idea of knock-knock jokes. After all, there are millions of those out there, and there really isn't a good site for 'em. Most knock-knock sites appear to be holdovers from Geocities that have plenty of knock-knock jokes, but they're not really presented in an appealing style.&amp;nbsp;So I invented my new site, &lt;a href="http://knockville.com/"&gt;knockville.com&lt;/a&gt;, a kids' website that will become (I hope) the definitive home for knock-knock jokes on the web, presented in an appealing style.&lt;br /&gt;
&lt;br /&gt;
That is, if you find public domain clipart appealing. And I do. There's just an odd innocence to it. Case in point.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://knockville.com/comics/70defc198c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="114" src="http://knockville.com/comics/70defc198c.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
I think a Facebook commenter summed the whole project up with something like "you've figured out how to be a cartoonist without having to draw OR write. Congratulations."&lt;br /&gt;
&lt;br /&gt;
So my goal is to spend an hour or so a week scanning in a couple of new characters and/or backgrounds and entering a dozen jokes, in the hopes that eventually I'll have about 100 characters and a couple-dozen backgrounds. And I'll keep entering knock-knock jokes until I run out. And after that, I'll just let the site repeat jokes forever.&lt;br /&gt;
&lt;br /&gt;
And I don't think repeats will be a problem once I have a big enough mass of material. I remember listening to an interview a few years ago with the creators of the Teletubbies. And the interviewer asked 'em why they stopped making new episodes after four years even though they were successful. And the answer, I thought, was quite astute. It was that they had enough episodes that any kid who just discovered the Teletubbies would now outgrow the series before running out of episodes. They could now re-run episodes forever without worrying about them getting stale, because kids are EXPECTED to outgrow them. I fully expect kids to visit my site, press the "Random" button a dozen times until they get a few new jokes to tell their friends at school, then get on with their lives.&lt;br /&gt;
&lt;br /&gt;
And why knock-knock jokes? Because when my daughter was four years old, I was roped into helping the kids with a party at school. And one of the kids was bummed because she wanted to sit by my daughter but couldn't, so I declared that I was going to sit by her. And then I told her a knock-knock joke. And as soon as I did, a dozen other kids started chiming in with their own jokes (most of which were completely random and awful but I digress). I saw that there's just something pure and easy-to-remember about knock-knock jokes, and I always kept with me that if I could present knock-knock jokes in a silly format that kids could read and remember for school the next day, they'd probably show up to read 'em.&lt;br /&gt;
&lt;br /&gt;
So I made the site. And I made it in a way that would be easy to maintain. All that's really left to do is to add a page where kids can submit their own jokes. And if I use their jokes I'll give 'em credit.&lt;br /&gt;
&lt;br /&gt;
So I'm hoping that this modest little project will work out.&amp;nbsp;Thoughts?&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/y8tko0-aevI" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T10:49:51.014-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/02/new-project-part-two.html</feedburner:origLink></entry><entry><title type="text">My new project</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/omqIUjmi6Uo/my-new-project.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-01-24T10:04:03-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-7590652973484458809</id><content type="html">Okay, I hinted on it on &amp;lt;Insert Social Network Here&amp;gt; a couple of times. And I've been rolling the technical specifics around in my head for a couple of months. So I took about ten days full-time to&amp;nbsp;implement&amp;nbsp;the back-end. And now it's done.&lt;br /&gt;
&lt;br /&gt;
It's my own webcomic, &lt;a href="http://angriestprogrammer.com/"&gt;The Angriest Programmer In The World&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
First off, &lt;b&gt;the thinking behind it&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
I found recently, while working, that I was building some juicy one-liners in my head. Mostly geeky. Usually angry. And while Twitter is usually the venue for such brain-droppings, I found that they often didn't fit. I needed something more like the Laugh-In blackout gags, with a couple of characters interacting.&lt;br /&gt;
&lt;br /&gt;
And I liked the minimalist style of &lt;a href="http://www.qwantz.com/index.php"&gt;Dinosaur Comics&lt;/a&gt; and the even more minimal &lt;a href="http://www.angriestricecooker.com/category/comics/angriest-rice-cooker/"&gt;Angriest Rice Cooker In The World&lt;/a&gt;&amp;nbsp;(RIP), both of which are influenced by David Lynch's &lt;a href="http://www.davidlynch.de/angry.html"&gt;Angriest Dog In The World&lt;/a&gt;. I thought that Rice Cooker was a bit limited in that it was one character only, thus making it work better as a Twitter avatar than a standalone comic strip (ala Twitter feeds like &lt;a href="http://twitter.com/AtheistHulk"&gt;Atheist Hulk&lt;/a&gt;*). Angriest Dog appears to have more than one character, but they're never shown so you can't really identify with them. So I decided to make a comic with 1.5 characters (one isn't entirely sentient) as well as a computer and a narrator with which the main character could interact. And I went with four frames because three frames is occasionally too short if you have two characters.&lt;br /&gt;
&lt;br /&gt;
Basically the whole thing is based on single static frames like Angriest * In the World, only with a couple of persistent interacting characters like Dinosaur Comics and some deeply geeky jokes like in&amp;nbsp;&lt;a href="http://xkcd.com/"&gt;XKCD&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So yes, this ain't art. This is a derivative cynical ploy to grab some geek eyeballs.&lt;br /&gt;
&lt;br /&gt;
And that's nothing new. I remember reading once that the guy who makes Garfield used to be in advertising and he chose a cartoon about a cat because there was already a top-tier and a second-tier newspaper comic dog (Snoopy and Marmaduke) and a second-tier newspaper comic cat (Heathcliff) so he went with a cat hoping to fill the top-tier comic cat void.&amp;nbsp;I'm not trying to become a top-tier anything. I'm just making a character who will vent his id to the world while making pop culture references at a more deeply geeky level than stuff intended to appeal to normals like "Big Bang Theory".&lt;br /&gt;
&lt;br /&gt;
In other words, if you don't get the jokes, then it ain't for you. Belvin probably won't throw in a joke about how much he hates Mondays every week so you won't be scared away by the joke about brace-indenting that you didn't get.&lt;br /&gt;
&lt;br /&gt;
And someday I'll likely put something together that will let people send in their own corporate and/or programmer stupidity (ala Dilbert) so Belvin Klapoknik can have new things to yell about.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As for the future, this is a soft launch. I want a dozen or two comics on the site so people will have a reason to stay for more than ten seconds. I'll see if this keeps going and gets enough eyeballs to justify its existence. If so, then yay. If I run out of ideas (like the Lazy Programmer videos) or nobody cares (like Cryptotwit and Hangtwit), then it'll wither.&lt;br /&gt;
&lt;br /&gt;
What I'd like from you right now isn't publicity. While I'd like for a zillion people to press the "share this comic on  &amp;LT;Insert Social Network Here&amp;GT; buttons under the comic, and I'd like a zillion people to subscribe to the daily comic feed in Google Reader, I also know that there's not currently enough stuff there to compel people to stay. And I don't want you to share a comic unless you actually think it's funny. If you share a joke out of obligation, then your  &amp;LT;Insert Social Network Here&amp;GT; friends probably will find it as unamusing as you did, and that won't help.&lt;br /&gt;
&lt;br /&gt;
So instead I'd just like a little feedback. I've been playing with it in BrowserLab, and it looks reasonable in most browsers. There's still a little tinkering (HTML, like Java, is "write once, port everywhere"), but I'd like to hear what you like and hate.&lt;br /&gt;
&lt;br /&gt;
And, yes, I know Comic Sans is evil. Problem is, damn near every comic font I've found either doesn't look good at a small size or has a very limited character set. I have a comic this week with umlauts, and I didn't want to draw them manually**.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*why my own Twitter feed is the second hit for "Atheist Hulk" is entirely beyond me. I just noticed it, and I suspect someone's stuffing the Google box there.&lt;br /&gt;
&lt;br /&gt;
**and by that, I mean "I don't have a way to draw them manually that isn't horrendously complicated, as these comics, if you haven't figured out yet, are auto-generated from a custom XML-based comic rendering language and never see a paint program.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/omqIUjmi6Uo" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T12:04:03.052-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/01/my-new-project.html</feedburner:origLink></entry><entry><title type="text">New gamedev!</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/Ii_VmiKtTSU/new-gamedev.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2011-01-09T10:07:47-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-9052864485742326704</id><content type="html">Hey, it's my first blog post on the new gamedev.net!&lt;br /&gt;
&lt;br /&gt;
For the record, we were fully aware that gamedev was suffering from severe bitrot for years. While I'm sure you'll see more info from developers more closely associated with the project, the main difference is that we're now using a commercial third-party content management system rather than rolling everything ourselves. Gamedev's been around for a long time, existing well before the advent of high quality CMS, but after a lot of jostling back and forth, we finally decided that there were systems out there that would accommodate our needs and traffic requirements (which aren't insignificant).&lt;br /&gt;
&lt;br /&gt;
And I'm also posting this to point out one fancy new feature that I've been asking for for years. We can now scrape blogs from other sites! Fact is, we have several users with popular blogs on their own servers or on third-party systems (blogger, wordpress, etc). But since you had to enter developer journal/diary/blog entries right on gamedev's servers, you couldn't list your blog on gamedev without manually duplicating your blog entries.&lt;br /&gt;
&lt;br /&gt;
And, far as I know, the only person who's obsessive enough to do that was me :)&lt;br /&gt;
&lt;br /&gt;
So if you have your blog out on another site (like &lt;a href="http://thecodezone.blogspot.com/"&gt;thecodezone.blogspot.com&lt;/a&gt;), you can now keep your blog there and gamedev will mirror it.&lt;br /&gt;
&lt;br /&gt;
Hopefully this will be a big step towards making gamedev better one-stop-shopping for developers documenting their process.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/Ii_VmiKtTSU" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T12:07:47.491-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2011/01/new-gamedev.html</feedburner:origLink></entry><entry><title type="text">Chromium App Store thought-collection</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/3n-tHO5STvs/chromium-app-store-thought-collection.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-12-10T10:53:36-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-4119809860422331925</id><content type="html">&lt;div&gt;Warning: this is a bigass unordered pile of random technical thoughts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I'm just trying to collect my thoughts as to how I'd sell Bulldozer on the Chrome App Store so people could pay a buck, slap it on their ChromeOS netbooks, and start playing. ChromeOS has two different kinds of apps, "packaged" apps, which are zipfiles containing a complete copy of everything your webapp needs to run, and it can contain html, js, swf, and pdf. In structure, it's not all that different from AIR. It's just a complete little bundle of stuff to do a web app.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The other non-packaged method is basically just a shortcut to a web-app running on your server. For example, I could build an html page that grabs a bulldozer swf from my site and displays it full screen. Problem there is that that's gonna cost time and bandwidth. I'd much rather have the user copy my game to his machine and then have it run instantly rather than download it every time. Also, I like the user to be able to play without an internet connection. After all, he paid for it and I don't wanna tell the user when he can and can't play a game.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking at the documentation, the commerce API is only available to the non-packaged games, so Bulldozer for ChromeOS is gonna be required to run from my servers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looks like the process is gonna be something like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User buys Bulldozer from Chrome web store.&lt;/div&gt;&lt;div&gt;2. User gets an icon for the "app", which is just a link to a page on my site (let's say www.thecodezone.com/bulldozerforchrome.php)&lt;/div&gt;&lt;div&gt;3. If user clicks the "app" to run bulldozer, my PHP will quietly ask Google if this person has paid for my game. If "yes", I stream over a SWF of complete Bulldozer. If "no", I serve up an error message or the crippled version that urges him to buy the real thing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While this works, it's pretty hard on bandwidth for users and me. The full-retail Bulldozer SWF is about 10 meg (90% of which is stereo music). Normally that's not a problem for my users because I bundle it up as an EXE tht they install to their machine, so it's a one-time hit. If that's gonna happen every danged time they click the icon, it's a problem. Especially if Google wants this thing to work with pay-by-the-byte phone cards.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mind you, I could do two things to ease up on the bandwidth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. I could make things smaller. I could get Bulldozer down to less than 2 meg by compressing the music more and going with smaller and fewer eye-candy animations. Given that this will likely sell for considerably less than the $9.99 I charge for the full game on my site, that'd be understandable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. I could cache things up. Apparently ChromeOS has some custom directives in the app-manifest that tell Chrome "this file is part of an app, so don't just dump it from the cache when you get bored", so I could mark bulldozer-full.swf suchly. The problem is then that the user now has a full Bulldozer in his cache and could copy it out, so this swf would need to do a little checking to make sure it was launched legitimately. Since the consequence of having a paid app seems to be that it is necessarily non-packaged, I don't think this'll be a problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I think the sequence would ultimately look like this (as a shortcut):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User buys Bulldozer from the Chrome app store.&lt;/div&gt;&lt;div&gt;2. User gets an icon for the "app", which is just a link to a page on my site (let's say www.thecodezone.com/bulldozerforchrome.php)&lt;/div&gt;&lt;div&gt;3. If user clicks the "app" to run bulldozer, my PHP will quietly ask Google if this person has paid for my game. If "yes", I stream over a SWF of complete Bulldozer. If "no", I serve up an error message or the crippled version that urges him to buy the real thing. Note that the SWF might already be cached up, so this step might be skipped.&lt;/div&gt;&lt;div&gt;4. When Bulldozer.swf runs, it receives some tokens or it passes some code back and forth to my server to ensure that it's actually been served from the site and isn't just someone double-clicking on the SWF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although looking at the documentation, packaged apps DO have access to the payment API, but they say that it's "difficult to do securely". So I could do a packaged app thusly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. User downloads Bulldozer, receiving a CRX, which basically contains a static HTML file and a SWF.&lt;/div&gt;&lt;div&gt;2. When user launches the "app", it displays the HTML, which has the SWF embedded. My SWF could be passed the user's info, and then I could communicate directly with Google's authentication server to determine if it's being run legitimately.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When Google says "difficult to do securely", I presume they're talking about how someone could take apart the app (since it's all zipped up on a user's machine) and defeat the token passing. And this is true, although SWF can be made considerably more difficult to decompile than obfuscated Javascript. And in either case (packaged or non-packaged), the user will necessarily have my SWF on his machine, and if he's good enough to decompile, defeat my token-passing, and recompile, it won't make much difference which scheme he's using.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So thus-far it looks like the rules I'm gonna have to follow are:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Paid games will necessarily have to communicate with Google to make sure they're paid for. The only way paid-for apps can run without an internet connection is if they're running on the honor system where the user pays for the app, gets the CRX, and hopefully doesn't put it on bittorrent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. You can package or not package. If you're not packaged, you should either (a) be small or (b) tell Chrome to keep your assets in the cache. And if your assets are static and are rarely updated (as mine are), you might as well be packaged.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. The only way to securely determine if you've been paid for is to have your server talk to Google's server and then serve content dynamically, although this is impractical if your assets are large and relatively static.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. You determine if your app's been paid for via OAuth. You can do that on your own server or directly from your client app. If you do it from your client app (i.e. on the user's machine), then you open your fly if you're easy to decompile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally I must note that Flash apps on ChromeOS are running in the sandbox and won't be able to communicate with a site unless it has a crossdomain.xml file that allows that. I don't know if Google's store-authentication server has that. If it doesn't, I'll necessarily have to relay authentication through my own server. Ultimately I'd rather my SWF communicate with Google directly rather than relay through thecodezone.com. I like to follow the "what if I'm hit by a bus tomorrow" rule which roughly translates as "what if thecodezone.com disappears forever tomorrow". People who have my current games can still play 'em as long as they have the installer and unlock code, as I don't do server authentication. If "is my game paid for" requests always pass through thecodezone.com, then it's required that my authentication code exist on my site forever.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh well, another thing to think of.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/3n-tHO5STvs" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-10T12:53:36.237-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/12/chromium-app-store-thought-collection.html</feedburner:origLink></entry><entry><title type="text">New Bulldozer and Duck Tiles version</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/kUlj4yJjj5E/new-bulldozer-and-duck-tiles-version.html" /><category term="siteannouncements" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-11-16T10:40:22-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-5476706780922180515</id><content type="html">It's just a minor update, but the games have required so few updates that it's newsworthy when it happens. I posted an update to the Windows versions of Bulldozer and Duck Tiles that takes care of a problem saving your settings if your Windows username contains non-Latin characters.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you've experienced a problem saving your settings in Bulldozer or Duck Tiles, you might want to check out the updates. Thanks!&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/kUlj4yJjj5E" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-16T12:40:22.875-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/11/new-bulldozer-and-duck-tiles-version.html</feedburner:origLink></entry><entry><title type="text">Writing and reading and listening and money</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/Xo9JFYSE6Q8/writing-and-reading-and-listening-and.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-11-12T07:59:58-08:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-6587188056947483059</id><content type="html">Wow, it's the first time in 12 years that I went an entire calendar month without blogging. I've actually been finding myself with less to say as the years go on. I'm reading more, writing less, and almost never listening because there's very little worth listening to. My TV viewing is now pretty-much restricted to &lt;i&gt;Breaking Bad&lt;/i&gt; (which is gonna be a problem because I'm almost caught up and new episodes ain't coming out for six months) and reruns of &lt;i&gt;iCarly&lt;/i&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[/angryoldfart]&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I actually do have a couple of mentions money-wise. It's now the end of the year, which means that you should read my &lt;a href="http://thecodezone.blogspot.com/2009/12/end-of-year-reminders.html"&gt;blog entry from last year&lt;/a&gt; about getting your credit reports. Suffice it to say that there is one way that is &lt;i&gt;actually &lt;/i&gt;free and a dozen ways that &lt;i&gt;pretend &lt;/i&gt;to be free but will end up charging you a lot of money. So don't be stupid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next is a little discovery that Shelly and I found, and it's really only useful if you have kids. Paypal has a "student account" that you can get at &lt;a href="https://student.paypal.com/"&gt;https://student.paypal.com&lt;/a&gt;. Basically it's a sub-account of your own paypal account. It has its own login and password and it works very similarly to a standard paypal account, except that rather than link to an external bank account, it links to your own paypal account and it exists as a "child" of your account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's also got a few handy features:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. You can set your "main" paypal account to make regular automatic payments into it, ala allowance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. You can get a debit card for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. It's got parental controls, so you can decide if your kid can send and/or accept money without your permission.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. You ultimately have control over the balance, so you can yank your kid's money right back outta the account if they're abusing the privilege.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And that's worked brilliantly for Maggie as far as teaching her to be responsible with money. We have it set so it'll deposit a few bucks for her allowance every Friday. She can (and does) go to paypal.com, log in, and check her balance whenever she wants. If she wants to buy something online, then she can talk to me and we'll buy it together (responsible parent that I am). And if she wants to buy something locally, then she can buy it with the debit card (which I keep in my wallet, thankyouverymuch).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it's really doing the job of teaching her about money. For example, last week she found some "Silly Bands" (funny shaped rubber bands) at Wal Mart that she wanted, but she decided that it wasn't worth it because she was saving up for some better stuff and just spending her allowance on frivolous junk sets you back from getting something really cool.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's also a good pride thing. A couple of months ago, she finally got enough cash to buy a Nintendo handheld. She'd been keeping an eye on prices, so she knew where they were cheapest and who had pink ones available. And you can bet she told everybody in the freakin' store that she'd been saving up and she was buying this expensive toy WITH HER OWN MONEY!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it also helped on a recent trip to Disney. Rather than have her pestering me to buy T-shirts and toys when we got to Disney, I paypal-ed her a few extra dollars "vacation cash" and told her she could buy anything she wanted. And she did spend some time looking for exactly what she wanted.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And what did she end up getting?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yep, a mouse-ear hat with her name embroidered on it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3.jpg"&gt;&lt;img src="http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3.jpg" border="0" alt="" style="cursor: pointer; width: 500px; height: 375px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/Xo9JFYSE6Q8" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-12T09:59:58.106-06:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm5.static.flickr.com/4029/5141351238_e34a2cd5a3_t.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/11/writing-and-reading-and-listening-and.html</feedburner:origLink></entry><entry><title type="text">Chinese games and localization hints</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/bn2z7HWK88A/chinese-games-and-localization-hints.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-09-28T08:56:21-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-3452010750793854605</id><content type="html">Been spending the last few days localizing, as Mochimedia (now owned by a Chinese company) offered free localization services for any customers who wanted to release their games in China.&lt;br /&gt;&lt;br /&gt;I'm not sure exactly when my games will start popping up on Chinese sites. But until then, you can check 'em out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/bafflebees_cn/bafflebees_unltd_cn.swf"&gt;BaffleBees&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v689/chesscards_cn.swf"&gt;ChessCards&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v687/balloon2007_cn.swf"&gt;Ballistic Balloon Baboon Bounce&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v688/brainbones_cn.swf"&gt;Brain Bones&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v691/confusebox_cn.swf"&gt;ConFusebox&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/2_v32/confusebox2_cn.swf"&gt;ConFusebox 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v692/countdowndice_cn.swf"&gt;Countdown Dice&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v693/doubletwelve_cn.swf"&gt;Double Twelve&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v694/headon_cn.swf"&gt;Head On Collision&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v695/meltdown_cn.swf"&gt;Meltdown&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v696/olivewars_cn.swf"&gt;Olive War&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v697/pokerpatience_cn.swf"&gt;Poker Patience&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v698/poppies_cn.swf"&gt;Pop Pies&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v698/poppies_cn.swf"&gt;Pop Pies 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/3_v3/poppies3_cn.swf"&gt;Pop Pies 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v738/shisen_cn.swf"&gt;Shi Sen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v739/thinktank_cn.swf"&gt;Think Tank&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v740/voracity_cn.swf"&gt;Voracity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v741/worm_cn.swf"&gt;Worm Sojourn&lt;/a&gt;&lt;br /&gt;&lt;a href="http://games.mochiads.com/c/g/_v742/zombiekitten_cn.swf"&gt;Zombie Kitten Attack!&lt;/a&gt;&lt;div&gt;&lt;a href="http://games.mochiads.com/c/g/_v742/zombiekitten_cn.swf"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Now here's some tips on translating your games. This is my third or fourth time translating a whole pile of games into another language, and here are a few things I've learned.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Don't overengineer the process. &lt;/b&gt;Chances are, your text is going to be passed along to an entry-level writer, so don't make the process needlessly complicated.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At one company I worked at, they built a whole Java-based database of their text, with every string tagged with a language, and then a nightly process would convert the database into a series of source files that the game could read. They then gave their translators access to the database with the thinking it would make everything easy and automated. The job got done, but it wasn't easy for the translators.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When it came time for my project, I asked if I could just paste all of my in-game text into an Excel spreadsheet and email it to 'em, and they were THRILLED.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. Plan to make a couple of passes at it. &lt;/b&gt;Inevitably, something won't sound quite right in practice, and you'll need to make another pass or two with the translator until everything looks right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. If you have something poetic or idiomatic or something else that just won't translate well, offer a more "literal" phrase that will translate better.&lt;/b&gt; For example, in my game "Brain Bones", the big button to roll the dice says "Roll The Bones". While the phrase "Roll The Bones" can be readily translated into another language, it's likely does not still mean "throw the dice" in that language. In such a case, provide alternate text that's free of nuance. . .like "throw the dice".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the case of my game text spreadsheet, I had two columns of text. One contained the actual in-game text, and the next column contained alternative text if I felt the in-game text wouldn't translate well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ditto for alliterative text. While "Ballistic Balloon Baboon Bounce" can be translated literally, it will sound horribly stilted in another language. So I offered "Bouncing Balloon Game" in the alternative-text column. Between the actual and the alternative text, hopefully your translator will be able to come up with something reasonable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. It's monkey-work, so take it slowly and methodically.&lt;/b&gt; Translating is mostly just cut-n-paste, so take some time and be careful about it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Test everything to make sure it all fits once you're done.&lt;/b&gt; This was a much bigger problem with German than anything else, as Germans will happily construct a single word out of several words to create a 30+ letter monstrosity that'll fall off the edges of your dialog boxes. Look over everything and make sure it all fits.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;6. Make everything clear to your translator.&lt;/b&gt; Hopefully your translator is a native speaker of the target language. If so, that means that they're NOT a native speaker of your language and they might trip up on stuff that sounds fine to you (like "PRESS THE A KEY") but doesn't parse in their "not thinking in your language" brains. Make it clear to 'em that you're available and you're happy to provide more literal text if they need it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;7. Don't get married to your fonts.&lt;/b&gt; The "Baby Kruffy" font I used in Ballistic Balloon Baboon Bounce doesn't have Asian characters. Heck, it doesn't even have lowercase! In fact, you'll notice that all of the Chinese characters in my games are the same font, Microsoft YaHei. It's a boring font (it's Arial with a full Asian character set), but it is a "safe" font that's guaranteed to look right on all of the computers the games will use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;8. Account for time zones.&lt;/b&gt; My afternoon is China's middle of the night and vice-versa, so I wasn't in a hurry.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/bn2z7HWK88A" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-28T10:56:21.845-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/09/chinese-games-and-localization-hints.html</feedburner:origLink></entry><entry><title type="text">How to make a game design document</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/iRRGxOx__ys/how-to-make-game-design-document.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-09-17T08:35:22-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-7114759913806538370</id><content type="html">I just noticed that &lt;a href="http://gameinformer.com/b/news/archive/2010/09/16/obama-challenges-kids-to-design-video-games.aspx"&gt;President Obama endorsed a game design contest aimed at kids&lt;/a&gt;, so I thought I'd post my kid's game design document that she drew up about a year ago.&lt;br /&gt;&lt;br /&gt;Just to get her brain working, I asked her to design me a game, and she went a bit overboard. I just gave her one word to get her started, "merponycorn". That is, of course, an ad-hoc neologism describing a unicorn pony that lives under the sea. . .&lt;br /&gt;&lt;br /&gt;A little while later she returned with the main layout of "Ponytopia", showing all the main locations, like the Candy Kingdom, the Beach, the Resort, the Apartment Building, the Fun House, and the Young Club. The Apartment Building is where all the merponycorns live, and when you sign up you get a room you can customize.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_3.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Here are the five races of merponycorns, specifically the Pop Star Merponycorn, the Princess Merponycorn, the Fairy Merponycorn, the Magic Merponycorn, and the Rainbow Merponycorn. Each race of merponycorn has different attributes and powers.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_1.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Finally, here's some miscellaneous notes regarding how to get points and spend them as well as the merponycorn dress-up application. She went quite far describing the economics of Ponytopia, as economics are a big cornerstone of every virtual world. Apparently you play games to get Ponycoins which you can then use to buy seeds and plant flowers in your virtual garden. Some flowers will sprout into pets that will follow you around and you can care for.&lt;br /&gt;&lt;br /&gt;Here's her page of miscellaneous notes.&lt;br /&gt;&lt;br /&gt;&lt;p align=center&gt;&lt;img src="http://members.gamedev.net/johnhattan/diary/ponytopia_Page_2.png"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Oddly I think she's on to something here. Unfortunately, it's quite a bit bigger than a one-person project (as I feel I'll end up doing all the code), and even if I did go with an off-the-shelf solution like Electroserver for much of the underpinnings, there's still a lot there.&lt;br /&gt;&lt;br /&gt;So I thought I'd share it as an example of what you get when you tell a little kid to design a game based on a single word. I was really hoping more for "make your merponycorn jump on bubbles to win points" than a whole friggin MMORPG.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/iRRGxOx__ys" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T10:35:22.718-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/09/how-to-make-game-design-document.html</feedburner:origLink></entry><entry><title type="text">A couple of minor changes</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/1BNe0rmu1lI/couple-of-minor-changes.html" /><category term="siteannouncements" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-08-17T06:49:23-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-6650317037396314417</id><content type="html">First off, the Google Checkout issue is fixed. The site should be in the pink again.&lt;br /&gt;&lt;br /&gt;Second, I made a couple of changes to the look. The old Flash-based menu has been replaced with a shiny new standards-compliant HTML menu. The old one worked, but it gave the HTML purists fits.&lt;br /&gt;&lt;br /&gt;Note that HTML menus tend to give some browsers fits (much like the Flash menu gave iPods and iPads fits). If you see something other than a classy gray menu-bar, please email support@thecodezone.com and let me know.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/1BNe0rmu1lI" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-17T08:49:23.735-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/08/couple-of-minor-changes.html</feedburner:origLink></entry><entry><title type="text">Google checkout issues</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/w2w3Do-7fQ4/google-checkout-issues.html" /><category term="siteannouncements" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-08-09T06:18:56-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-3690158241823205172</id><content type="html">Looks like my shared SSL certificate is expired. Fortunately for me, all that affects is Google Checkout. As it stands, I'll be fulfilling any google checkout orders by hand until that issue is resolved. My service provider is aware of the issue and is working to fix it.&lt;br /&gt;&lt;br /&gt;Thanks for your patience.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/w2w3Do-7fQ4" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-09T08:18:56.313-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/08/google-checkout-issues.html</feedburner:origLink></entry><entry><title type="text">Handy piece of code</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TheCodeZoneBargainBasementBlog/~3/9nJz-1AX0iI/handy-piece-of-code.html" /><author><name>John Hattan</name><email>noreply@blogger.com</email><uri>https://plus.google.com/106460508525236363626</uri></author><updated>2010-08-04T13:12:39-07:00</updated><id>tag:blogger.com,1999:blog-5927544581291786949.post-416910369498440079</id><content type="html">Here's a quick-n-simple piece of AS3 (or Javascript) that calculates the point on a line closest to a given point. It took me a couple of tries to get it right, so I figured I would share it.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;var nearestPtToLine = function(segA:Point, segB:Point, p:Point, infinite:Boolean = true):Point&lt;br /&gt;{&lt;br /&gt;  var dx:Number = segB.x - segA.x&lt;br /&gt;  var dy:Number = segB.y - segA.y&lt;br /&gt;  var u:Number = ((p.x - segA.x) * dx + (p.y - segA.y) * dy) / (dx * dx + dy * dy)&lt;br /&gt;&lt;br /&gt;  if (!infinite)&lt;br /&gt;  {&lt;br /&gt;    if (u &gt; 1)&lt;br /&gt;      u = 1&lt;br /&gt;    else if (u &lt; 0)&lt;br /&gt;      u = 0&lt;br /&gt;  }&lt;br /&gt;  return new Point(segA.x + u * dx , segA.y + u * dy)&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;seg1 and seg2 define a line segment. p is the point to test. infinite assumes that the line extends beyond seg1 and seg2. If you need the distance from a point to a line, just use the distance function in the flash.geom.Point object.&lt;img src="http://feeds.feedburner.com/~r/TheCodeZoneBargainBasementBlog/~4/9nJz-1AX0iI" height="1" width="1"/&gt;</content><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-04T15:12:39.294-05:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://thecodezone.blogspot.com/2010/08/handy-piece-of-code.html</feedburner:origLink></entry></feed>
