@jpsarda's longer tweets

May 23

Space Dragons

Just like the Moonlights project was started to understand how works the engine of World of Goo, Space Dragons was started to understand how this damn talented Andreas Illiger made Tiny Wings.

Once again the same story, the engine I’ve done for Space Dragons is quite good and I want to make a game of it (a mini game actually). A clone? I hope not, despite it’s very close to Tiny Wings, it’s my own style and and my own interpretation. And to be fair, it’s far less good and fun than Tiny Wings.

So here is a video (shot in the WC!) of the work in progress. If you wish to beta test it (you need an iPod 2ng gen+, iPhone 3GS+ or iPad+), subscribe to the test team on testflightapp.com.



As promised in the cocos2d forums, I’ll post the code of the cocos2d/opengl object that renders the hills. I’ll post on the cocos2d forums and on my twitter.

[update] It’s available here.

Apr 21

App Store Jurassic Search Engine

I’m not a SEO specialist. I will sum up here all that I’ve learned about the prehistoric app store search engine.

1) The search engine don’t take into account the app’s description (it was once, but Apple was not able to cope with the spam inside the descriptions, and decided to stop processing it).

2) The search engine takes into account the title.

3) The search engine takes into account the hidden list of keywords the developer enters during the submission process.

4) The search engine don’t take into account plural forms. For example, if you want your app to be listed when searching for “puzzle” and “puzzles”, you have to enter “puzzle,puzzles” in your keyword. As we are limited to 100 characters in the keyword list, this is not ideal.

5) The rank order is based on popularity, something similar (but not exactly the same) to what is used to rank the top paid/free apps.

6) Your app will be rejected if it uses the title of another app as a keyword (example “blockoban”). But, if a game is using regular words from the dictionary in its title (like “Angry birds”, or “Fruit ninja”), you can add those words separately in your list (“angry,birds,fruit,ninja”).

7) You can’t change your keywords once your app is approved (you need to submit an update to do so).

8) Never heard of an app reaching the top 10 because of having “angry,birds” in its keywords. Don’t count on the app store search engine to increase your visibility. Making a good app with a good icon is the only recommandation.

[updated 2011-05-23]
9) Apple just improved the search engine. If your application provide in-app purchases, the search engine takes into account the in-app purchase displayed name.

Apr 20

Popular Meow vs Tiny Wings

Recently I’ve been obsessed with this popular video of 2 talented young boys singing “Meow” by Rossini. This song is pure genius and it is particularly well executed here. See below.


Then, wanting to know more about this song, I decided to have a look at other versions on youtube. I found a lot of videos. But despite it was the same song, none was providing the same happy feeling as the original. And I asked myself why… Why this one gets millions of views on youtube, and this other one gets only hundreds? As a (game) designer, this was a matter I had to analyse.

Read More

Apr 10

iPhone beta tests with promocodes

Testflightapp.com was launched a few months ago and has made it much easier for iOS developers to manage beta tests, and most important, for testers to install beta (AdHoc) builds. (It has some limitations though, like unsupported iOS3.x).

But there is another way that makes life even easier for testers: promocodes. It’s not very well known, but when your app is approved with a release date set in the future (thus, not available on the app store), downloads through promocodes still work. Just select up to 50 testers (who can be outside of the 100 AdHoc devices authorized by Apple) and send them one promocode each. Of course your app need to be in its latest development stages to be approved by Apple, which should be the case with beta tests. Most of iOS users already know how promocodes work, it makes it easier to convince a user to test your game.

Testflighapp.com and promocodes are 2 complementary ways to manage your tests that you should know and use. For my upcoming game Mozzle, both technics were used. Testflighapp.com was used all along the way and promocodes were used only in the latest stages. Both have provided very good feedback to improve the game.

On a side note, submitting your app before it’s totally finished will also prevent bad surprises when your app is rejected 2 days before the launch date.

Apr 06

Your Flixel game on iPad, not yet there

AIR SDK 2.6 was released a few days ago, with iOS packager included. It means you can now compile your Flixel (Flex) game with the AIR compiler and package it for your iPhone or iPad.

Porting my Flixel game Icual to the iPad was a matter of 1 hour (!). It works and it’s playable. But unfortunately the performances are not yet there. There was a post+video recently about nice performances with Flixel+iPAD. The FPS (Frames Per Seconds) looks quite good on this video but it doesn’t look suffisant for a proper release. Here is a video of Icual ported to the iPad. (Note that I had to remove the white flash effect when you win a level because it was slowing down the performances too much). As you see it works but for such a simple game with only a few bitmaps to move, you would expect a much better FPS.



Most of the tutorials I used to port the game on iPad uses Flex builder Burrito which is quite expensive. I used Xcode (as I’m on Mac OSX but FlashDevelop on windows will do the job) and the command line only. All you need to pay is the iOS developer program (about 100$) for the final step. Here is how I did it.

Read More

Mar 12

Get your Flixel game on Blackberry Playbook

So, you have a game made with Flixel ? And you wander if it could run on upcoming Blackberry Playbook ? Maybe you want to win the free Playbook too ?

Read More

Jan 19

The solitude of the iOS game developer

The catastrophic launch of Slap No Slap has inspired me this sketch, quickly done with Photoshop and an old Wacom tablet.

@SlapNoSlap is not a bad game. Actually I like to play it more than my previous games. It has all you could wish from an iPhone game, it’s Retina display enabled, Universal for iPhone and iPad, and Game Center enabled. I’ve spent about 7 full weeks on it.

Chillingo has offered to publish the game, so there must be something right in it, no?

But for a reason I don’t understand, so far, this game was ignored by almost everybody, from Apple editors, to reviewers.

261 persons have downloaded it the first week (follow my tweets if you want more stats). With only 2 ratings on the US appstore, it’s diffictult to say how the game is perceived. If you are one of the proud owners of Slap No Slap, be sure that I’ll keep updating it and adding new features, until it’s ready for an evil marketing plan. 

Jan 13

Using Twitter as a Backend(!)

Image from "For the birds", PixarDo you need a simple news feed for your application? You could probably rent a piece of server and code something in PHP, Ruby or Python, you could for example use google app engine as your backend.

But did you think about using Twitter?

3 limitations you have to know before choosing Twitter as your backend :

4 major benefits of using Twitter as your news backend :

I’ve been sucessfully using Twitter as my news backend for 1 year now. It’s implemented in all my iPhone / iPad games.

Let’s take an example with Blockoban. First of all, as we are talking about iOS development, you’ll have to get a Cocoa Twitter client. I used the great MGTwitterEngine. Let’s see what happens when launching the game.

So here it is, you can keep your players informed about the latest news without updating the application. I’ve been using this for 1 year now, and I’m very happy with it. It’s not the most sophisticated news system of the world, but it just does the job. Note that this can be used also to cross promote your games, as seen in the screenshot above.

Jan 10

BonusLevel, make your levels, AND your games!

Path 4 Mouse welcome screen

Making a level on BonusLevel.org, is the rule, but making a game doesn’t happen so often.

Today, a game started more than 1 year ago by 2 young members of BonusLevel.org, has made it to the front page. The game is a mouse avoider, called “Path 4 Mouse”, with endless options in the level editor. If you are not familiar with game development, maybe you don’t know how difficult it is to finish a game! So I want to congratulate geckojsc (15 years old) and MARC2008  (16 years old) for their great achievement. I’ve seen their Flash skills improving along the months while the game was taking shape, and I can’t wait for their next games.

Jan 08

Vimeo is cool (Youtube is not)!

The BitmapData.draw method in Flash, is protected. If you try to write a MovieClip from another domain/website into a BitmapData, you will get a SecurityError. Unless this domain authorizes other domains with a crossdomain.xml policy.

I  learned this when trying to write a Youtube video on a BitmapData.

Youtube is not cool, but fortunately, Vimeo is! Yes, Vimeo authorizes all of us to write their videos on a BitmapData, allowing a bunch of fun experiments (http://asciimeo.com/).

All you have to do is request the right crossdomain.xml, which is not documented on their site (http://vimeo.com/api/docs/moogaloop) .

I knew that asciimeo.com was using BitmapData.draw on Vimeo videos, so all I had to to do is open a video on asciimeo, and use firebug (http://getfirebug.vom/) to capture the crossdomain.xml urls. And it worked!

Here are a bunch of calls you have to add in your AS3 projects to allow Vimeo videos being written on BitmapData :

Security.loadPolicyFile(“http://t.vimeo.com/crossdomain.xml”);
Security.loadPolicyFile(“http://bitcast.vimeo.com/crossdomain.xml”);
Security.loadPolicyFile(“http://av.vimeo.com/crossdomain.xml”);
Security.loadPolicyFile(“http://bitcast-a.v1.ord1.bitgravity.com/crossdomain.xml”);
Security.loadPolicyFile(“http://bitcast-a.v1.iad1.bitgravity.com/crossdomain.xml”);
Security.loadPolicyFile(“http://bitcast-a.v1.sjc1.bitgravity.com/crossdomain.xml”);
Security.loadPolicyFile(“http://b.vimeocdn.com/crossdomain.xml”);
Security.loadPolicyFile(“http://vimeo.com/moogaloop/crossdomain.xml”);

Tanks to http://twitter.com/peter_nitsch and http://twitter.com/UnitZeroOne who pointed me to Vimeo.

As I already told, Vimeo is a cool community, visit their forums where you can reach the staff : http://vimeo.com/forums