Apps Vs Apps – Nokia Connects yet again!

When Nokia must have decided to recreate the successful Nokia AppTasting magic in Mumbai, they must not have anticipated the tremendous response they got from bloggers all over the city. A roomfull of 250 bloggers managed to get #NokiaAppTasting trending in a country which has 15 million Twitter users.

It sure shows that an “Indi-Blogger” power is strong enough to stir buzz when they get together. Sponsored by Nokia India, organised by the awesome Indiblogger team (completing 5 years) and hosted by the charming Vikas Khanna and the witty Rajiv Makhni, the event was great.

Going to a Nokia event always brings back great memories of the Nokia Developer events I’ve attended in the past. Although this one was not for developers, the passion of all the bloggers, tech and non-tech, was amazing. The Nokia AppTasting event was different and unique in it’s own way.

A lot of people I interacted with were not sure what to expect from the event.

“Technology and Food, Mobile Apps and Food App-etizers, Rajiv Makhni and Vikas Khanna, Tech Guru and Celebrity Chef?”

It was not long before the questions were answered. First by cheering with clenched fists in the air and then celebrating the evening by hugging another blogger sitting besides us. India’s tech guru Rajiv Makhni ensured the love continued by asking us bloggers to stare into our phones and then kiss it. I think it was a good way to break the ice and get started with the event.

As the evening unfolded, we were introduced to many useful apps on the Nokia Lumia and Nokia PureView phones.

The Nokia City Lens app showed a great use of compass caliberation and augemented reality. Depending on the direction the phone is held, the app locates the point of interest and visually shows them on the mobile screen. And because it uses GPS data, network connection is not always needed.

Nokia City Lens

Another app was the Mobile Sommelier by VinoMatch. The app has a complete menu of wine pairing features that helps improve the taste of a meal. Every menu selection is accompanied by a photograph of a generic wine group. This also seemed like a useful app when eating out or when having guests at home.

VinoMatch


Foodspotting was demoed on a Windows Phone. Foodspotting for those who haven’t used it is a food photo sharing app that has a community built around the sharing of food dishes. Vikas Khanna shared thoughts on how many chefs don’t approve their guests taking pictures of their dishes and then sharing them on social networking sites. But for him such apps are a good way to get critiqued.

I personally use FoodSpotting and find it very useful when I eat at a new place. Especially the reviews and rating others give to the food minimizes the trouble I face in deciding what to choose from a menu.

The app showcase was interspersed with some fun interactive sessions, witty comments, funny anectodes and informative quotes from the hosts.

I came back home wiser! I now know that Onion Halwa (a dense sweet desert made from onions) is a heritage of the Chadela Dynasty in Khajurao and there is a city called “Halwa City” in Tamil Nadu.

Nokia definitely scores with the Nokia PureView photography technology which is a strong reason why I will buy the phone.

Some pics from the event -

Nokia Apps take Centerstage
Moviemaking is no longer a painstaking business - Nokia Movie Maker App
An Adobe Photoshop like app for merging the best of multiple pictures into one
The Indibloggers that got Twitter trending

Indiblogger is a platform that brings together bloggers from all over India to share and communicate their thoughts. There are no specific categories that require bloggers to join the group. All that is needed is a passion for writing.

Mariam

Adobe ships Flash Player 11.4 and AIR 3.4

Adobe has released the new version of the Flash Player 11.4 and Adobe AIR 3.4. The runtimes have a list of new features, enhancements and bug fixes. Adobe has also upgraded the technology behind the AS3 Reference for the Adobe Flash Platform (ASDoc).

The updates to the runtimes are very critical, especially for mobile development. I had filed a bug about using the Adobe Native Extension (ANE) with Adobe AIR 3.3 on iOS some weeks back. Hoping the new release would be easier to work with ANE.

Flash Player and Adobe AIR Feature List

ActionScript 3.0 Reference for the Adobe Flash Platform

Mariam

The Act Game review

Playing the Act Game is like a watching a beautiful movie. It took me back to the times when I used to watch the classic Disney cartoons on TV, with the only difference being The Act on iOS has some interactivity to keep the user engaged as any game ideally should. I thought of reviewing this game simply because it has a very different gaming experience seen after a long time.

The story begins with Edgar a window washer with the City Medical Hospital spotting Sylvia the nurse through the hospital window and instantly falling in love with her. He dreams of romancing her, but is interuppted by his boss. He is forced to continue cleaning the windows with his sleepy brother Wally when all of a sudden, his brother enters the hospital room through the window and gets into an empty bed. The story then takes Edgar inside the hospital and through various situations involving Sylvia and other characters to rescue his brother from being mistaken to be a patient requiring a brain transplant.

The game animations play very smoothly. The artists have used the classical hand drawn animation style, so the quality of animations are very high. The characters are superbly designed and one can understand their emotions through their expressions.

The controls are very simple involving sliding the finger on the left or right side of the screen. All game interactivity have Edgar responding to the player swipes.  The music too is beautifully rendered and suits the game perfectly. The only issue with the game is that is has a very small game length. One can easily finish it in 30-45 mins.

I remember reading somewhere that the team working on this concept had been test marketing it since 2007 but cancelled launching it then. It has finally released in 2012 on the iOS platform published by Chillingo and is worth a play just for its uniqueness.

Store Wars for the Game of Phones

Apple iTunes and Google Play together dominate consumer attention for application downloads. But when pitted against each other, they can get quite competitive!

App Store Stats

Stats say, Japan is amongst the top 3 countries for app download and revenue on both the stores. It is also amongst the Top 3 for the fastest growing markets for revenue. US and UK are also amongst the top 3 countries.

Google Play considers Brazil to be amongst the topmost countries to tap in terms of revenues expecting 88% growth.

India even with its large population would take some time to build a profitable market for smartphone apps because we still have a majority of our people using feature phones/low end phones.

Mariam

Book Review – Introducing HTML5 Game Development by Jesse Freeman

HTML5 Game Development

The Introduction to HTML5 Game Development has been one of the most easygoing readings I’ve had in the recent times. Written by Jesse Freeman (@jessefreeman), the book has language which is simple and crisp, without being over-the-top technical. It comes with well written examples and steps to take you through the process of game development.

When I first read the introduction, I was curious to know more about the contents. The book was small with just over a 100 pages, so I was sure that reading it would not take me more than a day or two to complete it.

The book takes you through all the steps that are typically followed in a game development cycle. The good part is that it covers the entire cycle with a single game giving more emphasis on learning techniques rather than writing game logic. Infact I was very glad to learn about the process of creating sprite sheets in Adobe Photoshop using scripts (something I had never attempted before).

The book speaks extensively about the Impact JavaScript Engine for HTML5. The Impact engine has many pluses including running on almost all HTML5 capable desktop and mobile browsers. The only minus is, the engine is not open source and there is no trial version available. The engine is priced at $99.

Personally, I have never been a fan of any engine or framework that is not community driven, but some of the games created by Impact are very impressive. Developers who want to invest in writing high quality games across browsers should consider it. There is information in the book on setting up the development environment to get you started.

Overall, the book is well written but more suitable for developers who have some knowledge of writing games. The book can be downloaded from the link below -

Introduction to HTML5 Game Development published by O’Reilly

Some other useful links -
appMobi Game XDX
Point of Impact – Resources relating to the Impact Game Engine

Mariam

HTML5 Game with EaselJS and TweenJS

HTML5 has been a subject of interest and discussion for many developers. I was intrigued by the platform myself and decided to explore it with a simple game of Concentration to understand how easy or difficult it is to plan a project that requires these new web standards. I used the Canvas element with the EaselJS Library and the TweenJS Library for development.

http://mariamdholkawala.com/games/concentration/gameconc.html

Working with the Canvas
When developing games with HTML5, one of the most crucial elements is the Canvas. The Canvas is like a blank slate on which graphics can be drawn using Javascript. The Canvas element is always added to the HTML page with an id reference for use in Javascript. However a canvas can also be created dynamically using JQuery.

Once the canvas is ready for use, we can combine it with libraries such as EaselJS to draw graphics or text. EaselJS has object properties very similar to Actionscript thus offering a more familiar ground to Flash developers.

HTML (set the Canvas):
<canvas id="myCanvas" width="550" height="400"></canvas>

Javascript (loading an image on the Canvas):
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var img=new Image();
img.src="graphics/title.png";
img.onload = function(){
ctx.drawImage(img,0,0);
}

Javascript (using EaselJS to load image on Canvas):
var canvas = document.getElementById("myCanvas");
var stage = new Stage(canvas);
var img=new Image();
img.src="graphics/title.png";
img.onload = function(e){
var title = new Bitmap(e.target);
stage.addChild(title);
stage.update();
}

<div> tag verses <img> tag verses Canvas
There was a constant decision to be made on what is the best approach for loading graphics. The choice was mostly between the <div> tag, the <img> tag and the HTML5 Image element. I personally observed that all seem efficient to use, but preferred using the HTML5 Image element for in-game graphics because they could be manipulated dynamically much easily. The <div> and <img> tags seemed suitable for the static background and other UI elements which needed design effects with CSS.

HTML (adding a div tag and loading image in the div using CSS):

<div id = "btn"></div>
<canvas id="myCanvas" width="550" height="400"></canvas>

<style>
#btn{
background:url('graphics/playbtn.jpg') no-repeat center;
}
</style>

Mouse Events
Mouse Events and Touch Events are necessary to make any game interactive. With HTML5 too, they can be applied to individual graphical elements or to the complete canvas. Some of the useful events for games are onLoad, onMouseOver, onMouseOut, onClick.

In the Concentration game, I used click events for independent HTML5 elements like button images. I also applied a click event to the complete in-game canvas. This is because, during the game-play, the card placement changes with every level. Each card has a property which is best identified by comparing the mouseclick X and Y properties with the card’s X & Y properties.

Javascript (adding a Click Event to the whole canvas):
canvas.addEventListener("mouseup", mouseUp, false);
or
canvas.onclick = mouseUp;

Javascript (adding a Click event to a graphic using EaselJS):
image.onClick = mouseUp;

Javascript (mouseUp event)
function mouseUp(e){
var mx;
var my;
if(e.layerX >= 0 || e.layerY >= 0){
mx = e.layerX;
my = e.layerY;
}else if(e.offsetX >= 0 || e.offsetY >= 0){
mx = e.offsetX;
my = e.offsetY;
}

for(i = 0; i<deck.length; i++){
var card = deck[i];
if((mx > card.xpos && mx < card.xpos + cardWidth) && (my > card.ypos && my < card.ypos + cardHeight)){
//card clicked
}}}

Working with Different Screen Sizes
Supporting different browsers and devices is touted as one of the biggest plus points of HTML5. This means we should be able to customize our content to detect different screens and render the code accordingly. However this is not as easy as it seems, especially for games. There are several challenges in supporting the game on different browsers and device screens.

I remember reading an article on Adobe Developer Connection on working with HTML5 and CSS3 with Dreamweaver but it seemed more apt for app development not suiting my purpose of fluid dynamic screens for games. I did some testing with my game code and managed to achieve a common graphic database for some in-game elements. The current game that I developed, detects the browser and resizes in-game graphics after identifying the device (although there is scope for improvement).

Using TweenJS for transitions and animations
Very good transitions and animations are easily achievable using CSS3, but the TweenJS library makes it much easier to work with animations, especially if you have used the EaselJS Library for the rest of the game. I have used the fade-in fade-out transition for the cards in the Concentration game.

The code below simply fades an image to 0 alpha within 400 milliseconds without a loop. The detailed use of the TweenJS library can be found online.

Tween.get(imageToTween,{loop:false}) .to({alpha:0},400,Ease.get(1))

There are many resources available to understand game development with HTML5. I found the development interesting and hope to discover better development techniques as I work with this code. For seasoned Flash game developers, it may feel like a little let down, but giving in to the HTML5 hype can keep the motivation up.

http://mariamdholkawala.com/games/concentration/gameconc.html

This game should load in all browsers supporting HTML5 (IE gives weird results, not tested on Safari). The game should also run on device browsers but may not give a great experience because it is not ready for devices.

I’ll share the code when it is ready.

UPDATE: The game source files can be downloaded from ConcentrationGame.zip (1.24MB)

Mariam

Reasons not to play a game on mobiles

I was looking at my devices today and tried understanding my game playing behaviour.

Out of the devices I use, my iOS device has more games than any other device. Next comes the Android and Symbian devices where I have some games installed, but have never played them (don’t know why!!). Out of all the current 100 iOS games, I only play around 4-5 very regularly and another 4-5 occasianally.

So what is it that gets me to download a game but not play it? I thought through some of the points and this is what I think.

1. Creative Inspiration - So we’ve played Fruit Ninja, Angry Birds and Cut the Rope on the iOS platform. Now, do we really need a game with the mechanics of Fruit Ninja, bird characters from Angry Birds and a name inspired by Cut the Rope?.
If you’ve played “Cut the Birds” and you’ll know what I am talking about (the game is now taken off the App store and has another version Cut the Birds 2). One of the primary resons why games fail to connect with users is that they lack originality and just end up being poor imitations of successful IPs.

2. Herd Mentality – Farmville created history with online social gaming, but then more games decided to follow suit with farm themes or similar “Click and Collect” mechanics. And were they successful? Probably yes, but for how long is the real question! I don’t remember the last time I played a Facebook connected game because of the “Follow the Herd” mentality used while writing concepts.

3. Game Tutor – As a casual game player, I really don’t like a casual game constantly throwing pop ups at me to teach me how to play the game. It breaks the flow and can be very obtrusive. I think a casual game should be self explanatory or atleast with minimum non-obtrusive teaching.
Help pop-ups may sometimes be necessary for games, especially strategy and time management games, which are competitive and require a learning curve to progress, so I’m not completely averse to them.

4. Forgotten Icon – Many times when I reach out for my device to play a game, I notice installed forgotten apps. And then when I recall them after looking at them, I wonder if it makes sense to ever play them again.
Forgetting to play an installed app is nothing but a result of an average game-play, designed to be non intuitive, and not great enough to get us engaged after the first couple of minutes initial play.
Prototyping and testing an idea with people trusted for feedback is the best way forward. Being open to criticisms is only getting better at designing and developing a better game.

5. User Experience – I was playing a turn based game against the computer AI recently. I won’t name the game, but the mechanics were as simple as Tic Tac Toe. However, everytime I was to play a turn or the AI was to play a turn, I would have a big popup message thrown in front of me informing me that it was my turn or the computer’s turn to play.
This is an example of a terrible User Experience design because it ends up irritating me/the player with constant reminders during every turn. A definate reason for me not to replay the game.

6. Buggy Pop-ups – What happens when I am playing a game (Chess for example), and I play my turn before the game can alert me of my turn. Now the game logic gets stuck at this point where it has my turn pop-up to display on screen but knows in the background that it is the AI who will play next. My game hangs at this point and I’m stuck staring at a game screen where I can’t progress. I have to shut down the game and restart it.
Will i play this game again? Only if it has an addictive game-play and value for time.

7. Noisy Screechy SFX – One usually plays a game when they want to take a short break in-between or after work or sometimes as a part of their learning process. Poor sound effects or background music really make me shut down the game even if I really need to play it.

8. Where’s the Entertainment – Some games just lack entertainment. And I can’t define this any further. Game development is a coordinated process and going wrong in any of the phases can lead to a non entertaining game.

9. Non accessibility of content – Today most games are sold through mobile app markets. iTunes gives the easiest access to download games irrespective of the iTunes version or the device OS. Similarly Android too offers ease of use of the Android Marketplace. For the others, it’s not been very easy at all times.

Mariam

Flash vs Unity vs HTML5 at Nasscom GDC

The Nasscom GDC 2011 ended in Pune yesterday making it one of the well attended events in India. Since we don’t have many conferences like these happening here, it was great seeing this one unfold connecting the Indian gaming community on a single platform. It was also encouraging to see gaming now being accepted as an industry with students taking it up as a career option – something which did not exist some years back.

The 2 days of the event had back-to-back sessions covering various aspects of the state of the gaming industry, gaming platforms and technologies and sessions for budding entrepreneurs.

I was invited as a part of a panel discussion covering Flash vs Unity vs HTML5 and it was a fairly well attended session (we had 2 very competitive sessions running parallelly so a well attended session is a compliment!). It was great to see that most of the audience were into Flash development at some level and keen to know what the panel had to say about the three most spoken about technologies in the recent times. The panel came with their expertise and spoke about the strengths of the platform they specialized in.

HTML5 is a platform that Zynga believes will be the future with social games. They are already looking into it; their Words with Friends being a classic example of a successful HTML5 social game going cross platform.

Cha Yo Wo on the other hand felt that HTML5 has it’s disadvantages and is better suited for enterprise applications rather than game development, especially when getting it across multiple platforms. They had some good talk to share about their engine allowing easy porting of code across different mobile platforms.

Glu Mobile belives in Unity and had some good points to share about using the platform to develop freemium games.

I spoke about my experience of working with Flash on different platforms, specifically devices. My thoughts were that Flash developers have the advantage of taking their ideas to multiple mobile platforms through the Adobe AIR runtime, but that can come with some limitations. The native platform for devices offer more polished APIs than AIR thus giving it an edge over Adobe AIR. With the introduction of native extensions, Adobe AIR can open up better development options but that will only be known in time.

However having said that, HTML5 is an new standard for the web that developers can be excited about, especially since Apple has been talking about it for a very long time, Adobe is investing heavily in the tools, and companies like Zynga believe that they can push the envelope of online social gaming with it.

The consensus was that a developer should never be limited with an idea because a technology is known and comfortable to work with, instead choose tools and platforms that best help bring the idea to life.

Flash vs Unity vs HTML5 Panel at Nasscom GDC

Mariam