Journal – Global Game Jam 2012 (Paris)

Même si nous avons adoré vous parler en priorité de la nouvelle Global Game Jam de Metz, cette édition 2012 a comme tous les ans fait aussi fureur à la capitale, grâce aux locaux de l‘Isart Digital. À l’intérieur se trouvaient évidemment bien plus de participants, des têtes connues, mais surtout, beaucoup de créativité. Notre reporter de l’extrême, Astrofra, nous raconte son week-end en tant que visiteur, mais aussi Jammeur

15h30, Vendredi 27 Janvier 2012

Arrivée à la GGJ, équipés de nos t-shirts et badges, nous attendons dans la cour de l’Isart Digital l’arrivée de tous les participants. Certains visages sont connus, dont un spécialiste de la team VRGeeks transportant un cube entier de capteurs, casques et autre accéléromètres.

Une population de jammers pour l’instant en majorité masculine… Encore un peu de chemin à faire pour atteindre la parité ! En attendant, je peaufine mon mini framework sous GameStart (routines de changement d’écran, lecture du Paddle XBox …)

17h

Lancement officiel de la GGJParis.

Olivier Lejade, fondateur du studio MekenSleep, présente l’évènement et son déroulement, avant de passer la parole à Swing Swing Submarine, deux developpeurs Montpellierains, auteurs reconnus de Blocks That Matter(XBLA, STEAM).  Ils ont déja participé aux précédents Jams, et ils nous rappellent que si l’activité de développeur indie autorise parfois une plus grande liberté de création, elle n’est pas le chemin le plus rapide vers l’indépendance financière.

L’heure de la keynote vidéo arrive, aux accents internationaux. Gonzalo Frasca (PowerfulRobot), Brenda Garno (Jagged Alliance), John Romero (Doom), Will Wright (SimCity), Tomohisa Kuramitsu (Baiyon.com) se relaient autour d’anecdotes sensibles et touchantes sur leurs expériences respectives. Romero & Garno évoquent leur collaboration sur un plan humain, Frasca parle du lien puissant entre empathie et relation de travail et de l’importance de s’améliorer à chaque competition, Wright expose sa méthodologie sur fond de fourmis baladeuses et Kuramitsu nous étonne par ses pratiques de DJ Scratching à base de cartouches vidéos 8bits.

À la fin de cette keynote, riche en enseignements sages et précieux, Olivier Lejade annonce le thème : il ne s’agit pas d’un mot, mais d’une image… Un serpent qui se mord la queue, dans un mouvement cyclique et circulaire, l’Ouroboros, pour les plus lettrés d’entre nous.

Top chrono! Nous avons 30 minutes pour plancher sur un concept, que chacun devra développer et exposer devant les autres en 30 secondes. Stress garanti, doublé de la difficulté d’aller à l’essentiel en si peu de temps. Je n’aurais personnellement pas le temps d’exposer la totalité de mon concept, pourtant beaucoup plus simple que la majorité des idées folles venus de mes co-jammers.

Parmi les idées qui ont retenu mon attention, dont certaines sont géniales d’originalités ou hilarantes, Alexis Moroz, game designer expérimenté que j’avais eu l’occasion de voir en action lors de la GGJ2011 proposera un concept qui ne sera, hélas, pas développé. Mais la fin de la GGJ2012 Paris me montrera à quel point il est peut être fulgurant et efficace !

18h (plus ou moins)

La session de recrutement est lancée. Chacun parcourt l’Isart, une pizza à la main (catering parfait, comme d’habitude avec Isart Digital) et son concept de jeu dans l’autre, à la recherche de collaborateurs.

Des équipes de 2 ou 3 (!) codeurs cherchent ardemment des graphistes, et à l’opposé, des game designers & artistes font tout pour amener un codeur à travailler sur leur projet.

De mon côté, je décide de faire équipe avec Florian Belmonte, illustrateur & animateur 2D originaire de la même ville que moi, mais avec qui je n’ai jamais travaillé. Il est OK pour développer mon concept de jeu. La prise de risque est relativement réduite, à dessein : c’est mon premier GGJ en temps que codeur et je n’ai pas envie de faire sombrer le navire!

Il ne nous reste qu’à trouver un sound designer, tâche qui se révélera plus complexe que prévu, Olivier Lejade ayant prévu d’en intégrer un nombre limités dans les effectifs de Jammers. Finalement, Eddy accepte volontiers de nous rejoindre, sachant qu’il aura l’opportunité de travailler sur 1 ou 2 autres projets en parallèle. La Global Gam Jam c’est aussi ça : se lancer dans 48h de pur rush avec de parfaits inconnus !

Au bout de quelques heures, comme l’avait annoncé Olivier, les équipes sont formées. Retour à l’auditorium, et chaque équipe présente les projets qui ont été collectivement retenus. Pas moins de 21 jeux sont en gestation, un record pour l’Isart & la GGJ Paris.

22h

La petite équipe est donc constituée ! Un graphiste 2d, un sound designer et un codeur vont travailler d’arrache-pied sur “Jurasnake Park”. Nous déballons nos affaires, chacun s’installe, connecte son ordinateur au réseau local de l’Isart et commence à fourbir ses armes.

Notre concept de jeu est le suivant : Une jeep roule à toute vitesse sur le dos d’un serpent sans fin, et doit éviter en sautant, la gueule du serpent. Le premier joueur contrôle la jeep et les sauts, le deuxième joueur contrôle un canon à eau qui devra arroser le serpent pour le rendre inoffensif. Nous espérons ainsi remplir un des achievements proposés par le GGJ2012 : Un joueur hardcore & un joueur casual font équipe.

S’agissant d’un concept relativement simple et notre équipe étant réduite, les discussions sur le game design sont assez courtes. Nous dressons avec Florian une premier liste des assets 2D qu’il devra produire ainsi qu’un niveau de qualité initial. Il est en effet inutile d’obtenir un rendu soigné alors que la dimension et les proportions des éléments de jeu peut encore évoluer.

De son côté Eddy prépare une liste de sons strictement nécessaires pour ce type de jeu : bruit de moteur, saut, ambiance de jungle.

Le principe de la GGJ étant d’ouvrir les projets, je décide, par opportunisme technique, d’ouvrir un Google Code Project. Il me servira de serveur de backup et de SVN, outil dont j’ai du mal à me passer lorsque j’écris du code.

Notre objectif, vers 22h, est d’obtenir un exécutable fonctionnel avant le petit matin. Florian et moi avons aussi la forte intention de dormir suffisament lors de cette première nuit, afin de garder un maximum de lucidité et de capacité de travail pour la fin des 48 heures.

2h du matin, Samedi 28 Janvier 2012

Au bout de 4h de graphe, de sound design et de code, nous avons un prototype qui fonctionne !

Le serpent tourne indéfiniment, la jeep évolue sur son dos, saute et percute sa gueule (pour l’instant fermée).

J’ai le temps de faire une capture vidéo et d’uploader le résultat de l’itération #0 (un codeur compte souvent à partir de zéro, coquêterie ou snobisme ?). Hourra ! Nous pouvons partir nous reposer!

Notre prototype, première itération.

8h30, Samedi 28 Janvier 2012

Retour dans les locaux de l’Isart Digital. Sur place, nous retrouvons la team “WTFs” (Welcome To the Freak Show). Ils ont passé une quasi nuit blanche sur leur projet, dont le prototype, s’il s’avère visuellement peu élaboré, présente déjâ un gameplay intéressant.

En rallumant ma machine, je retrouve le prototype de la veille et j’envisage rapidement la liste des priorités auxquelles j’ai pensé pendant ma (courte) nuit :

– Poser un éclairage qui mette en valeur le travail de Florian et nos choix de mise en scene

– Implémenter le paddle Xbox pour commencer à tester réellement le gameplay

– Implémenter un score et un nombre de vies limité, éléments de motivation du joueur assez conventionnels mais qui m’apparaissent essentiels.

Une fois cette mécanique de jeu mise en place, je peux alors ajouter les écrans de Game Over, ainsi que les bruitages et musiques préparés par Eddy qui semble avoir passé une nuit blanche en compagnie des WTFs. Nous avons ainsi une boucle de gameplay complète : Écran de titre, de jeu, et de game over.

Entre temps, Olivier Lejade fait le tour des projets, teste les premiers prototypes, conseille les équipes. Après avoir testé notre embryon de jeu, sa question tombe, rapide et concise : “C’est quoi le challenge ?”. Nous évoquons de vagues pistes pour développer le gameplay et il nous conseille alors de prendre des décisions en terme de game design.

Notre prototype, deuxième itération, en milieu de journée.

Si j’ai décidé dès le début de la Game Jam de ne pas intégrer de Game Designer dans l’équipe, c’est surtout par crainte de ne pouvoir gérer de front les idées du designer et les assets du graphiste. Je sais que l’an prochain, si je reviens au GGJ, je devrai m’améliorer sur ce point!

En me replongeant dans mon document initial de game design, j’entends l’équipe d’Alexis derrière nous, complètement “overclockés”, aborder avec Olivier Lejade les mécanismes de leur jeu : SnakeDemocracy. Poursuivant l’achievement “Plus de 1024 joueurs simultanement”, ils ont entrepris de faire du classique jeu Snake le terrain d’un enjeu électoral. Les joueurs peuvent se connecter sur le serveur de SnakeDemocracy, voter pour diriger le serpents, à droite, à gauche ou en ligne droite. Par twitter, des militants peuvent participer à chaque campagne, en ajoutant des pommes (!) sur la grille de jeu. En 48h, je considère cela comme un exploit en game design et en code !

14h, Samedi 28 Janvier 2012

L’après midi sera intense. Florian prépare des sprites de bonus et j’attaque l’implémentation d’un système de spawn des bonus et de pièges, chose que je n’avais pas du tout anticipé dès le départ.

En fin d’après midi, le joueur est capable de rouler, sauter par dessus le serpent, tirer dessus avec le canon à eau et attraper des bonus pour réparer la jeep..

Avec un compteur de vie et un score l’ensemble commence à ressembler à un jeu, et les autres Jammers qui ont la gentillesse de tester le proto me pressent de questions : “Et toi, tu fais quel score ?”

Au bout du troisième testeur qui me demande la même chose, je réalise que :

– je suis un piètre joueur, étant incapable de répondre à la question

– je dois implémenter un hiscore, avec si possible une sauvegarde

En fin de journée, les bonus sont fonctionnels, le hiscore s’affiche et les éléments de décor conçus par Florian sont quasiment tous en place et la tête du serpent est animée.

Afin d’ajouter une nuance au challenge, nous décidons de deux fins alternatives :

– Si le joueur entre en collision avec la tête fermée du serpent, la partie se terminera car la jeep est endommagée. Une image de game over représentera la jeep en mille morceaux.

– Si le joueur précipite la jeep dans la gueule ouverte du serpent, la partie s’arrête directement car la jeep a été avalé. Florian a dessiné un écran de fin qui est rappelles les mésaventures de Jonas dans le ventre de la baleine.

22h, Samedi 28 Janvier

Après plusieurs heures de tentative acharnée pour détecter correctement la collision entre la jeep et la gueule béante du serpent je décide de commenter toute cette partie du code source.

Les collisions physiques ne me renvoient pas précisément cet évènement, et l’utilisation de triggers se révèle également vaine.

Plutôt que de risquer de nous épuiser sur cette idée, nous décidons d’utiliser les deux écrans de fin de façon aléatoire. Le jeu fonctionne, bien que particulièrement mal équilibré. Le prototype est cependant bien avancé, il est temps de prendre une deuxième nuit de repos.

8h30, Dimanche 28 Janvier 2012

De retour sur mon code, après une nuit en partie occupée à réfléchir aux dernières priorités, j’ajoute un dernier élément de challenge, dessiné par Florian : des indigènes portant des masques.

Là encore, apres 1 heure d’implémentations diverses, je ne parviens pas à tester les collisions “canon à eau / indigènes”. Nous prenons donc une nouvelle fois la décision d’abandonner une feature.

Je prends juste le temps de faire une capture vidéo de la quasi-derniere itération du jeu, pour inscrire le jeu sur le site de la Global Game Jam.

M’étant fixé une deadline vers 11 heures pour avoir une version testable, je m’occupe des derniers ajustements de game design : de nouveaux obstacles pour augmenter la diversité du jeu et les derniers bruitages produits par Eddy, ainsi que des elements cosmétiques autour de la GUI.

L’aléatoire des pieges et des bonus reste assez rigide, car j’ai atteint la limite de ce que pouvait générer mon code de spawning. C’est également un point que je dois améliorer lors de mon prochain Jam.

12h

Stress de dernière seconde : les bonus, qui fonctionnaient pourtant il y’a une heure, restent inertes quand le joueur les attrape. J’ai probablement cassé quelquechose dans mon code, ce qui arrive parfois lorsque l’on programme, et encore plus dans l’urgence.

Pendant que je me met à traquer ce bug de dernière minute, Florian descend chercher des Sandwichs & Wraps, proposés par le staff de l’Isart. Une fois encore, SVN va me sauver la vie : je lui demande de me donner la liste des modifications apportées au code source dans la dernière heure. En quelques secondes, une ligne que j’avais supprimé attire mon attention : les bonus ne sont plus correctement initialisés. Je rétablis la ligne de code en question. Ouf, tout fonctionne à nouveau !

En discutant avec un autre Jammer, étudiant à l’Isart, qui me regarde tester le jeu une dernière fois, j’ajoute dans l’urgence un énorme “Game Over” sur les illustrations de fin produites par Florian :  “Tu devrais rajouter un ‘Game Over’, par convention” … Il existe donc des conventions dans le jeu vidéo ? De même qu’au théâtre ou dans le cinéma ? Je réalise un peu plus ce que c’est que d’apprendre le jeu vidéo dans une école :)

13h

La deadline officielle de bouclage des projets se rapproche, mais nous voulons rendre le jeu accessible aux autres Jammers le plus tôt possible. Il nous reste 2 bonnes heures pour corriger les derniers problèmes de jouabilité, mais je préfère releaser le jeu tel quel, d’autant que mes doigts commencent à être engourdis.Dans les heures qui vont suivre, de nombreux Jammers ainsi que des journalistes venus couvrir la GGJ vont se relayer sur Jurasnake Park. L’un d’eux parviendra à exploser un high score qui reste invaincu à ce jour.

Un de nos voisins Jammers me fait remarquer que le jeu est tout de même un peu hardcore, et que la difficulté mériterait d’être ajustée. Lorsque je lui explique que j’ai voulu boucler la release le plus tôt possible pour que tout le monde puisse tester le jeu il me répond : “Ah ? Alors tu as sauté la phase de play-test ?”

Releaser un jeu en évitant la phase de test pour profiter d’une fenêtre de lancement favorable ? Ce schéma me semble soudain étonnement familier …

14h

Pendant que Jurasnake Park torture les joueurs qui s’y essayent, je décide de faire le tour des projets finalisés par nos collegues Jammers. Au bout de quelques minutes, je suis sous le choc : le niveau est vraiment très haut, en particulier par rapport à l’année précédente.Certains concepts sont vraiment originaux :

SnakeDemocracy, bien sur, qui offre une relecture d’un standard du jeu vidéo avec les possibilités des réseaux sociaux et un angle politique totalement d’actualité.

Quetzacoatl, métaphore écologico-mystique utilisant une platine “virtual Dj” totalement détournée. L’équipe à l’origine de ce projet a miraculeusement pu livrer un proto efficace, après 30heures d’âpre combat contre un périphérique récalcitrant qui refusait d’envoyer des valeurs exploitables.

The Loop, d’une beauté et d’une finition surprenante, dans la continuité de jeux comme ‘Flow’.

Reverse of Babylon, prototype d’un qualité équivalente à un jeu XBLA, propose au joueur d’explorer le labyrinthe Babylonien, dans un parcours recto verso à moitié plongé dans le brouillard. L’équipe à l’origine de ce projet nous avoue avoir changé de technologie au début du Game Jam, l’exploit n’en est que plus grand.

Miop, réalisé en WebGL + Javascript, mélange des algo de flocking avec un graphisme très pur et parfaitement maîtrisé. L’écriture de Chen, la graphiste 2D, est retranscrite avec sensibilité par le graphiste 3D qui s’occupe de la transposition, et le tout est admirablement mis en scene par les deux développeurs qui sont parvenu à implementer un renderer 3D et Intelligence Artificielle avec des outils avant-gardistes.

InSnaketion, un des projets VR qui a séduite tout le monde par son niveau de finition! Voir une équipe aussi nombreuse (8 jammers) constitue pour moi une source d’étonnement permanent, quand à leur capacité à se coordonner sur une durée aussi courte!

Le rendez-vous final dans l’auditorium sera l’occasion pour les équipes de Jammers de faire le point sur leurs expériences, réussites et/ou échecs respectifs. Certains ont souffert plus que d’autre, pour des raisons techniques (moteur C++ qui ne compile pas écrasement de fichier source) ou humaines (game design 10 fois trop ambitieux…). Si j’ai pu participer, par le passé à des évenements semblables (démoparties, Jams Tigsource), l’organisation du Global Gam Jam le rend totalement unique.

La définition qui me semble la mieux correspondre est celle-ci : “Le cycle de vie d’un jeu vidéo, depuis la conception jusqu’à la livraison aux joueurs, en passant par la promotion du concept et sa réalisation, ramassés sur 48 heures.” C’est un peu comme vivre une ou deux années en accéleré, avec toute l’intensité et la passion que peuvent apporter la création d’un jeu vidéo.

Bravo à tous les Jammers de la GGJ Paris 2012, à Anne-Laure, directrice de Com’ de l’Isart Digital pour une organisation et une logistique parfaite, et Olivier qui nous a annoncé qu’il passait la main aux Swing Swing Submarines pour la direction du Jam de l’an prochain ! Pour finir, n’hésitez pas à découvrir la liste des 22 jeux créés à Paris en ce week-end passionnant. À l’année prochaine ?

11 pensées sur “Journal – Global Game Jam 2012 (Paris)

  • 03/02/2012 à 20:07
    Permalink

    Article très intéressant. Il y a néanmoins deux liens déficients : celui de la première image et celui de la deuxième vidéo.

    Répondre
  • 03/02/2012 à 22:06
    Permalink

    Sinon, c’est quoi ces histoires d'”achievement” en fait ?

    Répondre
  • 03/02/2012 à 22:25
    Permalink

    Les Achievements (ou “diversificateurs”) de la GGJ sont des contraintes optionnelles que les Jammers ont la possibilité de choisir, en plus du theme principal qui est, lui, obligatoire.
    Aucun jeu lors de la GGJ n’est tenu de les remplir, mais ils permetent aux Jammers les plus experimentés d’ajouter une dimension créative supplementaire à l’épreuve :)

    10 achievements sont proposés chaque année, mais il est conseillé de ne pas en prendre plus de quatre.
    Cette années, parmis les achievements, on pouvait trouver :

    1D : faire un gameplay en 1 dimension
    Eyes Wide Shut : réaliser un jeu sans aucun graphisme (ex : tout avec l’audio et le retour haptique)
    Kiloplayer : plus de 1024 joueurs simultanément
    I know what you did last… : Les actions du joueurs s’inscrivent dans le level, le modifient, et persistent lors de la partie suivante.

    Etc etc :)

    http://globalgamejam.org/wiki/achievements-diversifiers

    Répondre
  • 03/02/2012 à 23:10
    Permalink

    Super résumé, bien écrit et détaillé :)
    Ca permettra de se replonger dans cet agréable week-end en attendant l’an prochain.
    Merci !

    Répondre
  • 04/02/2012 à 08:56
    Permalink

    @William, merci! Pour le détailler ainsi j’ai utilisé mon log SVN, afin de retrouver la chronologie précise sur 48h :]

    J’en profite pour paster ici ton post-mortem sur le game design de “Reverse of Babylon” : http://bit.ly/yritjr
    A LIRE ABSOLUMENT.

    Répondre
  • 05/02/2012 à 21:25
    Permalink

    Beau boulot pour ce 2e reportage!
    Au final, mon jeu préféré c’est Quetzalcoatl: simple mais malin, bref ça mériterait d’être davantage développé (surtout que graphiquement ces serpents cosmiques ont de la gueule).

    Répondre
  • 08/02/2012 à 00:24
    Permalink

    Très bon reportage. c’est étrange de relire tout ca.en tout cas votre jeu est bien sympa et hardcore…WTFs, vous n’avez pas fait de play-test les voisins ou quoi ;-)
    A l’année prochaine.

    Répondre

Laisser un commentaire