Sunday, April 17, 2011

The blackberry pause

I have to confess it : I made a small pause in my Android development.
During one month, I developped for the Blackberry Playbook, and it was a rather pleasant experience !

Actually, it started when I read this blog entry from James Becwar.
Blackberry offered a free Blackberry Playbook ( their incoming tablet ) if you developped a application for it.
This was a very tempting offer, so I decided to jump into this challenge !

The challenge :

Actually, the challenge was that I read this blog entry on the 26th of February, and you had to submit your application before the 15th of March...
I only had about 15 days to learn a new language, a new platform, a new submission process, and to develop my application.
All that, while still having to manage my real job, my kids, my wife, my friends...

On top of this, a friend proposed me at the very same time to play a 'Neptune's Pride' play. "Neptune's pride" is a nice strategy online game, that played over 2 to 3 weeks. The things is when the game starts, you only have 4 units, so everyday it takes about 10 minutes to play. But the game quickly becomes more challenging, and more time consuming. Way too much for me ! But I couldn't make myself reasonable, and give up. So I played until the end ( I even won the match :) ! ).

Developping for the Blackberry Playbook :

So I decided to start to develop for the Playbook.
There are two ways one can develop for the playbook :
- Using Adobe Air
- Using Html5

I decided to go the Html5 way : it is free ( I could use an evaluation version for Adobe Air, but I prefer to learn something that  I will use as much as I want ), and I feel like learning Html5 can always be a good thing, for my work, for my android development, for some personal Web develpment, etc...

The tools to develop for the Playbook :

The playbook comes with an SDK, and an emulator that really is a virtual Machine running under VmWare.

Considering the short time I had to develop my application, I decided to stay as far away as possible from the device specific issues, so I decided to choose an application as simple as possible, and that I could develop as much as possible with Chrome.
So I didn't wanted to write files, to use the camera, to use the GPS, or anything like that.
I just wanted to develop in Chrome, and check every day that my development was still working in the emulator.

So the application I chose to develop that a simple sliding puzzle ( also called the 15 puzzle ). Nothing really exciting, but something I really could finish in such a small amount of time.

Developping in Html5

So I started developping in Html5, with Chrome.

Html5 is some Html, css, and javascript.
In my, case, I just took a canvas ( ie a part of the Html page ), and entirely control it in Javascript, from the event response to the display.
So I didn't use the Css at all, I merely used the Html part to create the canvas. So quite all of my development were in javascript.

And to be honest, I was really impressed by this way of developping.
The 'iteration Cycle' - ie the time it takes to make a change in your code, and to check its effects in your application - is really low : you modify your javascript code, and just press F5 in your chrome browser, and voila ! It's done...
It's much better than developping for Android, where the installation phase on the emulator or the real device, and even the compilation phase, for a big application, takes some time.

Chrome contains a full debugger, so tracing a bug is quite easy, and you can even hot change the code !
It also contains some profiling tools, and some tools to monitor the memory usage.
Actually, I was impressed by all the stuff that were in chrome. I only had used it as a (fast) browser, and now I found it was also a valuable develoment environment !!

Obviously, everything is not that easy in the Html5 development world :

Javascript is a strange language:
* not really object ( there is no real inheritance ),
* Actually even creating an object is an strange thing : you create it as a special function !
* sometimes Javascript is not strict enough : if you forget to define a variable as a new one, local to your function ( with the 'var' keyword ), it will use whatever var with the same name it can find in the namespace ( like a global one, or worth, one coming from a caller function ), creating some strange bugs...
* the counterpart of all this strangeness is that javascript is a very flexible langage, so can do crazy things like modifying some methods of an instance of an object at runtime. ( at least for a C++ developper, this is a very crazy thing )
* Chrome optimizes the javascript code, so sometimes, it's hard to debug : the code won't stop at some lines that are actually really executed !
* Chrome is a real development environment, but I still prefer my Visual Studio environment !!!

Developping for the Playbook added some specificities :
* For some reasons, I wanted to use more html5 feature than just using my canvas, and failed. Something as simple as calling specific javascript code with clicking a link didn't work. I didn't investigate, and just put everything in my canvas !
* A lot of features just didn't work, in the real device or in the emulator ( and I don't feel like releasing something without any test ) : sound, videos, orientation support, ...
* The event for managing the touchscreen are a little different from the events for managing the mouse. Nothing really big, but enough to bring me some bugs...

Conclusion :

All in all I was really happy with these development. Actually I manage to create my application in 15 days. At this time, the limit had been postponed to the 31th of March, so I ended up developping another application ( to be honest, I was a little ashamed to only deliver such a simple application as a sliding puzzle ), so I created a coloring game for child, in the next 15 days.

I enjoyed doing these two developments, and could finished them by the deadline.

Some time ago, with some friends from work, we made a kind of context where we were to create a little game prototype during our launch pause. So we only had 1 hour and half to create this prototype.
Actually, I like the idea of developping something as fast as possible.

I would like to do it again, all by myself : to give me the constraint to create a little game in 15 days ( or at least a good prototype ). I always found that some good things were coming from this challenges.

As for the result application, they are some applications I still can be proud of. 
Actually, my older kid likes the sliding game, and both my kids like the coloring game. This is, in my opinion, a really good sign !!!

Now, as this is essentially a Android blog, let's talk a little about more robotic things.
Now that I have two Html5 applications, I will try to port them to Android, and check how easy it it.
Actually, I would like to check if developping directly in Html5 is a viable option for Android, but I really have some big hopes in this area !!

Here are the applications :

The coloring game :

 The sliding puzzle :

And here are the link to the application for the Blacberry owners that are lost on this Android development blog :

Sunday, April 10, 2011

Word Prospector on Win7 phones !!

Word Prospector is now also on Win7 phones !

Sebastien, a very talented game programmer fellow, has ported it on win7.
Actually, he recoded from scrach, and the result is really nice.
It looks like developping for Win7 is really nice and easy, with Visual studio environment, and the ease of use of C# and the XNA framework.

Here are some screens of the final result :

The gameplay is the same, but the graphic design is nicer than mine (ok, it's not that difficult... I really need to do something in this area... ), with lots of fancy animations !

Wish you the best with this game, Seb !!