Socorro: the Super Search Fields guide

Socorro has a master list of fields, called the Super Search Fields, that controls several parts of the application: Super Search and its derivatives (Signature report, Your crash reports... ), available columns in report/list/, and exposed fields in the public API. Fields contained in that list are known to the application, and have a set of attributes that define the behavior of the app regarding each of those fields. An explanation of those attributes can be found in our documentation.

In this guide, I will show you how to use the administration tool we built to manage that list.

You need to be a superuser to be able to use this administration tool.

Understanding the effects of this list

It is important to fully understand the effects of adding, removing or editing a field in this Super Search Fields tool.

A field needs to have a unique Name, and a unique combination of Namespace and Name in database. Those are the only mandatory values for a field. Thus, if a field does not define any other attribute and keeps their default values, it won't have any impact in the application -- it will merely be "known", that's all.

Now, here are the important attributes and their effects:

  • Is exposed - if this value is checked, the field will be accessible in Super Search as a filter.
  • Is returned - if this value is checked, the field will be accessible in Super Search as a facet / aggregation. It will also be available as a column in Super Search and report/list/, and it will be returned in the public API.
  • Permissions needed - permissions listed in this attribute will be required for a user to be able to use or see this field.
  • Storage mapping - this value will be used when creating the mapping to use in Elasticsearch. It changes the way the field is stored. You can use this value to define some special rules for a field, for example if it needs a specific analyzer. This is a sensitive attribute, if you don't know what to do with it, leave it empty and Elasticsearch will guess what the best mapping is for that field.

It is, as always, a rule of thumb to apply changes to the dev/staging environments before doing so in production. And to my Mozilla colleagues: this is mandatory! Please always apply any change to stage first, verify it works as you want (using Super Search for example), then apply it to production and verify there.

Getting there

To get to the Super Search Fields admin tool, you first need to be logged in as a superuser. Once that's done, you will see a link to the administration in the bottom-right corner of the page.

Fig 1 - Admin link

Clicking that link will get you to the admin home page, where you will find a link to the Super Search Fields page.

Fig 2 - Admin home page

The Super Search Fields page lists all the currently known fields with their attributes.

Fig 3 - Super Search Fields page

Adding a new field

On the Super Search Fields page, click the Create a new field link in the top-right corner. That leads you to a form.

Fig 4 - New field button

Fill all the inputs with the values you need. Note that Name is a unique identifier to this field, but also the name that will be displayed in Super Search. It doesn't have to be the same as Name in database. The current convention is to use the database name but in lower case and with underscores. So for example if your field is named DOMIPCEnabled in the database, we would make the Name something like dom_ipc_enabled.

Use the documentation about our attributes to understand how to fill that form.

Fig 5 - Example data for the new field form

Clicking the Create button might take some time, especially if you filled the Storage mapping attribute. If you did, in the back-end the application will perform a few things to very that this change does not break Elasticsearch indexing. If you get redirected to the Super Search Fields page, that means the operation was successful. Otherwise, an error will be displayed and you will need to press the Back button of your browser and fix the form data.

Note that cache is refreshed whenever you make a change to the list, so you can verify your changes right away by looking at the list.

Editing a field

Find the field you want to edit in the Super Search Fields list, and click the edit icon to the right of that field's row. That will lead you to a form much like the New field one, but prefilled with the current attributes' values of that field. Make the appropriate changes you need, and press the Update button. What applies to the New field form does apply here as well (mapping checks, cache refreshing, etc. ).

Fig 6 - The edit icon

Deleting a field

Find the field you want to edit in the Super Search Fields list, and click the delete icon to the right of that field's row. You will be prompted to confirm your intention. If you are sure about what you're doing, then confirm and you will be done.

Fig 7 - The delete icon

The missing fields tool

We have a tool that looks at all the fields known by Elasticsearch (meaning that Elasticsearch has received at least one document containing that field) and all the fields known in the Super Search Fields, and shows a diff of those. It is a good way to see if you did not forget some key fields that you could use in the app.

To access that list, click the See the list of missing fields link just above the Super Search Fields list.

Fig 8 - The missing fields link

The list of missing fields provides a direct link to create the field for each row. It will take you to the New field form with some prefilled values.

Fig 9 - Missing fields page


I think I have covered it all. If not, let me know and I'll adjust this guide. Same goes if you think some things are unclear or poorly explained.

If you find bugs in this Super Search Fields tool, please use Bugzilla to report them. And remember, Socorro is free / "libre" software, so you can also go ahead and fix the bugs yourself! :-)


Play Kawaii Killer, a horrible cuteness genocide game

Kawaii Killer, the first game of Tabemasu Games, is now out and playable on Android and iOS! Why am I writing about this game? Because it is the first commercial game of my friend Aurélien! He started as an independent game developer last year, and worked hard on making this Jam game a top-quality mobile game.

So what is this game about? You are a trapper going through his forest, and you want to kill as many animals as you can, as fast as possible. Each animal requires a different gesture to be killed, and it obviously gets more and more complex. If you are a sensitive person, or a friend of the animals, maybe you won't enjoy that game much, because those poor little things die in horrible manners… A lot of blood will be shed under your fingers! Be ready for a gory journey!

Maybe you have seen Kawaii Killer before: it was one of the best games created during the Game Dev Party Jam #3, back in 2012. Aurélien worked with a team of 5 people to build this very fun and enjoyable game. You can still find it here. Apart from the fact that the game has been rebuilt from scratch, much has been added since the Game Jam: new stages, new enemies, difficulty levels, a story, achievements and badges… If you have a smartphone and like killing cute animals, you should definitely try this game out. You can buy it from Google Play, the Apple App Store, or you can get it DRM-free from the Humble Store.

Not convinced yet? Well, take a look at the release trailer:

As a side note, I must say I am very happy that Aurélien, Fred and Vincent, the 3 guys who made this game, met during Jams organized by the Game Dev Party association. It's a proof that those events are useful to our community and help the video game industry in Lyon. Heck, Aurélien was an amateur game creator and now he has released a commercial game, isn't that awesome? So, let's keep rocking with the GDP, and let's keep building awesome video games in Lyon!


About Socorro

I have been working on Socorro for about 3 years now. It was about time that I started talking about it on this blog! With this first post, I am inaugurating 2 new tags, socorro and mozilla. I'm also going to add a language tag to my posts, so each new post will either be en or fr. This way, you can choose more accurately what kind of content you want to read from this blog. The previous links on the tags lead to the filtered Atom feeds, and I will add the mozilla feed to the Planet.

So, what is Socorro?

  1. a planet in the Star Wars universe
  2. a city in Brazil
  3. an island in Mexico
  4. a server to process breakpad crash reports

All of those are true, but as you guessed (I hope! ) we will only consider the last option. So basically, Socorro is a software that collects, processes and stores crash reports generated by breakpad. We use breakpad in our desktop software such as Firefox, Firefox for Android, Thunderbird and FirefoxOS. We then have a Web interface that shows information about the stability our those software, and we call it crash-stats. As usual with Mozilla, most of the information on this site is public, the only exceptions being sensitive data like email addresses, URLs, etc.

Most of Socorro's code base in written in Python. The back-end is raw Python based on a tool called configman, developed by my colleagues Lars and Peter, that handles the configuration and is used as a dependency injection system. It allows Socorro to be very modular, and to add or remove components easily without changing any code. We use 3 different databases:

  1. HBase is the primary storage and is there for data consistency (it contains all the data we receive and process and must never lose data)
  2. PostgreSQL is used as the main source of data for the UI (it contains all the processed data and has a lot of materialized views with various computed information)
  3. elasticsearch is used as the secondary source of data for the UI, mainly for everything related to search. This is what I have been mainly working on.

The Web app is based on Playdoh, Mozilla's customized django framework. We have more and more javascript, mostly using jQuery, but it's a bit chaotic at the moment.

Interested in contributing?

If Socorro sounds like a good project to you and you would like to participate, we would be very happy to hear about you! There are a few places where you can start:

You can also join us in Mozilla's IRC server, channel #breakpad. There are a good variety of bugs to fix on Socorro, from pure front-end work to complex back-end Python problems. And if Socorro is not your thing but you still want to help Mozilla fulfill its mission, you can take a look at!


Play Michel in Hell, our Ludum Dare 29 game!

Last year, my friend Aurélien invited me to participate with him and a few other friends in the Ludum Dare, for the 26th edition. We made a Flash game, which is probably why I didn't write about it (how could I face my Mozilla colleagues after making a Flash game? ). It's called Sniff and it's about a drug dealer that needs to deliver its magical powder to his customers. As those customers are in a night club, you will need to use the music to find your way through the town. Beware of the cops that want to catch you, and beware of not using the different powers the drug gives you...

Play Sniff

This blog post is not about Sniff, though. After having only organized, and not participated, in our last Game Dev Party Jam, I felt a bit frustrated and really wanted to work on a game. So I called a few friends and invited them to join me for the Ludum Dare 29 weekend. 4 of them answered, and we had a team! Caroline joined us as our graphics person, Pierre-Etienne would take care of all music things, while Maxime and Rémi would join me on the programming of the game.


The tale of Michell

The theme of this edition of the Ludum Dare was "Beneath the surface". I was not much inspired by it, but I dislike multi-words themes in general. After about 3 hours of brain-storming, we decided to go for a tower defense game, with a bit of Hack 'n Slash in it. The idea was for the player to defend against troops sent from hell: Michell, the hero, peed on Lucifer's flowers, and that didn't make him happy at all. So Lucifer decided to send all his troops to kill him! But Michell is no mere hero, he is a magician that can grow strong plants to help him.

So, there you are on a small platform. Demons will be appearing around that platform in waves, and they will attack you. You can either fight them directly by clicking on them if you can reach them, but that is dangerous. Your other solution is to use your magic to grow powerful plants to help you. Click on a button at the bottom or use the shortcuts, then place your tower. The only limit is that you need to go close to where you want to build the tower, and wait until it is fully grown before you can do something else. The first tower is a bit weak and attacks enemies. The second one is more resilient, but it only slows them down.

Play Michell in Hell

This is the current version of the game. We continued developing the game after the end of the Ludum Dare, and have fixed some pretty big bugs. We also added more content (the second tower, the boss, sounds... ). If you want to see what the game looked like at the end of the weekend, you can play the Ludum Dare version.

The Ludum Dare 29 is now over, and we have the results of the voting. People liked our game, it seems, as we got only above-average marks. Unsurprisingly, the graphics and audio were what people liked the most! Overall we had slightly worst marks than for Sniff, but that doesn't surprise me: the game was less polished at the end of the weekend, with some annoying bugs. I hope people had played the updated version instead, but I realized only too late that I could edit the entry. Anyway, here are our ratings for the Jam competition!


Notes about Phaser

We used the Phaser game engine for this jam. I had played a little with it before, and I thought it was pretty cool and complete / stable enough. As usual, this assumption was stressed a lot during the weekend! Overall I am satisfied with it, the performance of the game is pretty good, the engine was quite easy to use, and the code of the engine itself is pretty clean. However, here are a few things that I didn't like or feel could be improved.

Documentation. That's the key for every developer facing code. If it isn't correctly documented, it's going to be very hard to use, people will get frustrated and the software will slowly die, or never get used at all. In the case of Phaser, discovery of features was the most difficult thing. I realized several times during the weekend that some things I had coded were already built inside the engine. That is frustrating, especially when coding in limited time like in a Jam. The API documentation was very complete and pretty good in my opinion, but it could do with some work on the search features.

Some things are still buggy, or at least did not behave like we expected them to. For example, we struggled a lot with the physics, and especially with the collision system. Sometimes collisions just stop working if you make objects unmovable. Objects push each others by default when colliding. And there are few incoherences in the collision functions that I would like to fix whenever I can find the time to open a pull request to Phaser...

The groups feature was the most misleading thing we used during the weekend. What we didn't know at first was that groups define the order in which objects are displayed. That's cool, but. If your Game object contains groups, those groups will be displayed in the order they are in Game. That's probably expected and a good behavior, but as we used groups for logical grouping (enemies together, towers together... ) and not for display grouping, we ended up with a messed up displaying. Basically, towers could never be behind enemies, even when that enemy was clearly in front of that tower. Same for the player. So I had to re-work our logic to not use Groups but lists, and use Groups as display layers. A bit confusing.

Overall, I was satisfied with Phaser and I want to use it again on my next Jams. Hopefully I will take some time to fix the few bugs we found during the development of Michell in Hell!

I want to finish this article with a big thank you to Caroline, Maxime, Pierre-Etienne and Rémi who made this game with me. I really enjoyed this weekend with you, and hopefully you did too!


En avril, JDLL et Game Jam #6 à Lyon

Hello !

Voici les événements lyonnais auxquels je participe en avril.

Game Dev Party - Game Jam #6

GDP Jam #6 Tout d'abord, l'association Game Dev Party organise sa 6e Game Jam le week-end des 4, 5 et 6 avril (du vendredi soir au dimanche soir). Le thème sera New York, thème inspiré du festival Hallucinations Collectives dont nous sommes partenaires pour cette édition. On vous attend nombreux pour cette nouvelle Jam, on a hâte de voir ce que vous allez créer et on a envie d'être, comme à chaque fois, émerveillés par votre imagination et votre talent. La Jam se déroulera à l'école e-artsup, au 20 rue Jules Brunard dans le 7e, elle est ouverte à tous sur inscriptions, et le public est invité à venir dimanche soir à partir de 18h à la démonstration des jeux qui clôturera le week-end.

Comme la dernière fois, nous organisons une soirée démo après la Jam. L'objectif est de réunir les créateurs de jeux et un public aussi varié que possible, afin de les mettre en contact, de tester les jeux et de passer une bonne soirée. La Maison Pour Tous - Salle des Rancy nous accueillera à nouveau, au 249 rue Vendôme, Lyon 3e, à partir de 19h et jusqu'à environ 21h. N'hésitez pas à venir voir ce que les jammeurs peuvent faire en un week-end !

Tous les détails sur la Game Jam #6.

Journées Du Logiciel Libre 2014

Également à la Maison Pour Tous, les JDLL 2014 auront lieu le week-end des 12 et 13 avril. J'y donnerai deux conférences le dimanche :

Les dangers de la centralisation sur le Web

Une conférence grand public sur la tendance à la centralisation sur le Web. J'y expliquerai grossièrement ce que sont l'Internet et le Web, ce qu'est la centralisation et quels sont ces dangers. Nous verrons également qui sont les principaux acteurs de cette tendance, quelles sont leurs stratégies, et surtout, quels sont les moyens de sortir des enclos dans lesquels ils veulent nous enfermer.

Il faut enseigner l'Internet aux adultes

L'Internet a débarqué dans nos vies à une vitesse folle, et beaucoup d'entre nous ont appris à s'en servir sur le tas. Or l'Internet, comme tout outil, peut se révéler dangereux s'il est mal utilisé. Cette conversation (plutôt que conférence), destinée à un public ayant une connaissance technique de l'Internet, vise à faire prendre conscience que nous devons expliquer ce qu'est cet outil, comment il fonctionne, et quelles en sont les limites, aux gens qui nous entourent.

Le planning des JDLL n'est pas en ligne à l'heure où j'écris ces lignes, mais il devrait être publié dans le courant de la semaine. Ce week-end sera l'occasion de rencontrer beaucoup d'acteurs du libre, de Lyon ou d'ailleurs, et de découvrir un univers qui s'il vient d'un monde technique, peut apporter beaucoup à tous les niveaux de nos vies. Mozilla aura bien évidemment un stand, et j'ai ouïe dire qu'une conférence sur FirefoxOS sera organisée.


Expériences numériques, ce samedi à Lyon

Samedi 11 janvier 2014, l'Espace Public Numérique de la Maison Pour Tous - Salle des Rancy accueillera la 12e édition de ses Expériences Numériques. Au programme de cette journée :

  • des conférences d'Illyse, le FAI associatif lyonnais ;
  • une "Install Party" de l'ALDIL ;
  • de la musique assistée par ordinateur ;
  • du cinéma et des effets spéciaux ;
  • du mobile, de la tablette...

Et bien entendu, une bonne ambiance et des rencontres précieuses avec des passionnés ! Pour plus de détails, lisez le le programme complet (pdf), ou rendez-vous sur le site de l'Espace Public Numérique de la MPT.

Expériences Numériques #12
samedi 11 janvier, de 10h à 19h
entrée libre et gratuite
249, rue Vendôme, Lyon 3e


Où est mon shaarli ?

Il est là !

Shaarli, un petit logiciel Web créé par sebsauvage, est un outil de "bookmarking", à l'origine censé être un concurrent libre et auto-hébergé de delicious. Sauf qu'avec la puissance du RSS et du libre arbitre, les gens (dont sebsauvage lui-même) se sont mis à l'utiliser plus comme un outil de partage de liens, un peu comme on utilisait twitter à l'origine (avant que ça ne soit pollué par des conversations futiles). Le tout est installable sur n'importe quel serveur Web (c'est codé en PHP), ça se configure très facilement et ça s'utilise tout aussi facilement. Pour plus d'informations, visitez la page Shaarli sur le wiki de sebsauvage.

Et pour le plaisir, les shaarlis des copains :


Et si vous en connaissez des qu'ils sont biens, qu'ils sont bons, qu'ils sont plein de bonnes choses, n'hésitez pas à les partager dans les commentaires.


Mozilla Game Jam Paris 2013 - les jeux !

Ça y est, la Mozilla Game Jam Paris 2013 est terminée ! Comme annoncé samedi, ce sont cinq jeux qui ont été créés par nos cinq équipes. Et même un peu plus, comme avec le verrez dans la suite de cet article. Le bilan est très positif : il semble que les gens aient tous apprécié l'événement, chaque équipe a pu présenter un jeu jouable, et le niveau était plus élevé pour une première Jam[1].

Quelques petits points négatifs tout de même : une vingtaine de personnes ne sont tout simplement pas venues, sans prévenir ni annuler au préalable. Si c'est décevant pour les organisateurs, c'est aussi peu respectueux, notamment parce que nous nous sommes engagés à fournir de la nourriture à tous les participants (et à manger pour 30 personnes ce n'est pas pareil que pour 50). Heureuseument, nous avons pu revoir les quantités avec nos fournisseurs, et nous n'avons pas gaspillé. Autre événement regrettable, une personne qui semble-t-il voulait venir voir la Jam et aurait été insultée : nous lui avons présenté nos excuses, mais ce qu'il s'est passé n'est pas clair.

Comme toujours, les éléments négatifs semblent prendre le pas sur le positif, alors je tiens à le rappeler (autant aux lecteurs qu'à moi-même) : cet événement a été un succès ! Nous sommes motivés pour continuer à en organiser, et je vous tiendrai informés ici de nos prochaines Jam parisiennes (et lyonnaises, puisque la GDP a annoncé sa Jam #5 ! ).

Trève de bavardages ! Voici les jeux !

Spaceship Mercenaries

Par les Power Rangers (Émilien (dev), Gaëtan (dev), Jean-Marie (dev), Sann-Rémy (dev), Jacky (dev), André (graphiste) et Mickaël (dev)).

Le jeu tourne sur toute plate-forme, mais est pensé pour les appareils "touch" puisqu'il se joue en un contre un sur le même écran, en utilisant le multitouch.

Jouer au jeu



Par les Semi-croustillants (Thibault (dev), Benjamin (dev), Valentin (dev), Christophe (dev), Guillaume (graph) et Wilko (dev)).

Les Semi-croustillants trouvaient que faire un seul jeu, c'était un peu trop facile, alors ils en ont fait cinq ! Tous se jouent bien sur PC, je n'ai pas testé sur mobile.

Jouer au jeu
Télécharger le jeu (.rar)



Par les Deadly Worms (Benjamin (dev), Mourdjen (dev), Maxime (dev), Clément (dev) et Federico (dev)).

Le jeu tourne sur PC, mais n'est pas adapté pour les petits écrans de nos appareils mobiles. Il faut aligner les formes pour stopper les bateaux qui avancent vers l'île à la manière d'un bejeweled.

Jouer au jeu
Télécharger le jeu (.zip)



Par les BN (Alvin (dev), Gwenael (dev), Gabin (dev) et Yves (musicien, graph)).

Pour PC uniquement, puisque le jeu demande d'appuyer sur des touches de votre clavier pour choisir votre attaque au Janken. Les touches sont indiquées en haut de l'écran, et sont <A>, <Z> et <E> pour le joueur de gauche et <7>, <8> et <9> pour le joueur de droite.

Jouer au jeu



Par les Gwhackamole (Alexandre (dev), Rémi (dev, musicien), Johann (dev), Hugo (dev) et Nicolas (graph)).

Jouable sur toutes plate-formes, mais c'est optimisé pour tablettes et autres appareils multitouch puisqu'il faut appuyer sur autant de boutons que possible pour remonter plus de taupes à la fois et donc faire plus de points. Le maximum connu pour le moment est autour des 1300 points.

Jouer au jeu
Voir les sources sur github



[1] J'ai noté sur les Jam organisées par la Game Dev Party que le niveau monte de Jam en Jam, grâce au noyau dur des participants réguliers qui apprennent à chaque fois et "éduquent" les nouveaux venus.


La #MozJam2013 est en cours


Ce week-end, Clara, Nicolas, Paul et moi-même organisons dans les locaux parisiens de Mozilla la Mozilla Game Jam Paris 2013. Petit rappel du concept : on enferme des passionnés ensemble pendant 48 heures, on secoue un peu, on les mélange, et on les regarde faire des jeux. À la fin, on les libère et on regarde ce qu'ils ont fait : souvent, on y découvre de petites merveilles, et on s'étonne de voir ce que des gens motivés peuvent faire en si peu de temps !

Ce sont donc 26 personnes qui sont venues créer des jeux Web avec nous ce week-end. Une grande majorité de développeurs pour cette première Jam made in Mozilla, avec trois musiciens et trois graphistes. Cinq équipes se sont constituées ce matin, et nous espérons donc pouvoir présenter cinq jeux d'ici la fin du week-end. Les démos sont prévues dimanche à partir de 18 heures, on essayera de faire du live tweet sur le mot-dièse #mozjam2013. Et on vous présentera bien entendu plus en détail tous les jeux, avec si possible des liens pour les essayer vous-même !

Voici donc les cinq équipes et leurs projets :

Spaceship Mercenaries, par les Power Rangers


Équipe constituée de Émilien (dev), Gaëtan (dev), Jean-Marie (dev), Sann-Rémy (dev), Jacky (dev), André (graphiste) et Mickaël (dev).

Spaceship Mercenaries est un jeu de duels tactiques en local sur le même appareil (l'équipe vise les téléphones) dont l'objectif est de détruire le vaisseau de l'adversaire en utilisant les pouvoirs de son propre vaisseau. Chaque joueur a un panel de trois actions qu'il peut déclencher quand il veut, mais qui demandent de l'énergie, et l'énergie représente aussi la vie du joueur. Il faut donc utiliser les actions avec parcimonie et au bon moment, en fonction des actions de l'adversaire.

Game.random(), par les Semi-croustillants


Équipe constituée de Thibault (dev), Benjamin (dev), Valentin (dev), Christophe (dev), Guillaume (graph) et Wilko (dev).

Le but des Semi-croustillants est de créer une plateforme de mini-jeux, avec un bouton qui permet de choisir un jeu au hasard. Le but est d'avoir une grande variété de mini-jeux funs et faciles à comprendre. Par exemple : un snake, un asteroids, un space invaders... Objectif pour la fin du week-end, avoir une dizaine de petits jeux jouables.

Syracuse, par les Deadly Worms


Équipe constituée de Benjamin (dev), Mourdjen (dev), Maxime (dev), Clément (dev) et Federico (dev).

Syracuse serq un genre de match 3 / bejeweled qui tire partie des coordonnées des formes afin d'introduire une nouvelle dimension au gameplay. Contexte : le joueur est sur l'île de Syracuse, et doit se défendre d'une invasion de bâteaux romains. La grille de jeu représente l'île, et les bâteaux s'approchent de l'île en suivant des lignes. En créant des formes dans l'île, on détruit le ou les bâteaux qui sont dans l'axe de cette forme.

Janken, par les BN (Bestial Nigga)


Équipe constituée de Alvin (dev), Gwenael (dev), Gabin (dev) et Yves (musicien, graph).

Les BN ont choisi de créer un jeu de combat basé sur le classique pierre-feuille-ciseaux. Le fait de gagner à pierre-feuille-ciseaux permet d'attaquer son adversaire. À chaque fois qu'un joueur attaques, sa barre d'énergie augmente jusqu'à déclencher une attaque spéciale plus puissante, mais qui nécessite la réussite d'un mini-jeu. Il y aura plusieurs personnages avec des statistiques différentes (énergie qui monte plus vite, attaque spéciale plus dure, etc. ).

TipTaupe LapTaupe, par les Gwakamole


Équipe constituée de Alexandre (dev), Rémi (dev, musicien), Johann (dev) et Hugo (dev).

Les Gwakamole ont décidé de reprendre le classique jeu de la taupe (Whac-A-Mole en anglais) mais du point de vue de la taupe. Les joueurs devront donc essayer de survivre aux attaques du marteau. Le jeu sera multijoueur sur un même appareil (d'abord pour tablettes, avec une compatibilité PC). Le but est de survivre le plus longtemps possible, et plus que les autres. Le gameplay n'est pour l'instant pas bien défini mais va s'affiner au fur et à mesure.

On leur souhaite à tous bien du courage, et on espère voir de beaux jeux demain soir pendant les démonstrations.


Mozilla Game Jam Paris 2013

Depuis environ deux ans, la Game Dev Party est un événement qui marche très bien. La demande est présente, les participants sont enthousiastes, et chaque Jam est une réussite. Seulement, la Game Dev Party, c'est à Lyon. Alors avec mes collègues mozilliens Nicolas et Paul, on s'est dit que maintenant qu'on a de beaux locaux parisiens, on pourrait organiser une Jam dans la capitale. Si ça marche à Lyon, pas de raison que ça ne soit pas une réussite à Paris.

Alors voilà...

Les samedi 28 et dimanche 29 septembre 2013, venez créer un jeu vidéo en un week-end ! Ça se passera dans les bureaux de Mozilla, au 16 Boulevard Montmartre dans la 9e arrondissement. L'événement est ouvert à tous : programmeurs, graphistes, musiciens... Si vous avez une idée de jeu, proposez-la le samedi matin, et si elle est retenue par les autres participants, vous aurez l'occasion de monter une équipe et de travailler sur votre jeu ! Si vous n'avez pas d'idée, mettez votre talent à profit du projet qui vous plaira le plus. Objectif : s'amuser, et apprécier le fait d'avoir réalisé un jeu en moins de 48 heures.

Pour tous les détails et pour vous inscrire, rendez-vous sur la page de l'événement :

S'inscrire à la Mozilla Game Jam Paris 2013


Soviet VS Asteroids

Dear readers,

I am happy to announce today the release of a new game I worked on: Soviet VS Asteroids. The game was developed during the last jam of the Game Dev Party (see the introduction of that 4th jam [fr] or a report of the 2nd edition [en]). The concept is simple: during an entire weekend, 50 people gather, make teams and work on a game, with the goal of having something to show (and to play) in the end.

Greetings, comrade cosmonaut!

This time I decided to work with my friend Aurélien Defossez, who proposed a "planet defense" gameplay. The idea is that you are in space, and asteroids are flying at you. You will need to use your weapons to destroy those nasty asteroids and survive as long as possible. Aurélien gathered a team of 6: he was managing the project and programming, along with Louis-Rémi Babé, Maxime Viry and myself. Mathieu Perez created all the sounds and musics of the game, and did a bit of code as well. Frédéric Ostéréro drew all the beautiful graphics. With this fine team and a lot of work, we demonstrated something pretty good on Sunday evening. But it was not ready for release yet. Over the last 2 weeks, we did some bug fixing, added the missing menus (things like credits or tutorial that do not matter for the demo but are needed when you release the game to the public), and polished the gameplay, mainly by adjusting the difficulty so as many people as possible can enjoy it.

And now, it is time: we believe the game is ready to be played! At this point I hope you are excited and want to download the game as soon as possible. You can do just that by clicking one of those links:

You can play the game with your mouse and keyboard, or with a pad. Make sure your pad is plugged in before you start the game or it will not be detected. You have 2 weapons at your disposal: a rocket launcher and a laser command. You aim at asteroids with the joysticks or your mouse and the Q, A or D keys of your keyboard. If you play with a keyboard, the lasers will fire automatically, and you can shoot rockets by clicking your mouse or hitting the space key. With a pad, you shoot with LS and RS. By pressing the Tab or Enter keys, or the Y button on a pad, you enter the upgrade menu: use your money to make your weapons better, or clear the space around you if you are overrun, or place new lasers or drones around you to improve your defense.

We all hope you are going to enjoy our game! Do not hesitate to make any comments here or to share your high scores! We would love to hear from you.

If you are interested by the technical details, there you go: the game in programmed in lua, using the LÖVE framework (also known as love2d). You can find the source code on github: feel free to fork and open pull requests or issues if you find bugs. Quick feedback on lua: it's nice, but some choices in the design of the language are weird. I definitely prefer Python, but wouldn't mind working with lua again. LÖVE on the other hand was quite a pain to work with, for 2 majors reasons: missing features (no sprite system in a 2d game framework? ) and documentation. As usual, the documentation of a tool is critical and even if the API was well documented, there was almost no tutorial, and no examples of basic features or code.

Play & Enjoy!


Easily editing a PDF file on Linux

I work for a tech company, and yet I regularly need to manually sign digital files. What's the obvious way of doing that? Here it is:

  1. Print your file
  2. Sign your file
  3. Scan your file

That doesn't sound right. There must be some other way of doing this without wasting paper and ink, and without the pain of all those steps. Well, turns out there is one! It took me time to find, so I'm sharing it here, hopefully it will help others. The cool thing about this technique is that you probably already have the software that is required. Introducing... LibreOffice Writer! Yep, the Microsoft Word equivalent. You will need an extension though, called libreoffice-pdfimport. Install it simply with sudo apt-get install libreoffice-pdfimport and you should be good. Then the steps become:

  1. Make an image of your signature
  2. Open your PDF file with Writer, insert the image wherever you want, export as PDF
  3. Profit

Here are a few good points about this technique: first, your PDF file doesn't get turned into a flat image. Second, you can do a lot more than just adding an image. And third, it is much easier than using software like pdfedit.

For more details about how to use LibreOffice Writer and for the source of this post, please read Signing a document with an image in Ubuntu 12.10.


La 4e Game Dev party arrive

On voulait en faire une par an, on a eu beaucoup de succès, on s'est dit qu'une tous les six mois c'était bien aussi, et il semblerait qu'on ait trouvé un bon rythme. Il y a environ cinq mois, je participais à la 3e édition de la Game Dev Party, la game jam lyonnaise. Et dans un mois, je participerai à la 4e édition de cette même jam, en tant que développeur comme d'hab, mais aussi en organisateur cette fois !

Pour rappel, la game jam c'est un week-end entier de création de jeu vidéo en équipe. Vous venez avec votre talent, vous proposez un projet ou vous en rejoignez un, et vous vous appliquez à utiliser votre talent pour la création du projet, dans le but d'avoir un jeu jouable à la fin du week-end. Tout le monde peut venir, il suffit d'avoir la passion de la création de jeu ! On a besoin de développeurs, de graphistes, de sound designers, de game designers, mais surtout de gens qui n'en veulent !

Pour cette édition, il y a quelques détails qui changent : tout d'abord, la jam est organisée en partenariat avec le festival Hallucinations Collectives, nous imposerons donc un thème aux jeux créés dans le week-end. Ce thème sera choisi parmi cinq annoncés sous peu, et tiré au hasard la veille de la jam, pour vous laisser le temps de préparer vos pitchs. Deuxième détail d'importance, nous changeons de lieu ! Cette prochaine édition aura lieu dans les locaux de l'école e-artsup de Lyon. Et troisième nouveauté, samedi à partir de 15h, nous accueillerons deux conférences dans les locaux d'e-artsup ! Profitez de l'occasion pour venir voir comment la game jam se déroule, et découvrez grâce à Douglas Alves l'histoire du jeu vidéo, puis la relation entre jeu vidéo et cinéma avec Alexis Blanchet.

Alors, n'hésitez plus et bloquez votre week-end du 22, 23 et 24 mars ! Ça commence le vendredi soir, ça se termine le dimanche soir, et ça se passera dans les locaux d'e-artsup Lyon. Bien entendu, c'est gratuit ! Notez que les inscriptions ne sont pour l'instant ouvertes qu'aux membres de l'association, et ouvriront au public ce vendredi 22 février. Soyez prêts, l'annonce sera faite sur twitter, facebook, google+ et le blog de l'association : restez attentif vendredi prochain ! ;-)

Plus de détails sur le site de l'asso : La Game Dev Party : Jam #4 est lancée !

Revenu de base : Ciné-débat à Lyon le 25 janvier

Vendredi 25 janvier 2013 aura lieu à Lyon un ciné-débat autour du revenu de base. Il y sera diffusé une version écourtée du film Le revenu de base, une impulsion culturelle de Daniel Häni et Enno Schmidt, que vous pouvez par ailleurs voir en entier sur Youtube. La projection commence à 20h à la MJC Saint Just dans le 5e arrondissement de Lyon, et sera suivie d'un débat avec Baptiste Mylondo, auteur notamment du livre Un Revenu Pour Tous : Précis d'utopie réaliste. C'est une occasion en or pour découvrir ce qu'est le revenu de base, et pour profiter de la présence d'un économiste qui répondra à vos questions sur la faisabilité et la viabilité de ce projet.

Toutes les informations sont disponibles sur le site, et si vous ne connaissez pas le revenu de base, je vous invite à lire le texte Le revenu de base, utopie d’hier, révolution d’aujourd’hui, réalité de demain ? de Stanislas Jourdan.

Je ne suis pas encore sûr d'y être, mais je suis ravi de discuter de ce sujet ici, par email ou autour d'un verre !


Web Game Workshop: Creating a Game with Crafty.js

Earlier this month, I gave a workshop in Lyon to teach people how to create Web games with the now famous Crafty.js framework. 13 people attended (out of 15 open places), which appeared to be a good number: I could really help everyone and answer all the questions I received. It was a really good experience, but a short one sadly: we only had 2 hours (30 minutes being me talking about Crafty), and it's really short to be able to actually create a playable game. I think with an hour or two more some people could have had something playable.

Anyway, I created a bunch of content for that workshop, and I wanted to share it. So here it is!

Presenting Crafty.js

I spent the first 30 minutes of that workshop talking about Crafty.js, what it is, what it can do, and how it works. As usual, slides without the actual talk are not really good, but at least you will find some code examples and links to various resources in there. And who knows, maybe someone could make good use of these slides someday?

Creating Web Games with Crafty.js

Workshop: Coding a Web Game

My plan for the coding part was to come with 3 game ideas that people could work on, to provide some help (basic algorithms, some graphic resources) and to give them a working version in the end. That's what I did: I created a simple Snake game, a kind of Fruit Ninja and a Side Runner. After my presentation, I showed the 3 games I coded and asked people to pick one and start working on it. Most people picked the simplest one (some assuming it was the snake, when it was actually the Fruit Ninja clone in my opinion), and no one picked the Side Runner which was certainly harder and mostly impossible to do in less than 2 hours.

After an hour and a half of intense coding, documentation reading and some debugging (I had a few mistakes in my slides sadly), we had some snakes moving and some fruits falling!

I made a simple page with all the resources needed for this workshop:

The Crafty Workshop Awesome Page

There you can find:

  • links to the base template in github or as a zip file
  • short help with algorithms
  • graphics
  • and my own implementation of each game

I really enjoyed doing this, and I wish I can do it again someday! Thanks to everyone who attended and thanks to the Game Dev Party association for organizing this event.

Make Games, Not War /-)


Atelier GDP : Créer un jeu vidéo en 2 heures avec Crafty.js

La prochaine étape des événements Game Dev Party arrive, et j'ai l'honneur d'en être cette fois l'animateur. Ce vendredi 12 octobre 2012 donc, j'animerai un atelier sur la création de jeux vidéos Web. Cela se passera à l'Atelier des médias, à Lyon, à partir de 19h et pour une durée estimée de deux heures.

Au cours de cette soirée, vous découvrirez Crafty.js, un outil de création de jeux vidéos en JavaScript, son modèle Entité / Composant, ainsi que toutes les bonnes choses qu'il met à votre disposition. S’ensuivra un atelier dans lequel je vous proposerai de créer un jeu vidéo Web en utilisant Crafty.js, jQuery, et WebGameStub. À partir d'un code de base fourni et d'instructions, chaque personne ou groupe de personnes sera invité à travailler sur un sujet parmi trois proposés. Je fournirai bien entendu toute l'aide possible et répondrai à vos questions, qu'elles portent sur Crafty même ou sur la conception de jeux en général.

Cet atelier est ouvert à tous mais s'adresse principalement aux programmeurs. Une connaissance minimale du Web me parait nécessaire, ainsi que de savoir écrire du JavaScript. Je n'aurai pas le temps d'aider les gens sur des questions basiques de programmation, l'accent étant porté sur la découverte de Crafty.js en particulier.

Si tout cela vous a donné envie, n'attendez-plus, inscrivez-vous ! J'espère vous y voir nombreuses et nombreux. :)

En résumé :

Créez un jeu Web en 2h avec Crafty.js
À l'Atelier des médias - Inscriptions
Vendredi 12 Octobre 2012 à 19h00

Voir le billet sur le blog Game Dev Party


La Belle Verte

Sur Terre y a 4 mecs sur 5 qui crèvent de faim,
Y a ceux qui vivent dans les caves à cause des bombes,
Y a ceux qui pourrissent du cancer et du sida dans les hôpitaux,
Y a celles qui se font violer par 25 mecs en même temps pour bien leur faire comprendre c'est qui le patron,
Et y a toi.
Et toi il t'est arrivé une chose TERRIBLE, on a touché à ton RÉ-TRO-VISEUR !

Y a les arbres au dessus de toi, avec les feuilles qui bougent dans le vent,
Tu les as regardés les arbres ?
Y a ta femme qu'est belle et qui perd sa jeunesse à te cuisiner des champignons à la crème pendant que tu la cocufies,
Tu l'as regardée une seule fois ta femme ?
Y a des enfants avec leur belle peau toute lisse,
T'as remercié quelqu'un une fois dans ta vie pour la peau lisse de tes enfants ?
Y a les vaches qui te fabriquent du lait, du beurre, et du fromage tous les jours,

Mais elle est belle ta vie mon gros !
Elle est belle, belle, belle à crever,
Regarde-la mon gros !
Mais voilà, le problème c'est qu'on a touché à ton rétroviseur mon gros !

Vincent Lindon dans La Belle Verte, un conte philosophique de Coline Serreau que je vous invite vivement à regarder.


Game Dev Party 2 et Tunisie

Bonjour !

J'ai publié hier un billet en anglais présentant la Game Dev Party 2, son déroulement, mon expérience et mes impressions sur cet événement. J'espère qu'il vous donnera, à vous aussi, l'envie de créer des jeux avec les technologies du Web !

Lire le billet : Game Dev Party – Writing A Game For The Web In A Weekend

Game Dev Days

J'en profite également pour annoncer que je serai la semaine prochaine en Tunisie, pour animer des conférences et des ateliers autour des jeux vidéo et du Web (oui, je reste dans le thème :) ). Je serai à l'Institut Supérieur d'Informatique (ISI) de Tunis les mercredi 25 et jeudi 26 avril, et à Monastir le vendredi 27 avril ! Je vais y présenter les technologies du Web et leur utilisation dans le cadre de la programmation de jeux vidéo, et je vais animer des ateliers pour que les étudiants puissent mettre les mains dans le cambouis. J'espère revenir avec plein de choses fantastiques à montrer !

L'affiche de l'événement à Tunis

Vive le Web ! :-)


Retours à chaud sur la GameDevParty2

Yo !

Ce week-end à Lyon, c'était la GameDevParty2, l'occasion de développer un petit jeu Web en équipe de 5 à 7 personnes. Voila mes retours à chaud, comme ça, à peine 4 heures après la fin du temps de développement autorisé. Je ferai un blog post plus complet (avec des liens et tout) plus tard dans la semaine, en anglais a priori. En attendant, commençons par présenter ce que j'ai fait...

Super Bit Boy

Je ne suis pas venu avec mon propre projet comme je l'aurais voulu (pas eu le temps de bosser sur Fightly ces dernières semaines), et j'ai donc du faire un difficile choix d'équipe. J'ai finalement choisi de travailler avec deux amis et futur collègues, Paul et Nicolas, ainsi qu'avec Louis-Rémi (ancien stagiaire Mozilla, comme quoi... ) et Michaël que j'ai rencontré pour la première fois vendredi soir. Paul et Nicolas sont venus à la GameDev avec un projet et un début de moteur fonctionnel. L'idée d'origine était de coder une sorte de clone de Super Meat Boy en JS avec Canvas. C'est principalement le côté technique qui m'a attiré ici, puisqu'ils n'utilisent pas de framework ou de moteur existant. Je n'ai pas été déçu par ce point.

L'équipe s'est composée d'un sound designer (Paul), d'un graphiste (Michaël) et de trois développeurs et demi (Louis-Rémi, Nicolas et moi, Paul étant le dernier demi). Une bonne répartition, des gens talentueux, du brainstorming et 48 heures plus tard, nous avions un prototype de Super Bit Boy jouable et plutôt excitant. Dans sa forme actuelle, le gameplay consiste à parcourir un niveau en sautant de plateforme en plateforme. Le joueur a une couleur, ainsi que les plateformes : lorsque l'on touche une couleur qui n'est pas la notre, on a une demi seconde pour effectuer un saut afin de changer sa couleur en celle de la plateforme. Le jeu est donc très nerveux, à base de double sauts en permanence, de morts frustrantes mais de recommencement rapide. Ça incite à jouer, c'est dur mais marrant, bref je suis personnellement très content de ce que nous avons fait.

La dernière version jouable, celle qui a été présentée à la fin de la GameDevParty, est jouable en ligne : Super Bit Boy est à portée de clic ! Tout comme son code source !

Les autres projets

Si il y a une chose que je dois dire, c'est que j'ai été bluffé par la qualité des projets qui ont été présentés ! En terme de graphismes, tout était vraiment beau. Évidemment, rien n'était parfait, mais les prototypes étaient là et quasiment tous étaient jouable. Petit bémol pour une équipe qui a eu les yeux un peu plus gros que le ventre techniquement, mais je sais qu'ils ont pris du plaisir à participer et qu'ils feront mieux la prochaine fois !

Je vous invite à lire le blog de la GameDevParty, tous les projets y sont présentés avec la composition de l'équipe et quelques détails. Je souhaite juste féliciter la Z Team, l'équipe d'Aurélien (pour laquelle j'ai beaucoup hésité tant le concept me plaisait) qui a présenté à la fin un jeu excellent, avec à mon avis (mais je ne l'ai pas encore testé) une bonne profondeur stratégique et un niveau de finition plus qu'honorable pour quelque chose de développé en 24 heures à partir de rien. Bravo les gars !

Ambiance Game Dev

Ce week-end s'est magnifiquement bien déroulé. Je suis ravi d'y avoir participé, je suis ravi d'avoir vu tous ces gens se réunir autour d'une même passion et se donner à fond pendant plus de deux jours. Merci, merci, merci aux organisateurs, vous avez fait un très bon boulot, on n'a manqué de rien. Merci à l'atelier des médias pour la salle, merci au sponsor Novius pour les petits déjeuners. La GameDevParty2 est terminée, mais l'association GameDevParty vient tout juste de naître, et va en profiter pour organiser plein de petits événements autour du développement de jeux vidéo sur Lyon, en attendant la prochaine vraie GameDevParty !

En bref : je suis heureux, j'ai participé à la création d'un jeu que j'estime, j'ai vu de très bons jeux se créer, et le tout dans une super ambiance. Bravo à tous, et à la prochaine !


- page 1 of 13