My flash game (developed with Flash CS5 alpha) is finally available on Apple Store. You can get it here.
Archives de l’auteur : Francis Bourre
Boost your Brain – Flash game on iPhone
Last week, I finished to develop a game for iPhone and iPod touch with Flash CS5 alpha.
I submitted it on Apple Store and at this time it’s waiting for review process.
I must admit that’s a pleasure to work with Flash and to be able to produce multi-screens games (Facebook, iPhone and Air) without redeveloping from scratch.
I’ll be back later with a more detailed article about development and distribution process, so stay tuned!
Thanks to Adobe guys for tips, help and feedback: Aditya Bansod, David Knight, Mark Silverman, Arno Gourdol, Adrian Ludwig, Mike Chambers.
Thanks to testers: Virginie Pain, Alex Aigret, Olivier Costes, François Meunier, Benjamin Guillotte, Pierre-Louis Gonon, Jonas Monnier, Germain Lecourtois, Frédéric MagicFred Smyczynski, Cédric Néhémie, Matthieu Huguet, Julien Faure…
Special thanks to Virginie Pain for bonus items and girl design.
To finish, here’s a teaser that showcases some gameplay, music and sound.
Are you smarter than your friends ? Boost your Brain is a collection of fun and addictive games for iPhone and iPod touch including logic puzzles, mental calculation and memory trainers. Play in challenge mode along 300 levels. Do your brain workout daily. Challenge your mental dexterity along 3 modes of 100 levels each. You can quit the game at any time and resume your last play the next time you join. Prepare to have fun and your brain tested! Available on Apple Store: 27/11/2009
Play fast as you can before time runs out to solve puzzles, collect fruits, use bombs, pick alarm clocks and make bonus chains.
PixFM – Interactive music with Flash
After PixServer, here’s the second project I started few weeks ago during my free time.
As a musician, I was interested to find a way to implement some interactive music behavior in Flash.
So I followed these steps to reach my goal:
- Dynamic sound generation: Audio tracks (volume and pan) with insertion of basic dsps.
- Implement time based sound generation: Midi tracks (tempo and steps with mp3 samples assignedon each).
- Create some randomness based on received events: Midi tracks content can be controlled by any event source.
As you can imagine, the possibilities are endless to use this approach in real cases. You could easily imagine to plug a dynamical sound loop with user interactions on a website, generate interactive music loop from game actions to rythm a gameplay, or synchronize any soundscape with screen transitions…
More features and demos to come !
Here’s a basic code example made with a draft implementation of this concept.
var tempo : Number = 120.0;
// Create midi patterns defining tempo and steps (quarter notes count) for each
var loopPattern : Pattern = new Pattern( tempo, 32 );
loopPattern.addStep( 0 );
var kickPattern : Pattern = new Pattern( tempo/2, 16 );
kickPattern.addSteps( 0, 3, 6, 8, 11, 15 );
var snarePattern : Pattern = new Pattern( tempo/2, 16 );
snarePattern.addSteps( 2, 4, 12, 14 );
var hhPattern : Pattern = new Pattern( tempo, 16 );
hhPattern.addSteps( 0, 2, 4, 6, 8, 10, 12, 13, 14 );
var randomPattern : Pattern = new Pattern( tempo );
randomPattern.addSteps( 1, 3, 5, 7, 9, 11, 13, 15 );
// build core audio station and add audio tracks defining volume and pan
_audioStation = new AudioStation( );
_audioStation.addAudioTrack( new Track(new SoundSequencer( Loop1, loopPattern ), 1, 0 ) );
_audioStation.addAudioTrack( new Track( new SoundSequencer( Kick1, kickPattern ), 0.3, 0 ) );
_audioStation.addAudioTrack( new Track( new SoundSequencer( Snare1, snarePattern ), 0.3, 0 ) );
_audioStation.addAudioTrack( new Track( new SoundSequencer( HH3, hhPattern ), 0.3, 0 ) );
// create some randomness trigged by keyboard events.
var soundList : Vector. = new Vector.();
soundList.push(Kick1, Snare1, HH1, HH2, HH3);
var interactiveSequencer : RandomSoundSequencer = new RandomSoundSequencer( soundList, randomPattern );
textfield.addEventListener( KeyboardEvent.KEY_UP, interactiveSequencer.eventTrigger );
_audioStation.addAudioTrack( new Track( interactiveSequencer, 0.3 ) );
Now, here is a quick demo of the concept.
Drums fills and bells notes arpeggios are trigged by keyboard events.
First, get the focus in the flash animation by clicking with your mouse. The music starts!
Now, you can hit some keys on your keyboard to interact with the music loop in realtime.
[kml_flashembed movie="http://www.tweenpix.net/files/pixfm.swf" width="400" height="300"/]
Final note: Special thanks to Andre Michelle and his Audio Sandbox for giving to me some light to begin this project.
FlexPMD test with Ant
Yesterday, Adobe released FlexPMD, a great tool to automatically detect code anti-patterns, code smells, common bad practices in a Flash/Flex based source code.
I tried it this morning and it’s working great. Thanks to Xavier Agnetti for this good piece of software ! I didn’t test at this time how to set custom rules. That’s on my todo list because I think that’s the most interesting part of this project.
I encountered some minor problems to run Ant task as described on the official site. Few imports was missing (commons-lang-2.4, flex-pmd-files, as3-parser-api), some mismatched with the current versions included in the zip (as3-parser and as3-plugin-utils). – Edit: Xavier just fixed the documentation.
Another thing, default rule file was unreachable. I didn’t check the jars to check if the rule file was included. – Edit: See Xavier’s comment below.
I choosed to export it directly from ruleset creator application and target the new file from my Ant task. If you need it, I uploaded it here.
Here’s a snapshot of my Ant task modified to make it working with my project.. Check from line 237 to 258.
Flumotion on Ubuntu – Workaround
Today I tried to run Flumotion on Ubuntu for making some video experiments.
Installation and Admin launch failed. Too bad!
I discovered while digging the web that’s because there’s a bug in the current release. Too bad again!
Here’s the workaround I found now. Overwrite /usr/lib/flumotion/python/flumotion/common/package.py with the latest committed to branched revision 7960.
Enjoy, everything should be ok now !
PixServer – AMF game server
I’m back to the scene… with an empty hard drive.
That’s THE bad news, I lost all my data one month ago. Around 10 years of storage without any backup. That really sucks.
The good one is that it gives to me lot of punch to start from scratch 4 new projects. They’re all linked together, but I’ll give you details later about the connection.
So let me introduce the first one.
I needed a multi-users game server. So after some googling to browse OS projects, I decided to build a new one from scratch with Apache Mina 2.0 using my R&D xp.
I choosed to install Ubuntu with Parallels to have an easy workflow with a local test workstation.
At this time, I’ve obtained something basic which works fine. That’s full AMF (using BlazeDS ) and it manages users and rooms.
That’s all based on simplicity. No events, no verbosed implementation or mess with abstract design…
My next step and goals:
- Have something robust.
- Build a graphical chat showcase with text to speech feature.
- Build a game showcase with realtime synchronicity. I read a lot of resources about it, and I’m looking forward to work on this.
But I’m wondering about few things at this time:
- Should I go to open source ?
- Should I mix this implementation with Darkstar project ?
- Should I work on a cheap product ?
Any advice would be welcome !
Here’s a basic echo demo to end this thread and showcase the concept:
import net.tweenpix.pixserver.amf.AMFClient;
public class EchoAMFClient
{
protected var _client : AMFClient;
public function EchoAMFClient()
{
_client = new AMFClient( );
_client.registerClass( TestVO );
_client.connect( "10.211.55.4", 9123 );
_client.addEventListener( "EchoMessage", onEchoMessage );
_client.sendRequest( "EchoMessage",
new TestVO( "francis", 38 ),
new TestVO( "virginie", 35 ) );
}
public function onEchoMessage( vo1 : TestVO, vo2 : TestVO ) : void
{
// do something
}
}
Air 1.51 à la rescousse
Nouvelle release Air avec une mention spéciale pour la résolution du bug 1932338. Shift et Espace chantent en chœur maintenant.
Dans la liste des fixes, on notera aussi l’intitulé du 2259477: TweetDeck crashe quand on le laisse tourner longtemps.
Les ingénieurs d’Adobe joueraient-ils les sauveurs de développeurs d’applications en mal de stabilité ? A moins que cet élan magnanime ne soit que le résultat d’une commande de la cellule marketing, fruit elle-même du récent tour de table et du succès de cette application ?
Liens:
- Adobe AIR 1.5.1 Developer and User Release Notes
- Adobe AIR 1.5.1 Documentation
- Download the Adobe AIR SDK
- Adobe AIR 1.5.1 Known Issues and Limitations
Via air team blog
Lynch sur Twitter
Une brève pour annoncer la présence de David Lynch sur Twitter depuis le 6 Janvier. Difficile de passer à côté de cet évènement online après tous les clins d’œil parsemés dans mes travaux.
Oui, je suis un inconditionnel de la première heure.
Merci à sh3sha pour l’info !
rédacteur sur interfacesriches.fr
J’ai décidé avec l’aval de Fred Cavazza de compléter mes activités sur ce blog avec la rédaction de billets sur interfacesriches.fr
Mon premier billet est consacré à shAIR, une solution de distribution commerciale d’applications AIR développée par Kelvin Luck.
A paraître dans les prochains jours, un article d’investigation qui devrait vous plaire. So stay tuned !
réalisation de wireframes online
Lors d’un brainstorming improvisé, il est opportun de pouvoir prototyper une idée à la volée.
Pour ce faire, je vous propose une liste non exhaustive des outils de wireframes disponibles sur le web. Ces outils n’ont bien sûr pas vocation à remplacer les mastodontes du marché comme OmniGraffle ou Visio, mais devraient répondre à vos attentes dans bien des cas.
- Lovely Charts se dote du look and feel le plus sexy du marché.
Cet outsider bien qu’encore un peu jeune (en beta publique depuis le 3 Février) reste très prometteur. La démo est disponible ici et une interview de son auteur est accessible sur insideria.
- Balsamiq Mockups est une application AIR avec un style graphique très singulier imitant le rough papier.
Si vous n’êtes pas allergique à la récurrence des splash screens « try and buy », une démo online fonctionnelle vous est offerte, avec export des données au format XML et export graphique au format PNG.
- Pencil Project est une extension Firefox.
On appréciera sa simplicité, sa parfaite intégration dans le navigateur et sa gratuité totale estampillée gpl2.
- Gliffy est le plus ancien de tous avec 4 années d’existence au compteur.
Même si sa maturité et sa robustesse sont des plus engageantes, on regrettera son design un peu austère.
Pour finir, je vous encourage à compléter cette liste avec un commentaire.
Les plus passionnés seront ravis d’aller faire un tour sur Wireframes, un blog entièrement consacré au sujet.