PaperPen

Lecture hors ligne (pensez à revenir noter et commenter) :

Mon premier essai de Unity3D, un petit jeu Tron-like – vous savez, la course de moto – mais avec du matériel de bureau.


PaperPen est un jeu de « survival run » en vue du dessus pour 2 à 4 joueurs. Chaque joueur est équipé d’un crayon qui file inexorablement sur le papier. S’il traverse son propre trait ou celui d’un autre joueur, il perd. D’autres obstacles, tache d’encre, trombones… sont également de la partie. Le dernier en vie gagne. Les niveaux s’enchaînent, les joueurs gagnant des points avec leurs taux de survie.

Un niveau

Genèse

J’avais entendu parlé de Unity3D, un moteur de jeu qui me semblait sympa et suffisamment complet dans sa version gratuite (notamment son export multi-plateforme – je suis assez attaché au multi-plateforme). Il se trouve que part hasard, finissant un premier tuto, je me posais le soir devant le film Tron. Comme dirais le Dr Ray Stantz: « Ça a fait chboum là-d’dans ». Un concept simple, ne pas avoir à réfléchir sur quoi faire mais seulement comment. Explorer Unity pour faire un truc fun mais sans reproduire un exemple, car les tuto ça va 5 minutes et on en retient que la moitié. De là à remplacer les motos par des crayons? Déjà pour éviter le plagia, même si je ne pense pas que ce jeu puisse avoir une grande portée mais il y a des habitudes bonnes à prendre. Peut-être en souvenir de mes études où l’usage du PC en cours n’était pas répandu et où on passait bien notre temps en griffonnant des jeux de course sur une feuille à carreaux (c’est pas bien!). Et puis comme concept ça se tient, un crayon a plus de chance de laisser une trace indélébile derrière lui qu’une moto (même s’il ne se viande pas dessus normalement).

Gameplay

Basic, ça se joue au clavier ou de préférence à la manette (la config par défaut est prévu pour manette Xbox, c’est ce qui se fait de plus courant). La croix pour les directions orthogonales.

On ne peut pas s’arrêter. En martelant la direction de notre mouvement, on pourra accélérer. En faisant de même sur la direction opposée, on freinera. Appuyer sur une direction au moment du «Go» donnera un départ canon.

Lorsque notre crayon croise un bonus, il pourra l’activer avec le bouton A. Recroiser un bonus remplace l’existant.

Les bonus

Croiser un trait de crayon ou un obstacle et c’est la mort. On laisse un bout de mine sur la feuille (c’est un obstacle pour les survivants) et notre trait s’efface.

Coté technique

J’ai pris presque deux semaines pour faire tout ça avec Unity3D. Je dois dire que le moteur répond à mes attentes. Le script s’écrit en C#, moi qui écris principalement du C++, la transition a été très facile et la doc Unity est pas mal.

Pour les graphismes, c’est du scan et photos et un peu de dessin à la main (au début je pensais faire bien plus en dessin à la main, mais je suis pas très doué, en reste le crayon et l’image du menu principal qui me confirmeront). Les retouches sont faites avec Paint.net, amplement suffisant pour ce que j’avais à faire.

La police vient de dafont.

Pour les sons, j’en ai chopé la plupart sur universal-soundbank. L’édition s’est faite avec Audacity. Pour la musique des niveaux, j’ai fait mon foufou. J’ai tenté la composition, une première. Avec Musescore, j’ai tâtonné pour essayer de faire une courte ritournelle qui tourne bien en boucle avec un rendu stressant. Cette affaire m’a épuisé et pour la musique des menus que je voulais relax, je me suis tourné vers une sonothèque et posé mon dévolu sur une musique de onlymeith.

Critique

Pour un premier jet histoire de prendre en main Unity, j’étais pas trop exigent avec moi-même. Le code est un peu crade, j’ai bypassé la phase de conception faut dire, c’était pas mon propos.

Ce qui m’a finalement donné le plus de mal, c’est les contrôles. Pas dans le jeu, mais l’édition des touches in-game que j’ai fait à la fin. Le framework de base est assez souple pour récupérer des valeurs et les utiliser mais le choix des touches et des contrôleurs et très rigide (contrôle clavier/pad en dur, assignation des touches hors jeu via une interface pas très sexy) et pas moyen de récupérer les assignations pour les afficher et créer une interface perso in-game. Je m’en suis sorti (après m’être bien empêtré dans des essais foireux sur le framework de base) en utilisant l’asset InputManager. Au final, j’ai réussi à faire ce que je veux. Bon, l’assignation reste pas très fuide et c’est pas évident de retrouver tout de suite qui à quelle manette mais j’avais déjà passé trop de temps dessus… Oui, c’est lâche. Je reprendrais ça un jour, promis.

Et finalement, l’édition de niveau, la partie rigolote. L’éditeur de Unity permet de se passer de la création d’un éditeur de niveau maison. Et c’est bien. Pas facile d’imaginer une évolution de niveau permettant au joueur de découvrir le gameplay au fur et à mesure et de proposer de beaux challenges. Mais après tout ce labeur à créer le corps du jeu, c’est vraiment reposant et gratifiant de dessiner des niveaux. Surtout quand on s’amuse en les essayant à plusieurs. L’évolution de ce coté la qui donnerait vraiment un jeu abouti sera un éditeur de niveau et leur partage pour les joueurs. Peut-être un jour…

Pour finir

Le projet est disponible dans version exécutable et asset Unity. Pour le moment, il n’y a que l’asset pour Unity et une version compilée pour Windows. Faudra que je prenne le temps de le compiler pour Linux et de faire un setup correct, pas juste un truc à l’arrache avec winrar.

J’ai d’autres projets en tête là, mais je reviendrais sûrement un jour sur celui-ci pour y apporter les améliorations qu’il mérite (ou pour le jeter à la poubelle en me demandant comment j’ai osé montrer ça un jour – même si pour le moment j’ai eu de bons retours, certainement pour me faire plaisir).


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *