GGJ – Postmortem + Kawaii Maximum Overkill

Le WE dernier a eu lieu la Global Game Jam 2010. Je vous en ai assez parlé dans mes derniers billets, je ne reviens donc pas sur le principe de l’événement.

Kawaii Maximum Overkill
Kawaii Maximum Overkill

Vendredi

Après avoir rapidement fait connaissance autour d’une partie d’initiation de Loups-garous nous avons eu droit à une mini-keynote de Fabien Delpiano du studio Pastagames. Parfait pour échauffer les esprits. Je retrouve Celibatman (Axel) et croise Nemo de Swing Swing Submarine.

A 17h commence officiellement la GGJ. On se fait briefer par Olivier LeJade et on regarde la vidéo de présentation de la GGJ 2010. Sans être mauvaise elle est moins pêchue et plus prétentieuse que celle de l’année dernière par Kyle Gabler de 2dboy.

[youtube]http://www.youtube.com/watch?v=cm4mgMTTN4Q[/youtube]

Le thème général à ensuite été dévoilé : « Deception » (en anglais !). Le sous-thème ajouté par Olivier Lejade pour Paris est « Seduction« . On a 30 minutes pour travailler en solo (ou en mini-groupe) sur une idée de jeu qu’on présente ensuite à tous.

Swing Swing Submarine présente son idée lol de jeu AAA
Swing Swing Submarine présente l'une de ses 2 idées
Nous sommes beaux, aimez nous
Nous sommes beaux, aimez nous

Avec Axel on propose une idée de jeu encore un peu floue où le joueur est un grand méchant qui doit tuer des bestioles « trop-trop-mignones ».  L’idée tournait autour des 4 éléments de gameplay suivants :

  • Le joueur n’a pas d’arme directe, il doit utiliser des pièges (naturels ou qu’il place lui-même)
  • Les bestioles ont une AI simplisme (genre Lemmings), agissent en groupe et peuvent être « excitées » (rien de sexchuelle…)
  • Le joueur peut attirer les bestioles dans des pièges par un appât ou par sa seule présence à la vue des bestioles
  • Le joueur est pénalisée (mort ?) lorsque trop de bestioles sont autour de lui

Bref, notre projet n’était pas encore très clair et on attendait d’en discuter avec d’autres personnes.

Une fois les projets présentés on a eu une bonne heure pour papoter ensemble et essayer de former des groupes autour des idées qui plaisent le plus. A ce moment là on a failli fusionner avec un groupe qui avait une idée similaire à la notre (à première vue). Après une longue discussion on a finalement formé 2 groupes distincts. Eux sont partis avec 4 développeurs et 2 graphistes sur un projet 2D en Java (Give me your skin), nous nous serons finalement quatre :

On s’organise et on distribue les rôles. Je suis le seul développeur ce qui m’arrange bien car je peux facilement imposer aux autres de faire notre jeu sur le Unity 3D. Niark niark niark. D’ailleurs j’aurais bien été incapable de le faire autrement… Fréd sera le Game Designer, il va pouvoir se tourner les pouces pendant qu’on bosse. Vu que le projet est orienté 3D (et que ca m’arrange bien là aussi) c’est Kévin qui va se charger de la production des assets graphiques. Ce qui fait ruminer Axel (à juste titre, désolé) qui se retrouve pour seule perspective de travailler la partie Audio et une partie des éléments 2D.

Léquipe au complet : Kévin, Moi, Fréd, Axel
L'équipe au complet : Kévin, Moi, Fréd, Axel (à fond)

Je passe une bonne partie de la nuit a travailler sur un premier prototype. Le Protopack de Christophe me sera sacrément utile. Kévin et Axel tentent de se mettre au diapason sur l’univers graphique du jeu. Fréd joue avec le Unity 3D, trouve pleins d’idées de gameplay et liste les assets dont on aura besoin.

Samedi

Je galère pour terminer mon premier prototype. Il y’a trop d’éléments de gameplay à mettre en place, je panique un peu car si on continue on arrivera à rien d’intéressant dimanche. On décide de resserrer le projet : exit le système d’appât, exit le flocking des bestioles, exit les pièges… On arrive à quelque chose de plus simple mais de beaucoup plus réaliste pour un petit groupe comme le notre. Ce sera certainement la meilleure decision que l’on aura prise !

Après avoir travaillé un premier jeu de textures, Axel s’isole pour bosser sur la musique et les sons (à la bouche). Le résultat est super encourageant !

Kévin a attaqué les 3 principaux éléments 3D du jeu : le méchant, les bestioles et le déguisement du méchant qui lui servira à attirer les bestioles dans son BBQ géant. Les animations nous posent quelques problèmes car j’ai un peu de mal à les importer dans le Unity 3D. Finalement je retrouve l’astuce qui consiste à placer les personnages animés dans un Game Object vide pour que les animations soient jouées correctement. Ouf.

Fréd continue de s’extasier devant le Unity 3D, il se charge du Level Design dans celui-ci. C’est là où l’on tombe sur un des soucis qui nous prendra le plus de temps à résoudre : on se mélange beaucoup les pinceaux lorsque Fréd me donne ses niveaux réalisés dans le Unity. En fait le Unity 3D considère les terrains comme des éléments bien particuliers, à tel point qu’on a pas trouvé une façon simple pour les dupliquer correctement ! A chaque fois que l’on s’échangeaient nos projets les terrains étaient corrompus… Frustation. Finalement on a mis au point un process pour créer les niveaux, on aura perdu quelques heures et Fréd aura refait au moins 3 fois chaque niveau. Néanmoins on peut voir le bon côté des choses en se disant que ca a été formateur pour nous deux. Haha.

Une partie des équipes
Une partie des équipes

Si pour moi le développement du jeu a été plutôt fluide j’ai été bloqué à deux reprises : une première fois pour la gestion de la caméra et une seconde fois pour le déplacement du joueur. A chaque fois je bloquais en bonne partie pour des histoires des calculs en 3D. Moralité : si vous voulez être développeur de JV, bossez vos maths bande de feignasses !

J’ai tellement galéré sur les déplacement du joueur qu’au bout de 3 ou 4 heures j’ai contourné l’obstacle : j’avais un personnage qui se déplaçait sur la map correctement mais sans se tourner, il regardait toujours la même direction et straffait sur les côtés au lieu de s’orienter à droite et à gauche… Impossible d’orienter se fichu personnage correctement ! Finalement j’ai demandé à Kévin de me faire 4 animations de marche, une pour chaque direction dans laquelle peut aller le personnage (haut, bas, gauche droite). Il me suffit de jouer l’animation qui correspond à la direction que le joueur prend, la rotation qu’on voit entre l’animation « marche vers la droite » et « marche vers le haut » (par exemple) est un simple blending. Vous me suivez ? Non  ? C’est pas grave, l’important c’est que ca marche plutôt bien et que j’ai pu passer à autre chose. Si vous êtes attentifs lorsque vous jouez au jeu vous verrez certainement qu’il y’a quelque chose de bizarre dans les déplacement du joueur, vous saurez maintenant pourquoi.

Dimanche

Après quelques heures à me tourner les pouces je me décide enfin à attaquer la dernière ligne droite : le GUI, l’intérface du Menu et la corrections des quelques derniers bugs qui traînent.

Kévin prépare les éléments 2D, Fred et Axel mettent à coup de jeune aux textures puis aux 3 niveaux du jeu.

Une heure avant la deadline le stress commence à monter, il me reste pas mal de choses à mettre au carré pour avoir un release propre. Fred, comme tout bon Game Designer, tente de me mettre des bâtons dans les roues en proposant de rajouter une douzaines d’éléments de gameplay à la dernière minute…

Craquage complet lorsque l’on se souvient que l’on doit insérer l’un des 3 éléments suivants dans notre jeu : un singe, un âne ou une clé. Axel sort son stylo et nous propose d’insérer cette énigme dans le jeu :

Un âne, un singe, une clé. Moulte possibilités.

Je suis malheureusement le seul à trouver l’idée formidable (d’ailleurs TOUT ce que fait Axel tient du génie. Point.)

Axel retourne dans sa cave faire des bruits avec sa bouche. Sons que je n’aurais malheureusement pas le temps d’insérer ingame.

15h. C’est la deadline ! On doit absolument uploader nos projets sur le site de la GGJ et commencer à ranger nos affaires. Fred fait semblant d’uploader notre jeu pour me laisser 5 minutes supplémentaires afin de corriger un dernier bug et produire les exécutables. Discrétos, ca passe.

On décompresse enfin. Quelques minutes plus tard on présente nos projets aux autres groupes. Première bonne surprise : tous les projets on été menés à terme ! Deuxième bonne surprise : sans être révolutionnaires tous les jeux tiennent la route.

Les beaux gosses présentent leur jeu
Les beaux gosses présentent leur jeu
Beau
Beau
Give me your skin ma impressionné pour plein de raisons...
Give me your skin m'a impressionné pour plein de raisons... principalement parce que je ne pensais pas qu'ils arriveraient à faire un jeu en 48h avec 4 développeurs. Bravo !

Je copie/colle le résumé d’Olivier LeJade :

Princess Kun Kun Pecho Pecho
A horny tiny prince in his tighty whities (don’t ask why…) wants to kiss all the princesses.But he must do so in the back of the other jealous princesses or they will turn into furious little donkeys and trample him!

.

.

^V>< : You are a “space peasant” hidden among space princes trying to seduce the Monkey Princess. But you don’t know the right choreography for the love dance and need to guess it from watching the other princes dance. Watch for their mistakes and be the last space monkey standing!

.

.

.

Parisian Moon Sheep : Up to four players race to the top of a stylized Paris to conquer the love of their She-sheep (moutonesse in french).

.

.

.

Give Me Your Skin : A Ninja Princess seduces an army of ninja creatures (including monkey & donkeys of course) and steals their skin to make her way up to her prince’s throne room.

.

.

.

.
ShiFuNanny’s Sausage : An old hag trying to take her donkey to the slaughterhouse. The donkey trying to reverse the situation. Use a sort of reflex ShiFuMi to decide the outcome…

.

.

.
Meet Me at the Banana Disco : How to pick-up in a noisy environment. Get as many phone numbers as you can… and find out who exactly you’ve hit on! A great demonstration of how to create very diverse moods with little effort (but a lot of creativity).

.

.

.
Kawaii Maximum Overkill : You’re the Devil. You hate the cute, fluffy, Kawaiis. Disguise yourself as one of their own to better seduce them and bring them in your deadly trap.

.

.

.

Notre jeu, Kawaii Maximum Overkill, est disponible sur Mac et PC sur le site de la GGJ. Vous pouvez aussi y jouer dans votre navigateur à cette adresse si vous avez le webplayer Unity.

Pitch: Let’s give a hand to the Devil to trap and burn the poor unbearable Kawaii.
Disguise in a giant Kawaii, go through each stage to collect all kawaii and bring them to your personal BBQ.
Be careful, do not let them kill themselves on the road and take care not to be contamined by their love and joy.
Don’t leave any behind.

.

Et voilà, il est 17h, tout s’est bien passé, on peut être fier de nous. Je file Gare de Lyon, je me pose dans le TGV et là dernière révélation de la GGJ : deux nuits blanches d’affilées ca passe tout seul avec un peu d’adrénaline et de café, mais une fois l’adrenaline redéscen… rOOOOoooonnnnnnffff… roooooOOOOnnnnnffffffuuu…

Merci à Netsabes qui a réussit à faire exploser le compteur de notre projet sur le site GGJ. On a atteint 6800 vues alors que la moyenne tourne plutôt autour de 200 vues. Ca nous avance pas à grand chose mais ca fait plaisir de voir que plus de 2 personnes aurront vues notre travail !

Parmi les 800 projets (!!) de cette année il y’a certainement quelques perles, malheureusement il est bien difficile de les débusquer, noyées dans la masse. En voilà tout de même un qui a été débusqué par RPS : [youtube]http://www.youtube.com/watch?v=QYPwYfbi8jA[/youtube]

On a eu une tripatouillée de journalistes qui sont passés nous voir : GameKult, Jeuxvideo.com, Nolife, LevelFive, Joystick…Le reportage de Nolife passera ce soir (mardi) à 19h dans 100% , il sera suivi d’une interview de l’équipe de Swing Swing Submarine.

[youtube]http://www.youtube.com/watch?v=nsocrnzxOLQ[/youtube]

Quelques liens pour finir :

Just a Button [iPhone – Free] dispo !

Juste au moment où je rentre de vacances Apple valide le petit jeu dont je parlais la dernière fois.

Vous pouvez donc télécharger Just a Button gratuitement sur l’App Store.

Petit rappel, c’est plus un exercice de style qu’un vrai jeu : j’ai essayé de trouver différentes façon de jouer à plusieurs avec comme seul élément d’interaction un bouton. Le jeu a été fait en seulement 7 jours pour le Experimental Gameplay Project. Ne vous attendez pas au jeu du siècle hein !

Le design du bouton a été réalisé avec brio par notre QQQ préféré !

Voilà une vidéo d’une ancienne version :

[youtube]http://www.youtube.com/watch?v=OF0_dxsIZ48[/youtube]

Locomotion System

Vu que mes aventures ne vous intéressent plus on va parler de celles des autres ! Ha !

Quand des personnes douées utilisent un moteur performant pour créer des systèmes « innovant »… ca donne ca :

The Locomotion System, which is free to use with Unity projects, was Johanesen’s Masters thesis; he now works for Unity Technologies. The system « solves the complex tasks of blending multiple walk and run cycles and perform dynamic foot placement on uneven terrain while keeping animators and game programmers firmly in control of style and behavior. »

[youtube]http://www.youtube.com/watch?v=v2q5kuic6HA[/youtube]

Version « HD » sur la page YouTube

Le code source est dispo gratuitement pour le Unity Game Engine.

Projet iPhone #1 – Day 3

Mardi j’ai passé pas mal de temps à essayer de comprendre comment optimiser correctement un jeu Unity pour l’iPhone.

  • Par défault le Unity tourne à 60fps sur l’iPhone et à tendance a se synchroniser avec le taux de rafraîchissement du LCD (16ms). On saute donc très vite par paliers : 60fps, 30fps, 20fps, 15fps…
  • Contrairement à ce qu’on pourrait penser la première limitation sur laquelle on bute n’est pas le nombre de polygones affichés mais le nombre de Draw Calls. Un objet avec un Material (texture) prend 1 draw call pour être affiché, une source lumineuse double les DC des objets qu’elle illumine… ca monte donc très vite.
  • L’iPhone tient bien la charge jusqu’à 22-26 DC. Après les fps s’effondrent très rapidement à 30 voir 20.
  • On peut grouper les objets semblables (et proche) pour limiter les DC, et cela soit dans 3DS soit via un script dans le Unity qui va combiner ces objets et leurs DC. Cette dernière solution n’est envisageable que pour des objets qui n’ont aucune action indépendante (mouvement, changement d’état…)
  • Une Skybox classique prends déjà 6 DC ! (1 par face)

Il faut donc être efficace et malin pour avoir un jeu qui tourne correctement !

Hier soir j’ai bataillé (dur) pour intégrer le premier modèle animé de Christophe et lancer les animations au bon moment (spawn, idle, delete). Avec ces 12 petits objets animés je reste à 30 fps.

[youtube]http://www.youtube.com/watch?v=tZGv5WH0UDo[/youtube]

Version « HD » dispo sur la page youtube.

Projet iPhone #1 – Day 2

2 petites heures de boulot hier soir après avoir passé la soirée chez Christophe à débuger Penguins Arena.

Les « bombes » sont placées aléatoirement sur la surface de jeu (modulable à souhait dans l’éditeur du Unity). Je fais en sorte qu’elle ne soient pas trop près les unes des autres.

[youtube]http://www.youtube.com/watch?v=swLPJ9Lw4Ao[/youtube]

Notez mes progrès pour filmer mon iPod Touch. Version « HD » dispo sur la page youtube.

Projet iPhone #1 – Day 1

On a le Unity depuis un peu moins d’une semaine. J’ai pris le temps qu’il fallait pour ingurgiter l’ensemble des vidéos/tutorials/docs sur lesquels je suis tombé… il faut bien compter 3 jours à temps plein pour y arriver.

Dactyl

Aujourd’hui j’ai commencé à prototyper le premier jeu que l’on veux faire avec Christophe : un clone de Dactyl (lien iTunes), un wak-a-mole simple mais efficace.

Le plus dur lorsque l’on commence à travailler avec un nouveau moteur c’est de ce lancer dans un nouveau projet en partant de zéro. On ne sait jamais par quoi commencer !

Finalement la meilleure chose à faire dans ce cas là c’est d’y aller avec ses grosse bottes, tel un warrior.

olol

Bref après 6-7 heures de boulot j’ai enfin quelque chose qui tourne sur mon iPod et qui réagit quand on le titille.

[youtube width= »480″ height= »395″]http://www.youtube.com/watch?v=4f_rCGqtLgA[/youtube]

Oui, faut que j’apprenne à utiliser mon appareil photo en mode vidéo.

Noël & Unity Engine

C’est (était) Noël, Penguins Arena est à 6,49€ sur Steam !

On a eu quelques problèmes avec les achievements mais ca remarche maintenant… les joueurs sont plutôt compréhensifs sur les bugs, j’aurai cru que ca allait plus râler que ca (perdre ses achievements c’est pas marrant). Il faut croire qu’on a tellement été habitué à des jeux qui marchent à moitié que ca ne nous fait plus rien…

On a investi nos quelques sous dans le Unity Engine. J’avais acheté la toute première version y’a belle lurette en Early Adopter mais comme elle n’était pas suffisamment polishé on était resté sur le Torque Game Engine. Finalement l’annonce du portage du Unity sur l’iPhone nous a fait saliver à nouveau, on se lance donc dans l’aventure !

On peut faire ca par exemple :

[vimeo]http://www.vimeo.com/2428637[/vimeo]

Vidéo à voir pour ceux que le sujet intéresse : présentation de l’Unity pour iPhone.