Novae : chronique de la création d'un jeu sur iOS (1/2)

Florian Innocente |



De l'envie de faire un jeu iOS jusqu'à trouver la bonne idée, de cette idée jusqu'à son développement en application puis sa publication sur l'App Store… Dominique Vial raconte la genèse de son premier jeu pour iPhone : Novae.

Lancé en mai, ce titre s'inscrit dans la famille des jeux de puzzle prenants, que l'on lance à tout moment ou pour tuer le temps [vendu 2,69€]. Il est le fruit d'un développement essentiellement solitaire, entamé à l'automne dernier. De cette envie de faire un jeu jusqu'à sa commercialisation, le développeur partage son journal au fil de deux épisodes.

Présentation



Mon nom est Dominique Vial. Je suis développeur indépendant sous le régime d'une entreprise individuelle : Domsware (contraction de Dominique et Software). J'habite à Toulouse.

Novae est le premier jeu que je réalise sous iOS. Il ne s'agit toutefois pas de ma première application, puisque je suis l'auteur de CoachMyRide, un utilitaire d'entraînement cycliste, et j'ai participé à d'autres réalisations.

Avant de commencer Novae, je me considère comme relativement novice en développement iOS. Je ne connais qu'une partie des domaines couverts par iOS. Je n'ai que quelques centaines d'heures de pratique du langage Objective-C et de l'environnement iOS. Selon certains, il faut 10 000 heures de pratique pour se dire développeur dans un langage !

Docteur et Ingénieur en Informatique Industrielle, j'ai exercé dans de nombreux domaines d'activité : la robotique, l'aéronautique, le spatial, l'internet. Dans différents secteurs aussi : l'industrie, la recherche, l'enseignement et la formation ou encore le milieu artistique. Mon langage de prédilection est l'Ada, orienté objet, il est né au tout début des années 80.

C'est ainsi que je pars sur le développement de Novae.

Comment se crée un jeu ?



Ça a commencé comme ça : « Je veux faire un jeu sur iOS et j'ai une idée de jeu originale ». Pour Novae, je suis parti d'une idée originale que j'ai menée au bout. C'est aussi simple que ça. Je ne me suis pas inspiré d'un jeu existant bien qu'évidemment les influences existent !

Jeux vidéo et programmation



Question jeu vidéo, je suis de la génération Atari, Coleco, Vectrex… Et Videopac ! Tous les copains avaient une Atari VCS 2600. Pour Noël, le déballage des cadeaux a révélé au grand dam, effroi, dégoût, et stupeur : une infâme Videopac ! Ce jour-là, le père Noël est bien mort ! Depuis j'en ai gardé une forte rancune contre les agents commerciaux qui refourguent n'importe quoi aux clients crédules et perdus.


Le Videopac de Philips


Pour la programmation, cela a commencé au collège, en 5e, dans une salle informatique déserte, perdue au fond d'un couloir (ambiance Les Envahisseurs). Et c'était en solitaire, avec un Thomson TO7. En peu de temps, j'ai développé mon premier programme : un jeu. Un Canadair qui doit éteindre les flammes d'un incendie.

Bref.

Cela faisait longtemps que je voulais faire un jeu. Et cela faisait longtemps que milles excuses valables me retenaient : le temps, les moyens, les "ça ne marchera jamais", les "tu ne sais pas faire cela"… Et puis je me suis décidé : je vais faire un jeu. Et à ce moment-là, l'idée de Novae est venue. Ou bien le contraire, je ne saurai dire.

L'Idée



Un jour donc - situons-le entre la mi-octobre et le début novembre - l'IDÉE est venue. Pas dans les moindres détails, mais de façon plutôt brute : une notion de gravité centrale et de rotation. La première chose que je n'ai pas faite a été de me jeter sur le clavier et foncer tête baissée dans le code. Au contraire, j'ai pris les outils de base du développeur : papier, crayon et gomme. Au fur et à mesure que je posais les idées dans un cahier, d'autres naissaient. Il convenait de les noter afin de ne pas les perdre, mais surtout de ne pas les suivre et ainsi se perdre.



La première mouture du jeu a été une version papier. Elle est composée de post-its de différentes couleurs, placée sur la porte d'un placard chez moi. L'un des avantages des post-its est qu'il peuvent facilement se repositionner. C'est ainsi qu'ont été établis les fondements de Novae.



Un petit détail avant de continuer : le nom initial du projet était Rubber Soul. Allez savoir pourquoi… J'ai toujours considéré qu'un jeu vidéo était le type de logiciel le plus dur à réaliser. Non pas à finaliser ou à faire fonctionner, ce qui au fond n'est pas si compliqué, mais à faire fonctionner "correctement". C'est-à-dire à produire l'effet désiré sur le joueur. Nous avons tous eu entre les mains des "beaux" jeux, époustouflants, mais fades et au final peu intéressants. On y joue une fois et puis le jeu n'est plus jamais lancé.



Les jeux référents



Je n'ai pas été isolé du monde depuis ma petite enfance, je ne vivais pas dans une grotte en pleine forêt, coupée de tout. Ainsi il apparaît évident que j'ai été influencé pour la réalisation de Novae. Toutefois, je n'ai pas cherché à reproduire un existant, mais ai plutôt voulu suivre ma propre voie en me mettant des œillères lors du développement afin d'éviter de me laisser influencer trop tôt. Plus tard, lorsque Novae a été suffisamment mûr, j'ai commencé à comparer avec l'existant pour l'améliorer.

Je ne suis pas un "Gamer" dans l'assertion traditionnelle du terme. Ma dernière console a été une Nintendo Game Cube utilisée pour Zelda, Pikmin et quelques séances de Burnout. Depuis, plus de consoles de salon, mais seulement une Nintendo rose de je-ne-sais-plus-quel-modèle, uniquement pour jouer au Zelda qui accompagnait sa sortie. Et puis les appareils iOS : iPod touch puis iPhone puis iPad.

Je joue à des petits jeux, ce que j'apprécie c'est de pouvoir lancer une partie pour me détendre. Ainsi, je n'aime pas trop les jeux avec la pression du temps et ceux où il faut des réflexes affûtés. Tout comme les jeux stressants – je me rappellerai toute ma vie du bond au plafond que j'ai fait lorsqu'un chien zombie aux yeux rouges a surgi sur l'écran du téléviseur dans le premier épisode de Resident Evil ! Il était 1 heure du matin et, pris par l'ambiance, j'ai vraiment eu peur ! Ha ha ha !

Les jeux qui m'ont le plus marqué sont Infernal Runner, The Sentinel, Dungeon Master, Myst et enfin Zelda, the Wind Waker. Pas des jeux violents, énervants, stressants. Des jeux qui m'ont captivé et m'ont fait m'évader. Je me rappelle aussi de ce jeu de course sur PC qui a entamé mes nuits de travail durant la thèse : Screamer.


Dungeon Master et Infernal Runner (ci-dessous)




Parmi les références sur iPhone, il y a Drop 7, Geo Defense, LASW et très récemment Puzzle Quest 2 sur iPad. J'ai également proposé des jeux comme sujet de projet informatique à des étudiants en école d'ingénieur. Ces jeux étaient Same Game et Drop 7.

Je voulais ainsi faire un jeu reposant, qui permette de s'évader. Un jeu pour me détendre entre deux activités, après une grosse journée de travail et aussi, avant de dormir.



L'ambiance du jeu



L'une des plus grosses difficultés de l'activité de développement est selon moi le "nommage" des choses. Lorsque je développe, il m'arrive régulièrement d'arrêter complètement toute activité pour consulter un dictionnaire de synonymes ; surfer des heures sur le net ; consulter le premier quidam que je croise dans la rue (ou presque !) ; regarder un film ; lire un bouquin… Ceci afin de trouver le nom qui décrit bien la "chose", le "truc" sur lequel je planche. Sans cela, ce n'est pas clair, pas bien "disposé" dans mon esprit.

Aussi, très tôt dans le développement de Novae, disons plutôt Rubber Soul à ce stade, j'ai cherché à nommer les entités que je manipulais. Dois-je appeler cela un pion, une pièce, une brique… Comment s'appelle cette action : suppression, élimination, absorption… Il est probable que pour le lecteur cela paraisse dérisoire néanmoins, en ce qui me concerne, j'en ai besoin.

Pour y arriver, je me mets en recherche d'inspiration et tout média est bon à prendre : le surf sur internet, un film, des ouvrages scientifiques, un roman, la musique, des "trucs" vus dans la rue…

À force de fouiller dans le domaine des phénomènes physiques je suis parvenu à trouver le nom exact de celui utilisé par Novae : l'accrétion. De cette découverte a découlé toute l'ambiance, spatiale, du jeu. Et le nom final, Novae, bien plus tard. Pour la petite histoire, la racine latine du mot "accrétion" est accretio : c'est ce nom qui a longtemps eu la cote pour le nom final du jeu.


L'accrétion désigne l'accroissement par apport de matière - crédit image





Le contexte était posé : l'astrophysique, l'espace, la Science-fiction. J'ai alors passé du temps sur le site de la NASA et plus spécifiquement sur celui de la mission Chandra pour m'imprégner de cette ambiance et qu'elle diffuse ensuite dans le jeu.

Pour les films cela a été de la SF : la série des Aliens, Prometheus, Blade Runner, Sunshine… Et pour la musique, notamment Pink Floyd, Daft Punk, Matmos, Archive, Motorbass…

Tout naturellement j'ai orienté le visuel du jeu vers ce thème de l'espace : fond noir et galaxie en fond de jeu. Dans les versions de tests, la galaxie était animée d'un très lent mouvement de rotation horaire pour aider le joueur à assimiler le sens de rotation de l'accrétion.

Je souhaite que Novae reste sobre au niveau visuel et sonore. Il y aura des animations, mais les plus discrètes possible ! Mon objectif est de rester focalisé sur la mécanique du jeu et de ne pas noyer le joueur sous une avalanche d'effets "Waoouuh !"

J'ai rassemblé les sonorités qui me plaisaient et j'ai acheté l'application Animoog afin de jouer avec des sons similaires à ceux du Dark Side of the Moon de Pink Floyd. C'est peut-être de là que proviennent les couleurs des pions… L'ambiance sonore du film Sunshine m'a beaucoup marqué également : les morceaux de Underwold, mais aussi quelques "sons de l'espace". Par exemple celui-ci.



Pour réaliser l'esthétique de Novae j'ai fait appel à un musicien et à un graphiste à qui j'ai transmis tout ce matériel décrivant ma vision de l'ambiance du jeu.



Règles du jeu et jouabilité



Règles du jeu



Le principe de base du jeu, l'accrétion, existait depuis le début, mais pourtant les règles de jeu n'étaient pas posées définitivement.

Le principe structurant l'action était acquis : le joueur pose des pions et il essaye de créer des correspondances pour supprimer un groupe de pions. Lorsque les pions sont supprimés, ils libèrent un espace qui est alors récupéré par les pions alentour en suivant les règles d'accrétion. Cela semblait pouvoir donner lieu à un joli effet visuel.



Le principe de suppression de groupes de pions (quand un groupe doit-il être supprimé ?) n'était, lui, pas finalisé. La première idée a été de supprimer des groupes de formes données en reprenant les polyominos popularisés par Tetris. Je n'ai pas donné suite à cette idée et n'en ai même pas codé une maquette informatique, je la trouvais trop compliquée pour le joueur.

La seconde idée a été d'absorber les groupes de pions lorsqu'ils sont en contact avec le centre. Le centre étant de forme carrée, il possède 4 côtés qui permettent la formation de 4 groupes de pions similaires. De ce nombre de côtés se déduit le nombre minimal de types de pions différents pour que le jeu ait un minimum de difficultés : 5. En deçà, le jeu ne présente aucune difficulté, car il suffit d'attribuer un type de pion par côté du centre. Quand au nombre minimal de pions constituant un groupe pour que celui-ci soit supprimable, je suis parti d'emblée sur 4, nombre qui n'a pas changé par la suite.

L'élimination de groupes sur la grille de jeu provoque le repositionnement des pions restants qui cherchent à se rapprocher du centre. Cela peut conduire à la formation de nouveaux groupes supprimables ou bien à la perte de la partie : si aucun groupe ne peut plus être en relation avec le centre.

Jouabilité



Depuis le début du développement, j'avais 2 craintes sur la jouabilité :
  • que le jeu ne soit pas intéressant, "belle idée, mais pas prenant et pas addictif".
  • qu'un méga joueur trouve une "faille" qui enlève tout intérêt au jeu.

Le seul moyen d'éviter ces 2 points était de tester le jeu le plus longtemps possible, avec des personnes de niveau et de vécu différents.

C'est donc avec ces règles et réglages que les premières versions du jeu ont été distribuées à un premier cercle de testeurs (4-5 personnes). Les avis ont été tout de suite unanimes : le jeu est plaisant et même addictif. À chaque fin de partie, on le relançait pour essayer d'aller plus loin. Un bon point que cela !

Le principe de base étant accrocheur : il reste maintenant à faire en sorte que le joueur souhaite progresser dans le jeu. L'intégration prévue au Game Center y contribuera, mais ne suffira pas.

Les testeurs m'ont soumis nombre d'idées s'ajoutant aux miennes : je ne les présente pas ici, car certaines feront l'objet de mises à jour du jeu actuel ! Parmi elles, il y en avait de "mauvaises" : notamment donner une chance au joueur de rejouer son dernier coup lorsque l'on se plantait. J'ai refusé cela ! D'une part, dans un jeu, quand on se plante, on se plante et d'autre part, la faute n'en revient qu'au joueur qui n'a aucune pression temporelle pour calculer ses coups. De plus, je voulais que le jeu reste le plus simple possible et pour cela, chercher à enlever des choses plutôt qu'à en rajouter.

J'ai toutefois essayé une modification, dont l'objectif était d'augmenter la stratégie du jeu : rajouter un bonus qui permette au joueur de passer le pion courant lorsque celui-ci ne lui convient pas. J'ai appelé ce bonus "énergie". Il comporte 4 niveaux, les 3 premiers donnant des bonus de rejets supplémentaires de pions au joueur, le 4e et dernier permettant au joueur de vider totalement la grille.


Des simulations de rendus du mode daltonien pour différents types de daltonisme, avec l'outil xScope. Les pastilles ont hérité aussi de ces motifs géométriques plutôt que de simples aplats de couleurs.


Cette modification a été mise en place pendant environ 3 semaines. Au bout de ce laps de temps, j'ai constaté que je prenais moins de plaisir à jouer. Idem du côté des testeurs… Ça n'allait pas.

À chaque changement affectant le "game play", les 2 craintes précédemment énoncées me revenaient : est-ce que le changement, même minime, que je viens d'effectuer casse tout ? Dans le cadre de cette précédente modification, il était devenu évident que c'était le cas. La personne pouvait jouer plus longtemps, mais le jeu était devenu moins intéressant.

Je suis alors revenu en arrière en conservant le principe de ce bonus d'énergie, mais en le simplifiant : 1 seul niveau d'énergie qui, une fois atteint, vide automatiquement la grille et permet de passer au niveau supérieur. Les testeurs et moi-même avons repris rapidement le goût du jeu ! Le principe de fonctionnement du titre était trouvé.

Avec un peu de recul, il est étonnant de constater à quel point une légère modification dans la conception du jeu, au niveau des règles, mais aussi de la réalisation (graphisme, animation…) provoque un impact important chez le joueur : le battement d'ailes du papillon au large du Brésil…

Pour motiver davantage le joueur et conserver à Novae son attrait le plus longtemps possible, je me suis mis à la recherche d'articles sur la jouabilité des jeux vidéo. J'ai acheté un ouvrage dont la référence revenait souvent : A Theory of Fun for Game Design de Raph Koster (19€ chez Amazon). Tout d'abord, j'ai trouvé ce livre extrêmement intéressant : je l'ai dévoré en un week-end ! Ensuite, sa lecture m'a beaucoup apporté, d'une part en validant les choix déjà effectués pour Novae et d'autre part en confirmant l'intérêt de la mise en place du Game Center.

Le résultat final



L'image ci-après montre une vue finale de l'écran de jeu de Novae. La barre d'énergie se trouve en dessous du score et l'indication des pions courant et suivant, en haut à droite, à l'opposé du score. Pour guider le joueur dans le placement des pions, l'axe horizontal et l'axe vertical sont affichés en gris sombre.



En posant le pion courant - de couleur rouge - au nord, un groupe de 4 pions rouges est constitué. Ce groupe est supprimable puisque 1/ sa taille est supérieure ou égale à 4 et 2/ il est en contact avec le centre (par un des côtés du centre). La suppression de ce groupe rouge entraîne le repositionnement des pions mauves (en bas à gauche) et bleus (en bas). Les pions jaunes (en haut à droite) n'ont pas bougé puisqu'ils sont contraints par le mouvement de rotation dans le sens des aiguilles d'une montre.



En posant le pion courant (bleu) au sud, on supprime le groupe bleu ainsi constitué ce qui entraîne un nouveau replacement des pions.



Chaque suppression de pions entraîne l'augmentation du niveau dans la barre d'énergie qui, une fois pleine, vide la grille et ouvre le niveau suivant. Plus le niveau de jeu augmente, plus l'énergie nécessaire pour accéder au niveau supérieur est importante : le jeu progresse ainsi en difficulté.

A suivre dans la deuxième et dernière partie, l'avancée dans le projet jusqu'à sa mise en ligne sur l'App Store et le premier bilan
avatar nx-74205 | 
Merci pour cette plongée dans votre processus ce création
avatar nostress | 
Très sympa cet article ! Rubber Soul...ça aurait bien sonné aussi :) Et puis ça rappelle des choses à certaines personnes :p
avatar Simeon | 
Merci pour cet article passionnant !
avatar Anonyme (non vérifié) | 
Merci à vous d'avoir partagé votre expérience de création. Il s'agit d'un article de qualité, et j'ai hâte de lire la seconde partie, qui promet de s'aventurer dans les rouages de la distribution !
avatar BrokenStones | 
Article très intéressant et bien écrit ! J'ai hâte de lire la suite ! Et pourquoi pas d'acheter le jeu !
avatar Vincent Letellier | 
Découvrir l'informatique sur un TO7... Autant s'exiler en Siberie a cette époque la ! Pour ma part c'était des Apple IIe et IIc dans un collège a la Réunion en 1983 ! Puis quelques annees apres, un CPC464 qui fonctionne encore ! Mon iPhone a quasiment le même format que les cassettes qui chantait en chargeant les programmes..... Tout un programme !
avatar Microbd | 
Excellent, passionnant, bravo, vivement la deuxième partie. Applement vôtre.
avatar Florian Innocente | 
[b] @ siskas : lire la seconde partie, qui promet de s'aventurer dans les rouages de la distribution ![/b] La distribution ne sera que (très) partiellement abordée. Ce sera surtout la partie test, développement et perfectionnement de l'app qui va être détaillé (on le publiera dimanche).
avatar amigafred91 | 
Merci pour ce superbe article. Tres intéressant, même si je n'ai pas le niveau pour faire aussi bien. La lecture a été délicieuse.
avatar bugman | 
Super. Genre d'articles que j'aime lire. Vivement la suite... et d'autres (aussi) peut être (?)
avatar Anonyme (non vérifié) | 
Un article de fond super intéressant ! Qui s'applique même au développement en solitaire en général et pas seulement sur une plateforme en particulier !
avatar nx-74205 | 
Sinclair zx Spectrum, Amstrad cpc464, commodore amiga 500, amiga 1200 , une station SUN presque pour moi tout seul pendant mon service militaire et puis des PC sans âme , jusqu'à mon Mac mini g4. C est comme la madeleine de proust, entendre parler de vcs et de to7 ça fais remonter les souvenirs ...
avatar BenBg | 
Peut-on savoir quelles études a-t-il effectuées ? Ça m'intéresse beaucoup
avatar iapx | 
Passionnant! Vraiment passionnant et inspirant! Bravo!
avatar iPekka | 
Super article qui me rassure sur le développement solitaire et me reboost à un point !!! Et bravo pour ce suspens insoutenable ! Le format article à épisodes rend la lecture encore plus intéressante ! Vivement dimanche !
avatar Kinky | 
Excellente chronique. J'en redemande ! ^^ Sinon, le Videopac pour Noël, c'est pas cool en effet. Le père Noël est une ordure !
avatar EBLIS | 
J'ai aussi adoré cette chronique! Merci à Dominique. Bon maintenant MacG, il nous faut 2 chroniques par semaine comme celle ci :-)
avatar Florian Innocente | 
[b] @ BenBG : Peut-on savoir quelles études a-t-il effectuées ? Ça m'intéresse beaucoup [/b] Docteur en Informatique Industrielle Ingénieur INSA Toulouse, Informatique Industrielle Mon doctorat portait sur des muscles artificiels : ceux-là même qui actionnent les robots du film iRobot Et pour l'aéronautique j'ai bossé sur les FMS (Flight Management System).
avatar fredcozic | 
Merci pour ce super partage ! On en redemande !
avatar BKN1 | 
Alors là, je dis bravo MacG (et Florian) !! Super article !!! Encore quelques articles de cette trempe et je m'abonne !!
avatar boulifb | 
Aaaah, les tableaux de booléens à n dimensions selon les cas... Que du bonheur à programmer!
avatar Dondic | 
Bravo, extrêmement intéressant. Le meilleur format pub pour une app.
avatar rondex8002 | 
Article très intéressant, comme on les aime !

CONNEXION UTILISATEUR