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

<channel>
	<title>NASA Trained Monkeys</title>
	<atom:link href="http://www.nasatrainedmonkeys.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nasatrainedmonkeys.com</link>
	<description>Mobility experts</description>
	<lastBuildDate>Fri, 08 Feb 2013 20:11:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4</generator>
		<item>
		<title>How we are using Google Analytics in our game and what we learned from it</title>
		<link>http://www.nasatrainedmonkeys.com/blog/how-we-are-using-google-analytics-in-our-game-and-what-we-learned-from-it/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-we-are-using-google-analytics-in-our-game-and-what-we-learned-from-it</link>
		<comments>http://www.nasatrainedmonkeys.com/blog/how-we-are-using-google-analytics-in-our-game-and-what-we-learned-from-it/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 15:01:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[shaman doctor]]></category>

		<guid isPermaLink="false">http://www.nasatrainedmonkeys.com/?p=284</guid>
		<description><![CDATA[Roughly a month ago we released our first casual game: Shaman Doctor. Shaman Doctor features 36 one minute levels and two survival modes, where each level has a high score and a starred punctuation. There are several power-ups and it also features an in-game currency named karma. Finally, the game includes a store where the [...]]]></description>
			<content:encoded><![CDATA[<p>Roughly a month ago we released our first casual game: <a href="http://itunes.apple.com/us/app/shaman-doctor/id476559728?mt=8" target="_blank">Shaman Doctor</a>.</p>
<p>Shaman Doctor features 36 one minute levels and two survival modes, where each level has a high score and a starred punctuation. There are several power-ups and it also features an in-game currency named karma. Finally, the game includes a store where the player can get power-up improvements and new power-ups. The player gets karma points (money) by getting good scores and playing more levels.</p>
<p>We used Google Analytics in the process to track and monitor some events that we think are worth sharing.</p>
<h1>Difficulty level</h1>
<p>We are keeping track of completed levels and failed levels. This lets us perfect the score needed to get each number of stars. We discovered that it was too easy to get 3 stars in some levels, while it proved to be almost impossible even for the skilled players in the final ones.</p>
<p>Tracking completed levels also shows how engaging the game is. If 90% of the players never get past the first few levels then all the fancy stuff beyond them is never going to be enjoyed. That&#8217;s why we are considering moving more cool features to the first levels.</p>
<h1>Purchases</h1>
<p>Using analytics in the store has several advantages. First of all, you get to know which are the most liked items and which ones are unattractive or just too expensive. Because of having our own currency it&#8217;s also possible to know how many users are buying karma using their credit cards and how many users are only playing more to get the necessary amounts of money.</p>
<p>With these results we have been able to adjust the prices for the next update, as well as balance the different power-ups better.</p>
<h1>Discounts and special offers</h1>
<p>We sometimes offer the player a special discount at the end of a level. These discounts are usually in the form of buying specific items at half price or less.</p>
<p>Knowing the most liked items and cross-referencing that information with the current stats gathered on discount purchases will let us work on more interesting and effective offers in the next update and drop those that aren&#8217;t attractive.</p>
<h1>Achievements</h1>
<p>Achievements often involve some kind of checkpoint in the game cycle: &#8220;Killed 1000 cells&#8221;, &#8220;Used 25 health potions&#8221;, etc. The number of unlocked achievements helps understand how your users are interacting with the game. I.e: if almost nobody unlocks the &#8220;Used 25 health potions&#8221; achievements we should start wondering if potions are just unattractive because they result too expensive or perhaps the game is easy enough so you don&#8217;t really need to use potions.</p>
<p>We also use achievements to summarize data that we could derive from basic events such as levels completed and failed. I.e: include achievements like &#8220;Completed first 10 levels&#8221;, &#8220;Got 3 stars in all the levels!&#8221;, etc. This has proven to be a real time saver and a great way to avoid overlooking events.</p>
<h1>Localization</h1>
<p>The default has always been English. However, after a month in the appstore, we realize that half the downloads are from Asia, mainly China and Vietnam. This imposes a challenge and maybe a good opportunity of expansion, as a Chinese translation would probably help a lot in gaining more momentum inside the Asian giant.</p>
<h1>Conclusion</h1>
<p>Keeping track of these kind of events is essential for measuring the level of engagement your users are experiencing. Even if a hundred people tested the game before launching, nothing can beat the real data provided by thousands around the globe.</p>
<p>The only way to continuously improve the game is to measure, introduce modifications you think are going to make your game more awesome, measure again. Repeat.</p>
<p>Analytics is also a core part to any marketing decision. Being able to measure the items attractiveness is invaluable information to set the right price and work around discounts and special offers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nasatrainedmonkeys.com/blog/how-we-are-using-google-analytics-in-our-game-and-what-we-learned-from-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picking a sprite sheet creator</title>
		<link>http://www.nasatrainedmonkeys.com/blog/picking-a-sprite-sheet-creator/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=picking-a-sprite-sheet-creator</link>
		<comments>http://www.nasatrainedmonkeys.com/blog/picking-a-sprite-sheet-creator/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 17:44:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[cocos2d-iphone]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[sprite sheet]]></category>
		<category><![CDATA[spritehelper]]></category>
		<category><![CDATA[texturepacker]]></category>
		<category><![CDATA[zwoptexapp]]></category>

		<guid isPermaLink="false">http://www.nasatrainedmonkeys.com/?p=258</guid>
		<description><![CDATA[While developing our lastest cocos2d iOS game: Shaman Doctor we needed a sprite sheet creator. In this blog post we will describe our experience with three different applications which do exactly that: - zwoptexapp - Sprite Helper - TexturePacker Why would I need a sprite sheet creator? When you draw a CCSprite, cocos2d needs to: 1) Upload the texture to the [...]]]></description>
			<content:encoded><![CDATA[<p><em>While developing our lastest <a title="cocos2d-iphone" href="http://www.cocos2d-iphone.org/" target="_blank">cocos2d</a> iOS game: <a title="Shaman Doctor" href="http://www.nasatrainedmonkeys.com/portfolio/shaman-doctor/">Shaman Doctor</a> we needed a sprite sheet creator. In this blog post we will describe our experience with three different applications which do exactly that:</em></p>
<p><em></em>- <a title="zwoptexapp" href="http://zwoptexapp.com/" target="_blank">zwoptexapp</a></p>
<p>- <a title="Sprite Helper" href="http://www.spritehelper.org/" target="_blank">Sprite Helper</a></p>
<p>- <a title="TexturePacker" href="http://www.texturepacker.com/" target="_blank">TexturePacker</a></p>
<h1></h1>
<h1>Why would I need a sprite sheet creator?</h1>
<p>When you draw a <strong>CCSprite</strong>, cocos2d needs to:</p>
<p>1) Upload the texture to the video memory</p>
<p>2) Switch to that specific texture when it needs to render</p>
<p>In relation to <strong>(1)</strong>, the texture is not uploaded as it is. The final size in memory depends on the GPU (iOS devices have a PowerVR graphics chip). This particular chip resizes the texture to powers of 2.</p>
<h3>Examples</h3>
<p>- If your texture is 100x100px it will end up as a 128x128px texture in memory.</p>
<p>- If your texture is 100x200px it will end up as a 128x256px texture in memory.</p>
<p>Why can&#8217;t we place every image in the same texture optimizing the memory usage <strong>(1) </strong>and avoiding texture switching <strong>(2)</strong>?</p>
<p>This is what a sprite sheet is for. A sprite sheet or a texture atlas is a single image containing a number of smaller sprites.<br />
Two files are needed, the texture and a dictionary with the information of the position and size of every sprite inside the texture.</p>
<h2>zwoptexapp</h2>
<p>We first tried zwoptexapp. zwoptexapp was the first application that created a sprite sheet supported by <a title="cocos2d-iphone" href="http://www.cocos2d-iphone.org/" target="_blank">cocos2d-iphone</a>.<br />
Since we were targeting retina and non retina display, we needed both a SD and a HD texture. We had a folder with the SD resources and a second one with the HD ones.</p>
<p>Every time we needed to modify an asset we needed to create both textures. Quite painful <img src='http://www.nasatrainedmonkeys.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h2>Sprite Helper</h2>
<p>After testing zwoptexapp we started using Sprite Helper since it had the &#8220;Auto SD&#8221; feature. We used Sprite Helper for some time but we missed having the possibility of choosing the texture compression and picking the pixel format.  For a better understanding of what this means you can check this Ray Wenderlich&#8217;s blog post: <a title="raywenderlich's blog post" href="http://www.raywenderlich.com/2361/how-to-create-and-optimize-sprite-sheets-in-cocos2d-with-texture-packer-and-pixel-formats" target="_blank">How to Create and Optimize Sprite Sheets in Cocos2D with Texture Packer and Pixel Formats</a>.</p>
<p>It feels that Sprite Helper shows its real power when it&#8217;s used with his &#8220;cousin&#8221; <a title="Level Helper" href="http://www.levelhelper.org/" target="_blank">Level Helper</a>.</p>
<h2>Texture Packer</h2>
<p>After reading Ray Wenderlich&#8217;s <a href="http://bit.ly/h7DQeJ" target="_blank">blog post</a> about texture and pixel formats we started using Texture Packer.<br />
Until the end of the game development we used this tool.</p>
<p>Having Texture Packer output our textures in pvr.ccz format and using dithered sprites made our application load faster and decreased the memory used by textures.</p>
<h1></h1>
<h1>Conclusions</h1>
<p>- Texture Packer is definitely a winner for iOS development. We would like to use SpriteHelper with LevelHelper in a future game. <a title="Shaman Doctor" href="http://www.nasatrainedmonkeys.com/portfolio/shaman-doctor/" target="_blank">Shaman Doctor</a> wasn&#8217;t a good test subject for this combo.</p>
<p>- <del>Texture Packer is not as friendly as Sprite/Level Helper if you are targeting multiple platforms. </del>(Read the comments for an explanation)</p>
<p>- Texture Packer misses some output formats: we would love to have the possibility of exporting the texture as ETC for instance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nasatrainedmonkeys.com/blog/picking-a-sprite-sheet-creator/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Bug Reporter</title>
		<link>http://www.nasatrainedmonkeys.com/blog/bug-reporter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bug-reporter</link>
		<comments>http://www.nasatrainedmonkeys.com/blog/bug-reporter/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 21:12:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Reporting]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.nasatrainedmonkeys.com/?p=159</guid>
		<description><![CDATA[At NASA Trained Monkeys we&#8217;ve been using a tool to make it easier for our clients to send us their feedback. This tool is called Bug Reporter and it&#8217;s essentially an overlay that will appear to the right of the screen with two buttons: one takes you to the help menu and the other one [...]]]></description>
			<content:encoded><![CDATA[<p>At NASA Trained Monkeys we&#8217;ve been using a tool to make it easier for our clients to send us their feedback.</p>
<p>This tool is called Bug Reporter and it&#8217;s essentially an overlay that will appear to the right of the screen with two buttons: one takes you to the help menu and the other one takes you to the <b>File a new bug</b> interface.</p>
<p>&nbsp;</p>
<h3>What can you do with it?</h3>
<p>Bug Reporter provides you with a simple, easy to use interface for reporting bugs back to the developer. The main target of this tool is to help during the development stages of your app. Wether it be reporting undesirable behavior or broken layouts Bug Reporter will help you get the feedback to the right person.</p>
<p>To file a bug all you have to do is fill in the title information and tap on <b>Report</b>. That&#8217;s it!</p>
<p style="text-align: center;"><a href="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-06-at-6.54.11-PM1.png"><img class="size-full wp-image-173 aligncenter" title="Interface1" src="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-06-at-6.54.11-PM1.png" alt="" width="503" height="446" /></a></p>
<p>Of course there&#8217;s a lot more you can do: for example, add a detailed description of what the problem is, or attach a screenshot of the current application state.</p>
<p>For those cases where a picture is worth more than a thousand words you can even anotate on the screenshot you attached (incredibly useful for when describing exactly what you want with words will be tricky)</p>
<p style="text-align: center;"><a href="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-06-at-7.13.10-PM.png"><img class="size-full wp-image-178 aligncenter" title="Anotations" src="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-06-at-7.13.10-PM.png" alt="" width="238" height="446" /></a></p>
<h3>What services does it integrate with?</h3>
<p>Right now we support two main ways to send feedback:</p>
<p style="text-align: justify; padding-left: 30px;">• Email</p>
<p style="text-align: justify; padding-left: 30px;">• Pivotal Tracker</p>
<p>If you are using email the default email interface will pop up when you tap on report and an already filled up email will be sent as soon as you tap Send.</p>
<p>If you are using Pivotal Tracker then the app will ask you for your credentials and file the bug for you. If you are worried about security: the reporter will save the access token, not your email and password.</p>
<h3></h3>
<h3>How can i use it in my project?</h3>
<p>In order for Bug Reporter to work you need to follow these steps:</p>
<p style="padding-left: 30px;">• Download the <b>embedded framework</b> from <a href="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/NTReporter.embeddedframework.zip">here</a></p>
<p style="padding-left: 30px;">• Add the <b>-ObjC</b> and <b>-all_load</b> flags to the <b>Other Linker Flags</b> option in your project Build Settings</p>
<p style="padding-left: 30px;">• Add the following iOS SDK frameworks and libraries</p>
<p style="padding-left: 60px;"> <span class="Apple-style-span" style="font-style: italic;">CFNetwork.framework<br />
</span><span class="Apple-style-span" style="font-style: italic;">MessageUI.framework<br />
</span><span class="Apple-style-span" style="font-style: italic;">MobileCoreServices.framework<br />
</span><span class="Apple-style-span" style="font-style: italic;">QuartzCore.framework<br />
</span><span class="Apple-style-span" style="font-style: italic;">SystemConfiguration.framework<br />
</span><span class="Apple-style-span" style="font-style: italic;">libz.dylib</span></p>
<address style="padding-left: 90px;"> </address>
<div>
<p>Once you are done adding that initializing Bug Reporter is easy. Whatever reporting method you plan on using you need to import <b>&lt;NTReporter/NTReporter.h&gt;</b></p>
<p style="padding-left: 30px;">• If you plan on using email reporting:</p>
</div>
<p style="padding-left: 60px;">In your appDelegate, right after adding the rootViewController to the window write the following</p>
<div style="padding-left: 30px;">
<pre style="padding-left: 30px;">  <span style="color: #800080;">NTReporter</span> *rep = [<span style="color: #800080;">NTReporter</span> <span style="color: #000080;">sharedReporter</span>];</pre>
<pre style="padding-left: 30px;">  rep.<span style="color: #800080;">bugReportingType</span> = <span style="color: #000080;">BugReportingTypeEmail</span>;</pre>
<p></p>
<p style="padding-left: 30px;">There are many more options for formatting your email, be sure to check the documentation for more info</p>
</div>
<div style="padding-left: 30px;">
<p>• If you want to track your bugs using Pivotal Tracker:</p>
</div>
<p style="padding-left: 60px;">In your appDelegate, right after adding the rootViewController to the window write the following (you can get the Pivotal Tracker project id from the pivotal tracker webpage, it appears at the end of the URL when you are viewing your project stories)</p>
<pre style="padding-left: 90px;"><span style="color: #800080;">NTReporter</span> *rep = [<span style="color: #800080;">NTReporter</span> <span style="color: #000080;">sharedReporter</span>];</pre>
<pre style="padding-left: 90px;">rep.<span style="color: #800080;">bugReportingType</span> = <span style="color: #000080;">BugReportingTypePivotalTracker</span>;</pre>
<pre style="padding-left: 90px;">rep.<span style="color: #800080;">trackerProjectId</span> = <span style="color: #ff0000;">@"358317"</span>;</pre>
<pre style="padding-left: 90px;">rep.<span style="color: #800080;">trackerShouldIncludeAttachments</span> = <span style="color: #ff00ff;">YES</span>; <span style="color: #339966;">// Some accounts </span></pre>
<pre style="padding-left: 420px;"><span style="color: #339966;">don't allow attachments</span></pre>
<pre style="padding-left: 420px;"></pre>
<p>&nbsp;</p>
<h3>What&#8217;s next?</h3>
<p>We are planning on adding support for more tracking providers: Basecamp, Fogbugz, etc; providing iPad support is also in our priority list.</p>
<p>If you need a particular tracker covered just leave a comment or contact us via <a href="mailto:contact@nasatrainedmonkeys.com">email</a> or <a href="http://twitter.com/NTMonkeys">twitter</a> and we&#8217;ll try to help you out</p>
<pre></pre>
<p>Give it a try and let us know what you think</p>
<p>Download the framework <a href="http://www.nasatrainedmonkeys.com/wp-content/uploads/2011/10/NTReporter.embeddedframework.zip">here</a>. Remember, right now it only supports iPhone and iPod apps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nasatrainedmonkeys.com/blog/bug-reporter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
