<?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>RasterGrid Blog &#187; Android</title>
	<atom:link href="http://rastergrid.com/blog/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://rastergrid.com/blog</link>
	<description>A technical blog from Daniel Rákos (aka aqnuep)</description>
	<lastBuildDate>Fri, 04 Nov 2011 18:10:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Pocket Soccer&#8217;s story so far&#8230;</title>
		<link>http://rastergrid.com/blog/2011/07/pocket-soccers-story-so-far/</link>
		<comments>http://rastergrid.com/blog/2011/07/pocket-soccers-story-so-far/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 18:32:16 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[football]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[soccer]]></category>
		<category><![CDATA[store]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=585</guid>
		<description><![CDATA[Almost four months passed since I&#8217;ve released my first Android game called Pocket Soccer. Game was very well received and even though its popularity showed some decline lately. In this post I would like to present some data about the lifecycle of Pocket Soccer so far, including my experience with alternative markets. Also, I will]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2011%252F07%252Fpocket-soccers-story-so-far%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Pocket%20Soccer%27s%20story%20so%20far...%22%20%7D);"></div>
<p><img class="alignleft" src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-promo-graph.png" alt="" width="180" height="120" />Almost four months passed since I&#8217;ve released my first Android game called Pocket Soccer. Game was very well received and even though its popularity showed some decline lately. In this post I would like to present some data about the lifecycle of Pocket Soccer so far, including my experience with alternative markets. Also, I will present some of the achievements it got. Finally, I would like to talk about the future development of Pocket Soccer that many people were interested in.<br />
<span id="more-585"></span><br />
<h2>The Evolution</h2>
<p><a href="http://www.babble.com/products/kids-products/android-apps-for-kids-2011" onclick="pageTracker._trackPageview('/outgoing/www.babble.com/products/kids-products/android-apps-for-kids-2011?referer=');"><img class="alignright" src="http://www.babble.com/badges/images/badge_droidkids.png" alt="We were chosen as one of Babble.com's top 25 droid apps for kids! Click this badge to learn more." width="234" height="333" /></a>I started the development somewhen in February, Pocket Soccer being my first Android game and, in general, my first real Android application. Actually, I was experimenting with very simple Android demo applications using the emulator already earlier, however, real development was made possible only after January, when I bought my Galaxy S. After roughly a month, I&#8217;ve published the first version of Pocket Soccer on the Android Market.</p>
<p>At that time, Pocket Soccer was a bit far from a polished, competitive game, there was no social network integration, no leaderboard, even the training mode was not available yet and, of course it contained quite some bugs. The reason behind the later was that I hadn&#8217;t have enough experience yet with the platform and I was also unable to test it on many devices as I only own a single Android device, so I had to ask from time to time my friends to give it a try (the later being still true as I did not have yet the chance to invest on further devices).</p>
<p>Shortly after, Ben Camenker from Scoreloop contacted me with the offer of integrating the Scoreloop social networking framework into Pocket Soccer. Of course, I was interested and thanks to Ben not so much after the first release I&#8217;ve integrated Scoreloop into Pocket Soccer, bringing the still great performing rating system and online leaderboard to the game.</p>
<p>Pocket Soccer continued its evolution with the addition of the training mode, that I actually wanted to include from the beginning, but didn&#8217;t have the necessary time to do it in the timeframe I wanted to keep. Meanwhile, the game also became much more mature as I was able to track down most of the issues the players reported.</p>
<p>While there are still some bugs hanging around (many of them deeply lying inside the 3rd party libraries and frameworks the game uses) I think the game reached some sort of completeness, even though I&#8217;m still planning to add new features to it (however, I also want to allocate some time for a next game as well).</p>
<h2>The Numbers</h2>
<p>Now, I would like to talk a little bit about the numbers: download counts, active installs and leaderboard members. The game started with very moderate download counts at the beginning. Actually this is the most stressful period of a mobile game developer as here it will turn out whether the game will be noticed or it will go down the drain in the huge pool of apps available for such a popular platform as Android is.</p>
<p>For Pocket Soccer, the great entry happened at the beginning of May, roughly eight weeks after the first release. Since then, more than 350.000 people downloaded Pocket Soccer and there are even currently over 160.000 active installs and around 10.000 active players each day. This result exceeded all of my expectations and I would like to say thanks to all the poeple who downloaded the game and I hope that, at least most of you, have or had a great time playing it. If you don&#8217;t mind, I would also like to share some figures with you:</p>
<div id="attachment_598" class="wp-caption aligncenter" style="width: 569px"><a href="http://rastergrid.com/blog/wp-content/uploads/2011/07/download_stats.png"><img class="size-full wp-image-598  " src="http://rastergrid.com/blog/wp-content/uploads/2011/07/download_stats.png" alt="Download statistics" width="559" height="249" /></a><p class="wp-caption-text">Pocket Soccer total downloads (blue) and active installs (red) over time.</p></div>
<p>Here, I would like to take the chance and talk a little bit about the alternative Android market places. This may be interesting mostly to fellow developers who are planning to submit their applications to alternative markets. Well, if you ask me, I would say that it not worth the effort, but don&#8217;t believe me, believe the numbers&#8230;</p>
<p>Shortly after releasing Pocket Soccer on the Android Market, I gave a try to a few alternative markets and download sites, namely to AndroidPIT, SlideME, AppsLib and the Amazon AppStore, Pocket Soccer appearing on the later from the market&#8217;s launch. At the beginning even those few downloads meant a lot for me, but after almost four months, the picture is quite disappointing. Here you can see the number of downloads Pocket Soccer acquired at each market so far:</p>
<table style="width: 100%;" border="0">
<tbody>
<tr>
<td style="text-align: center; background-color: #82b747;"><strong>Distribution Network Name</strong></td>
<td style="text-align: center; background-color: #82b747;"><strong>Download count</strong></td>
</tr>
<tr>
<td style="text-align: center;">Android Market</td>
<td style="text-align: right; padding-right: 100px;">352 260</td>
</tr>
<tr>
<td style="text-align: center;">SlideME</td>
<td style="text-align: right; padding-right: 100px;">6 363</td>
</tr>
<tr>
<td style="text-align: center;">AndroidPIT</td>
<td style="text-align: right; padding-right: 100px;">5 117</td>
</tr>
<tr>
<td style="text-align: center;">AppsLib</td>
<td style="text-align: right; padding-right: 100px;">1 660</td>
</tr>
<tr>
<td style="text-align: center;">Amazon AppStore</td>
<td style="text-align: right; padding-right: 100px;">1 301</td>
</tr>
</tbody>
</table>
<p>As you can see, the four alternative markets barely contribute to a 4% of the number of total downloads, even though SlideME and the Amazon AppStore can be really thought of as big players of the alternative market business.</p>
<p>I don&#8217;t want to discourage any of the developers to give a try to alternative markets as others may have much more success with them, I just wanted to share my personal experience with them. If anybody has much different figures then I would be really interested in it so please take your time and write a comment about it.</p>
<h2>The Achiements</h2>
<p>Besides the spectacular number of downloads and active players, Pocket Soccer received a lot of other achievements, including many positive ratings and comments, as well as several great reviews, including some video reviews that I would like to share with you (my personal favorite is the second one as this was the first time I&#8217;ve seen the game running on a tablet):</p>
<p style="text-align: center;"><span class="youtube">
<object width="640" height="480">
<param name="movie" value="http://www.youtube.com/v/-qqoutmSaKs?color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="opaque" src="http://www.youtube.com/v/-qqoutmSaKs?color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="640" height="480"></embed>
<param name="wmode" value="opaque" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=-qqoutmSaKs&fmt=18" onclick="pageTracker._trackPageview('/outgoing/www.youtube.com/watch?v=-qqoutmSaKs_fmt=18&amp;referer=');">www.youtube.com/watch?v=-qqoutmSaKs</a></p></p>
<p style="text-align: center;"><span class="youtube">
<object width="640" height="480">
<param name="movie" value="http://www.youtube.com/v/wkgei2yxTP8?color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1&amp;hd=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="opaque" src="http://www.youtube.com/v/wkgei2yxTP8?color1=3a3a3a&amp;color2=999999&amp;border=0&amp;fs=1&amp;hl=en&amp;modestbranding=1&amp;loop=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1&amp;hd=1" type="application/x-shockwave-flash" allowfullscreen="true" width="640" height="480"></embed>
<param name="wmode" value="opaque" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=wkgei2yxTP8&fmt=18" onclick="pageTracker._trackPageview('/outgoing/www.youtube.com/watch?v=wkgei2yxTP8_fmt=18&amp;referer=');">www.youtube.com/watch?v=wkgei2yxTP8</a></p></p>
<p>Another thing that I&#8217;m very proud of is that Pocket Soccer is in the top 100 free games in the arcade &amp; action category for months now, peaking around the #50 place which I take as a great compliment being a hobbyist and a rookie in the Android world.</p>
<p>Finally, I would like to mention one particular achievement that I&#8217;m really proud of, namely that Pocket Soccer was chosen #12 into the Top 25 Droid Apps for Kids in 2011 at Babble (the promotion badge you&#8217;ve seen at the beginning of this article).</p>
<h2>The Future</h2>
<p>While the story of Pocket Soccer already had quite a lot of things to tell, the story is yet far from over. I&#8217;ll continue the development on it, even if only with limited time quota, as there are a lot of requests coming from the players and I will continue to try my best to make them pleased, at least, as much as my time allows.</p>
<p>Here, I would like to take the chance to talk about the most requested features to try to explain why they are not available yet and/or when they can be expected:</p>
<ul>
<li>Tournament Mode (or World Cup, Campaign or Career mode if you wish)</li>
<li>Networked Multiplayer Mode (bluetooth, WiFi and/or online)</li>
</ul>
<p>Implementing a tournament mode may not seem like a complex, and actually it may or may not be in practice either, however, please consider something: I&#8217;m not a full-time game developer, I&#8217;m working at a multinational company 40 hours a week and lately I was also occupied with my exams and master thesis because I&#8217;ve just acquired my master degree lately. Spare time is really of scarcity in my life, so please forgive me for not making it already. I&#8217;m seriously willing to make it, just I have my own limits as well.</p>
<p>About the networked multiplayer mode, well, I have several problems with making that. First, I don&#8217;t think I&#8217;ll make an online multiplayer mode because, besides that being the biggest effort, I&#8217;m afraid the latency, especially in case of mobile internet, would be highly prohibitive, as for such a fast paced game like Pocket Soccer, even a small delay could be a show stopper. So I would go rather in the direction of a bluetooth or WiFi based multiplayer mode.</p>
<p>The second issue is more of a material nature. In order to be able to implement and test bluetooth or WiFi based multiplayer mode I would definitely need at least one more device, besides my Galaxy S, so I have to make some further investments. Taking in consideration that Pocket Soccer is an ad supported free game, I can easily over-commit myself with such an investment. I know that many of you (the players) said that you would buy a potential paid version of the game if it would have this feature (for what I&#8217;m really pleased), you should know one thing if you don&#8217;t know it yet: in many countries, including mine (Hungary) there is no possibility to publish paid applications on the Android Market due to Google&#8217;s limitations. This puts many developers into a tough situation. In case this will change, what I really hope, deciding about such an investment would be a much simpler decision for me to make.</p>
<p>Finally, I would like to make some further games that I need to spend time with as well, so I hope you understand now why those so asked features didn&#8217;t make their way into the game yet. This won&#8217;t stay so forever and I&#8217;m really willing to implement all the features you request.</p>
<p>Summing up everything, Pocket Soccer brought a great amount of achievements to me and, hopefully, a great amount of fun to the players! And, of course, the story does not end here as I will continue the development&#8230;</p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2011/07/pocket-soccers-story-so-far/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
		<item>
		<title>Just released my first Android game</title>
		<link>http://rastergrid.com/blog/2011/03/just-released-my-first-android-game/</link>
		<comments>http://rastergrid.com/blog/2011/03/just-released-my-first-android-game/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 10:46:31 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[AndEngine]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Android Market]]></category>
		<category><![CDATA[Box2D]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[football]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[soccer]]></category>
		<category><![CDATA[store]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=564</guid>
		<description><![CDATA[I am happy to announce that I&#8217;ve just published my first mobile game on the Android Market. I have experimented with creating games earlier, especially targeting the PC platform, however I never accomplished to release such one due to lack of resources, especially in the domain of artwork. Hence I turned to mobile platforms as]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2011%252F03%252Fjust-released-my-first-android-game%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Just%20released%20my%20first%20Android%20game%22%20%7D);"></div>
<p><img class="alignleft" src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-promo-graph.png" alt="" width="180" height="120" /> I am happy to announce that I&#8217;ve just published my first mobile game on the Android Market. I have experimented with creating games earlier, especially targeting the PC platform, however I never accomplished to release such one due to lack of resources, especially in the domain of artwork. Hence I turned to mobile platforms as there even a one-man-show game can bring loads of fun time to the players. So here we are now: after loads of abandoned PC projects, here I have my first published game called &#8220;Pocket Soccer&#8221;.</p>
<p><span id="more-564"></span>The game itself is a reinterpretation of a classic board game called button football that is very popular in my home country. The key difference is that the game does not contain the many rules like the original one to provide a smoother and more fast-paced game-play. Each player has three buttons that they control by grabbing and throwing them in the desired direction. If one manages to push the soccer ball into the opposite player&#8217;s goal then he or she gets one point. The first one to reach ten points wins the match.</p>
<p>The game is turn based so each player has five seconds to move with one of his/her buttons. While, in my opinion, the game is more fun in two-player mode when two buddies can play against each other on the same device, the game also features a pretty smart AI with three difficulty levels. But that&#8217;s enough talk, maybe some screenshots say more:</p>
<div class="wp-caption aligncenter" style="width: 610px"><img src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-screenshot1.jpg" alt="" width="600" height="360" /><p class="wp-caption-text">Starting lineup in a match between Spain and Portugal.</p></div>
<p>Besides the possibility to choose between more than sixty countries to play with, the game has also other changeable assets like different soccer fields and balls. These also come with different physical properties that slightly change the game-play. While some of these assets come out-of-the-box, some others are only accessible if you unlock them. You can do so by playing and/or winning a number of matches in the various game modes. The prerequisites of each asset can be checked in the appropriate menu and you can also check your current accomplishments by tapping the statistics button in the main menu.</p>
<div class="wp-caption aligncenter" style="width: 610px"><img src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-screenshot2.jpg" alt="" width="600" height="360" /><p class="wp-caption-text">Another match between Peru and Uruguay. The player with Uruguay is about to move.</p></div>
<p>The game should work well on most Android devices. It requires only API level 4 (Android 1.6). I&#8217;ve mainly tested it on my Samsung Galaxy S, which of course runs it smoothly, but I tested it also on other devices like the Motorola Droid, ZTE Blade (San Fransisco) and Samsung Galaxy Spica. The game worked well on the Droid and especially smooth on the Blade, which surprised me a little bit for such a cheap phone. In case of the Spica, it already felt that the phone was not made for gaming, however, at the end I managed to optimize the game enough so that it provides a good user experience on that phone as well.</p>
<div class="wp-caption aligncenter" style="width: 610px"><img src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-menu.jpg" alt="" width="600" height="360" /><p class="wp-caption-text">The main menu. You can scroll left and right to access the additional menu items and you can check your statistics anytime by tapping its icon in the bottom-right corner.</p></div>
<p>I tried to make the game look like the least possible like &#8220;programmer art&#8221; and I home I managed to do so. In order to have a fast time-to-market with my first game, I&#8217;ve chosen to use a game engine framework first, rather than writing my own. Having a lack of native game engines for Android, I settled down with <a title="AndEngine" href="http://www.andengine.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.andengine.org/?referer=');">AndEngine</a> as it looked to have a fast learning curve and actually it has (other option was <a title="libgdx" href="http://code.google.com/p/libgdx/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/libgdx/?referer=');">libgdx</a>). While I&#8217;m not a great fan of pre-cooked solutions, AndEngine worked out pretty well with its native <a title="Box2D" href="http://www.box2d.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.box2d.org/?referer=');">Box2D</a> accessible over JNI, however, I also had some bad experiences. I will write another post about my development experiences with Android and AndEngine.</p>
<h2>Summary</h2>
<p>To sum it up, I managed to publish my first game and I hope you&#8217;ll like it. The game is ad supported, so you can download it for FREE from the android market:</p>
<p style="text-align: center;"><a href="http://market.android.com/details?id=com.rastergrid.game.pocketsoccer" onclick="pageTracker._trackPageview('/outgoing/market.android.com/details?id=com.rastergrid.game.pocketsoccer&amp;referer=');"><img class="aligncenter" title="http://market.android.com/details?id=com.rastergrid.game.pocketsoccer" src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/pocket-soccer-qr.png" alt="" width="258" height="258" /></a></p>
<p style="text-align: center;"><a href="http://market.android.com/details?id=com.rastergrid.game.pocketsoccer" onclick="pageTracker._trackPageview('/outgoing/market.android.com/details?id=com.rastergrid.game.pocketsoccer&amp;referer=');"><img class="aligncenter" title="http://market.android.com/details?id=com.rastergrid.game.pocketsoccer" src="http://www.rastergrid.com/blog/wp-content/uploads/2011/03/download-icon.png" alt="" width="258" height="55" /></a></p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2011/03/just-released-my-first-android-game/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Going mobile with OpenGL ES</title>
		<link>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/</link>
		<comments>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 16:34:53 +0000</pubDate>
		<dc:creator>Daniel Rákos</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Samples]]></category>
		<category><![CDATA[Telecommunication]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[mobile technology]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[OpenAL]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://rastergrid.com/blog/?p=230</guid>
		<description><![CDATA[Many things have changed since the first time the public put their hands on the first mobile phone device as these days the end user rarely makes their choices when buying a mobile equipment based on their telephony capabilities. In fact, nowadays these devices are one of the most popular entertainment platforms out there. The]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_light-green" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Frastergrid.com%252Fblog%252F2010%252F04%252Fgoing-mobile-with-opengl-es%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fa5rKKQ%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Going%20mobile%20with%20OpenGL%20ES%22%20%7D);"></div>
<p>Many things have changed since the first time the public put their hands on the first mobile phone device as these days the end user rarely makes their choices when buying a mobile equipment based on their telephony capabilities. In fact, nowadays these devices are one of the most popular entertainment platforms out there. The main problem for application developers is that these platforms tended to be very heterogeneous from point of view of hardware architecture as well as that of API support. Meanwhile things have changed. While the underlying hardware still varies a lot from device to device the work of application developers has been eased by having cross platform mobile operating systems and open standards. In particular OpenGL ES that is an embedded version of the popular graphics API. In this article I would like to talk about some of the big players of the mobile OS industry and about using OpenGL ES for creating impressive mobile applications.</p>
<p><span id="more-230"></span>The first version of the OpenGL ES specification has been released in order to provide a lightweight API for embedded graphics using a well-defined subset of the functionalities provided by the desktop version of OpenGL. While the specification is already out quite for a while, the wide adoption in the industry and the interest of application developers for it became strong only in the recent past. Currently, we have several mobile platforms that are bundled with 3D accelerators and provide a set of features via OpenGL ES that makes developers capable of creating games that weren&#8217;t possible even on desktop platforms about ten years ago.</p>
<h3>Going 3D on mobiles</h3>
<p>Those who know me, know that well that I was always interested in graphics, especially when using it for entertainment purposes. In particular, I was about to develop video games since the first time I&#8217;ve put my hands on a computer. This is no different now as well as now I&#8217;m writing about OpenGL ES and mobile platforms because I got interested in creating games for mobile phones.</p>
<p>As I&#8217;ve already mentioned before, the problem with developing for mobile equipments is the variety of hardware and software platforms that they are built on. As being somebody who is already familiar with desktop OpenGL, having OpenGL ES in the tool-set already eliminates some of the burden that I must face with.</p>
<p>Also when talking about application platform things have also changed a lot. Nowadays, we have just a few big players in the mobile OS industry thus easing the work of the developers. More precisely, if an application developer plans to go mobile and would like to grab the biggest market audience, can limit their efforts on the following platforms:</p>
<ul>
<li><strong>iPhone OS</strong> &#8211; This is the one that drives Apple&#8217;s iPhone mobile devices as well as the iPod Touch. It provides an application platform similar to that Mac developers got used to. It can be said that this platform is the most popular in the industry, especially when dealing with gaming applications.</li>
<li><strong>Android</strong> &#8211; This is the newest player in the field, brought by Google. While it&#8217;s a newbie in the industry it already captured the attention of tons of developers. We can say that currently Android and iPhone are dictating the direction of mobile entertainment.</li>
<li><strong>Symbian OS</strong> &#8211; Symbian has the largest share in most markets worldwide, still not that popular in the mobile gaming industry. It is the operating system running most of today&#8217;s Nokia phones.</li>
<li><strong>Windows Mobile</strong> &#8211; Microsoft&#8217;s product built on Windows CE, the company&#8217;s embedded operating system.</li>
<li><strong>RIM Blackberry OS</strong> &#8211; Operating system primarily designed for the business industry.</li>
</ul>
<p>While most of these mobile operating systems are built on the same design conceptions it is very difficult for the developer to create cross-platform applications for all these platforms as they vary on the language and tool-set support that minimizes the possibilities for code reuse. Unfortunately this is against the one of the most important rule of mobile development as to maximize portability.</p>
<p>It is not 100% true that there is no way to provide optimum portability for all these platforms, but if we choose this direction we are limited to two possibilities: cross-platform Java applications and web-based applications. While these seem to be excellent alternatives to native programming of the platforms, they severely limit the developer in creating applications that fully take advantage of the underlying hardware. This is when OpenGL ES comes into picture as all these platforms have API support thus providing at least some form of code reuse possibility when dealing with entertainment applications.</p>
<p>Now, I would like to continue with talking about the two platforms that I&#8217;m most interested in.</p>
<h3>iPhone OS</h3>
<p>I started to get involved in iPhone game development because one of my friends pushed me to after seeing the great success of his brother-in-law, <a title="zhooley's iPhone applications" href="http://www.zhooley.hu/iphone/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.zhooley.hu/iphone/?referer=');">zhooley</a> who had some great titles. Currently I don&#8217;t have a Mac yet to develop on, but already read some stuff about iPhone development. This is where the following information come from.</p>
<p>iPhone is currently is the most important platform for mobile application developers. It became such an important factor in the industry thanks to Apple&#8217;s AppStore. Previously there was little to no way for the end users to extend their mobile software base so easily. While this is good for the end user, it is maybe even better for application developers as AppStore provides them quite a large market audience.</p>
<p>The secret why iPhone is an excellent gaming platform lies in the palette of features that the phone hardware and the software frameworks provide. Just to mention the most important ones:</p>
<ul>
<li>Touch screen control with support for multi-touch events capturing the movement of up to five fingers.</li>
<li>Three accelerometers for tracking the spacial movement and direction of the device in all axes.</li>
<li>MVC inspired GUI framework for enhanced productivity.</li>
<li>Support for several industry standard APIs like OpenGL ES, OpenAL and much more.</li>
</ul>
<p>But that&#8217;s enough from the general speaking, let&#8217;s see what&#8217;s about OpenGL ES support on the iPhones&#8230;</p>
<p>As far as I can tell, not being an iPhone owner, the graphics hardware bundled with the mobile comes in form of PowerVR accelerators: MBX and SGX.</p>
<p>The PowerVR MBX has OpenGL ES 1.1 support, that is roughly equivalent to OpenGL 1.5, running a tile-based deferred renderer that is suitable for most 3D applications. That means it has only fixed function capabilities, however that is usually enough for most mobile applications. Also note that it has very limited amount of texture memory of 24MB.</p>
<p>The PowerVR SGX is a more powerful processor that also supports OpenGL ES 2.0, roughly equivalent to OpenGL 2.0, but has optimized fixed function shaders that provide flawless backward compatibility for OpenGL ES 1.1 applications.</p>
<p>The most important thing is still that all iPhones are able to do floating point maths natively and efficiently that is an important factor when dealing with OpenGL applications as the usage of the fixed point types can be quite a burden for developers, especially for those migrating from desktop development.</p>
<p>Additionally, the OpenGL ES implementation on iPhone provides some nice extensions like <a title="GL_OES_framebuffer_object" href="http://www.khronos.org/registry/gles/extensions/OES/OES_framebuffer_object.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_framebuffer_object.txt?referer=');">GL_OES_framebuffer_object</a>, <a title="GL_OES_compressed_paletted_texture" href="http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_compressed_paletted_texture.txt?referer=');">GL_OES_compressed_paletted_texture</a> and <a title="GL_OES_point_sprite" href="http://www.khronos.org/registry/gles/extensions/OES/OES_point_sprite.txt" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.khronos.org/registry/gles/extensions/OES/OES_point_sprite.txt?referer=');">GL_OES_point_sprite</a>. Also, thanks to the iPhone simulator that comes with the SDK it is easy to test the application during development without an actual device. Still, one important hint to mention is that the iPhone simulator has different OpenGL ES capabilities than the actual hardwares and also the performance characteristics measured on the simulator should not be taken as valid measurements because the simulator does not really simulate the graphics hardware but only the software platform.</p>
<p>iPhone development is done using the Cocoa API and preferably Objective-C, however C, C++ and Objective-C++ can be also used for development. One just has to interface somehow the Cocoa API and the rest can be done almost in any native programming language. That is one of the key advantages of the iPhone platform that one can develop native applications and no need for Java or web-based solutions.</p>
<p>While iPhone may seem to be a perfect choice for mobile game platform, we should not forget about one big disadvantage of it, in particular that one cannot develop legal iPhone applications without owning a Mac.</p>
<h3>Android</h3>
<p>The Android platform was suggested by one of my workmates who just brought a Droid. That phone is actually a device capable to compete with the iPhone from both features and performance point of view.</p>
<p>Android is the big hit of the last year and my forecast is that it will be one of the most relevant platforms of the upcoming years. Google adopted the idea of Apple and they also created an open market for the softwares that the end user can easily download and install on their devices. This is the AndroidMarket that can easily become a powerful competitor of the AppStore.</p>
<p>While, as I said earlier, the Motorola Droid, as an example, does support about the same feature set that makes the iPhone an excellent gaming platform, this cannot be said about most of the phones running Android on them. This is maybe one of the biggest disadvantages of the Android platform. However, we can take this also as an advantage as it makes it possible for more phones to adopt this operating system.</p>
<p>As the Android operating system is running on various phones from different vendors with different hardware capabilities, there isn&#8217;t too much to talk about the graphics hardware capabilities except that some devices not just don&#8217;t have a graphics accelerator but they also lack of floating point support. This is another disadvantage as it forces developers to stick to fixed point math in their OpenGL ES applications to maximize portability or they have to maintain two different rendering paths.</p>
<p>Originally, Android supported only OpenGL ES 1.0 that is roughly equivalent to OpenGL 1.3. However, since NDK r3 there is also OpenGL ES 2.0 support for Android as well. The feature set here varies much more from both hardware point of view and extension support.</p>
<p>Development for Android is done in Java using a proprietary SDK for accessing the Android API. The SDK comes with a simulator that works fine, except the long initial boot time that I was really surprised about when first trying it out.</p>
<p>One advantage of the SDK that it can be used in virtually any operating system so application developers can work on either Windows, Linux, MacOSX or other platform. There is also a nice Eclipse plugin that makes application development for Android even easier. That&#8217;s why I started with this one.</p>
<p>Just to illustrate how easy to put together some working demo with a good SDK, I&#8217;ve created a simple box rotating app to demonstrate OpenGL ES usage on Android. From installation till having a working application it took no more than two hours. You can find the download links for both the source code and the binary release at the end of the article.</p>
<h3>Why mobile games?</h3>
<p>I am a person who was, is and will be interested in developing computer games. Previously, I was working with desktop platforms and at the time when I was 10 years old it was satisfactory to put together some simple 2D game but not now.</p>
<p>I had always planned to create a state-of-the-art game engine and use it for some game, like most people like me do, but the efforts of one is simply unsatisfactory to compete with the players in the industry out there. Even if I feel the capability to be able to write such an engine but it would take that much time that I simply don&#8217;t have since I am working. Even if I would manage to accomplish it in a year or two then the problem with content creation comes into picture. For an AAA PC game content creation takes several times more than the actual programming and here I even lack the knowledge to achieve it. On the other hand mobile game creation is a much shorter process when you can get to actual results in a matter of weeks that is far better compared to PC game creation.</p>
<p>Also, I would never use third party game engines, except some basic libraries like OpenGL, a physics library and things like that because otherwise I wouldn&#8217;t feel the results being my own creation.</p>
<p>Having game development as a hobby works well during high school and university but it gets quite difficult after you are out there in the world having a job and responsibilities. Maybe I should have been already taking my time before to develop something concrete for PC but, as most fellow hobbyist know, you usually end up having hundreds of unfinished projects.</p>
<p>While I would never forget about desktop platforms and I will actively keep myself up with the evolution of the industry, mobile application development opened another world for me where I can unfold myself.</p>
<h3>HelloAndroid Demo</h3>
<p>Source code: <a href="http://rastergrid.com/blog/wp-content/uploads/2010/04/files/helloandroid_src.zip">helloandroid_src.zip</a><br />
Binary release: <a href="http://rastergrid.com/blog/wp-content/uploads/2010/04/files/HelloAndroid.apk">HelloAndroid.apk</a></p>

]]></content:encoded>
			<wfw:commentRss>http://rastergrid.com/blog/2010/04/going-mobile-with-opengl-es/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

