Ce didacticiel était destiné au site Univers Tux Racer, un portail plein de ressources francophones pour Tux Racer et ses dérivés. Vu que je ne continuerai finalement pas ce projet, j'ai terminé cet article qui était déjà bien avancé, et je le publie ici. Ce billet n'est pas daté dans le temps : il peut être mis à jour à n'importe quel moment après sa première publication.

Cet article est désormais également disponible sur JeuxLinux !

La création de nouvelles pistes dans les Tux Racer libres est une chose qui a été vraiment bien pensé. Même si elle ne permet pas de creuser des sous-terrains ou de régler l'orientation des objets par exemple, elle vous permettra de modéliser assez facilement et plutôt rapidement des courses totalement intégrés dans le jeu, réellement jouables, et cela sans aucune connaissance en infographie 3D, en programmation, et sans logiciels particuliers.

Nous verrons pas à pas dans ce didacticiel comment réaliser une course pour Tux Racer (excepté sa version commerciale) et ses dérivés. Certains points ne concernent que les versions plus avancés (PlanetPenguin Racer, Extreme Tux Racer) : ce sera précisé.

Pour commencez, munissez vous de :

  • Tux Racer, bien entendu
  • Un logiciel de graphisme, tel que The Gimp ou Photoshop
  • Un éditeur de texte

Premièrement, créez un dossier portant le nom de la piste (vous pourrez le changer après), en évitant tout accents et caractères spéciaux (évitez même les espaces, on ne sait jamais). Si vous voulez tester votre course pendant sa création, commencez par les étapes de paramétrage et d'installation (à la fin de cet article).

Attention, le format d'image utilisé dans ce didacticiel est le PNG. Cependant, il est à noter que si vous créez votre piste pour le Tux Racer original (et OpenRacer), vous devez enregistrer toutes les images au format RGB. Les pistes dans cet ancien format ne devrait pas poser de problème si vous les importez dans des versions plus récentes du jeu.

1) Modélisation

Tout d'abord, créez un fichier elev.png dans le répertoire de votre course. Cette image, n'acceptant uniquement les niveaux de gris, représente le relief de la piste. Une fois interprété par le jeu, c'est ce fichier qui définira la forme 3D du terrain.

La taille de cette image déterminera également les dimensions et le format de la course, qui ne pourra que difficilement être modifié par la suite. En général, une piste ne dépasse pas quelques centaines de pixels de largeur et longueur. Habituellement, on considère que chaque pixel représente un "mètre² virtuel".

Le départ est en haut de l'image, l'arrivée est en bas. Pour peindre le relief, le principe est simple : plus le gris utilisé est clair, plus le terrain sera haut. Plus il est foncé, plus le terrain sera bas. Par conséquence, le blanc représente l'élévation maximale, et le noir est le niveau minimal.

Pour une meilleure compréhension, voici un exemple. Une pente a été obtenu par un dégradé horizontal, et les bords surélevés ne sont que deux fins dégradés verticaux. Enfin, vous pouvez également voir comment obtenir un tremplin basique.

2) Application des matières

Le deuxième fichier à créer se nomme terrain.png et il s'agit de l'image qui déterminera quels matériaux seront appliqués sur telle ou telle zone de la piste. Ses dimensions doivent être exactement les mêmes que celles de elev.png.

Voici les différentes couleurs à utiliser pour ce fichier. On utilise souvent un gris 50% pour ajouter de la pierre. En réalité, n'importe quel gris fera l'affaire.

Si vous créez votre piste pour PlanetPenguin Racer et Extreme Tux Racer, elles sont beaucoup plus nombreuses :

Appliquez ces couleurs comme bon vous semble sur votre image. Le plus simple est de superposer dans un premier temps ce nouveau fichier à elev.png, afin de pouvoir suivre le relief de la course.

Il est important de noter qu'il n'est pas la peine (et même très déconseillé) d'utiliser des fondus et des transitions entre les différentes couleurs. Au contraire, il est mieux de n'utiliser que des bords nets et aucun dégradés, au risque d'un rendu non satisfaisant. Le jeu s'occupera lui même des fondus.

Voici donc le fichier terrain.png associé à l'exemple précédent. Les bords de la pistes sont en terre, le tremplin est recouvert de glace, tandis que le reste est enneigé.

3) Placement des objets

Il faut maintenant placer les objets de la course (poissons, arbres ...) : pour cela, créez une troisième image trees.png aux dimensions précédentes. Appliquez lui un fond noir.

En suivant les couleurs suivantes, placez les objets sur l'image (vous pouvez comme précédemment la superposer sur le reste). Chaque objet est représenté par un seul et unique pixel d'une couleur précise.

Pour PlanetPenguin Racer et Extreme Tux Racer, il y a bien entendu de nouveaux objets :

Le départ et l'arrivée ne sont en réalité ici que les banderoles. Ils sont donc facultatifs comme les autres et vous pouvez en placer autant que vous voulez (ce qui est tout de même généralement assez inutile !). Le point de retour n'est pas un objet, mais le lieu où sera redirigé le joueur lors d'un appui sur la touche de retour. À noter que cette option n'est pas fonctionnelle dans toutes les versions (mais ne posera pas de problème de compatibilité).

Finissons avec notre exemple :

Des poissons alignés tout le long, des drapeaux au bord du chemin (et deux de chaque côté en haut du tremplin), deux banderoles, une au départ et une à l'arrivée, un point de retour vers le milieu, des arbres variés sur les bords et des arbustes éparpillés.

4) Paramétrage

Passons au fichier de configuration. Créez-le sous le nom de course.tcl toujours dans le même répertoire. Ce fichier contient plusieurs attributs et leurs valeurs :
  • tux_course_name, suivi du nom de la course entre guillemets.
  • tux_course_author, suivi du nom du créateur entre guillemets. Cette option n'est pas fonctionnelle dans toutes les versions.
  • tux_course_dim, suivi de quatre valeurs. La première est la largeur totale de la course (la taille en pixels de vos images. Vous pouvez jouer sur cette valeur pour la déformer, mais il semblerait cependant que ce n'est pas la meilleure solution, certaines versions du jeu ayant tendance à crasher lors de ce redimensionnement), la deuxième est la longueur totale (idem). La troisième est la largeur sans les marges. Concrètement, cela permet d'afficher des "murs invisibles" sur les bords de la course avec une valeur plus petite que la largeur réelle. La quatrième permet de définir la distance de la ligne d'arrivée depuis le haut de la piste.
  • tux_start_pt, la position du point de départ, défini en deux valeurs (depuis la droite de l'image d'abord, puis depuis le haut).
  • tux_angle, l'inclinaison du terrain, en degrés.
  • tux_elev_scale, qui permet de déteminer l'intensité avec laquelle elev.png forme votre terrain : il s'agit en fait de la différence d'altitude, en "mètres virtuels", entre les points le plus bas (noirs) et les plus hauts (blancs). La "hauteur de vos montagnes" concrètement.
  • tux_base_height_value, dont je n'ai pas encore compris le rôle. Sa valeur reste habituellement au maximum, 255.
  • tux_elev et tux_terrain, qui ne font qu'appeler respectivement les fichiers elev.png et terrain.png.
  • tux_theme_init, introduit à partir de PlanetPenguin Racer, qui permet de sélectionner le thème utilisé : common si vous utilisez uniquement les matières et les objets de base, ppracer si vous piochez dans toutes les ressources.

Tous ces attributs sont suivis directement de leurs valeurs, séparés par un simple espace. La majorité, mais pas tous, acceptent des valeurs décimales (le point remplacant alors la virgule). Sauf pour les deux premiers, terminez chaque ligne par un point virgule (bien qu'il semblerait que ce ne soit pas une nécessité). Le fichier se termine par tux_course_init pour lancer le jeu.

Pour mieux comprendre le système des marges, voici un schéma (visualisant tux_course_dim et tux_start_pt) :

Enfin, voici un exemple de fichier de configuration :

tux_course_name        "Test de course"
tux_course_author      "Qui ?"
tux_course_dim         100 200 80 180 ;
tux_start_pt           50 10          ;
tux_angle              20             ;
tux_elev_scale         30             ;
tux_base_height_value  255            ;
tux_elev               elev.png       ;
tux_terrain            terrain.png    ;
tux_theme_init         ppracer       ;
tux_course_init
Il est à noter que dans les versions d'Extreme Tux Racer supérieures à la 0.4 (c'est à dire les versions actuellement en développement, qui sortiront prochainement), le système a légèrement changé : un nouveau fichier info.tcl est ajouté.

C'est lui qui contient désormais le nom de la course et son auteur, ainsi que la description de la course : tux_course_name et tux_course_author deviennent alors obsolètes dans course.tcl. Ce nouveau fichier se présente comme ceci :

set course_name        "Test de course"
set course_author "Qui ?"
set course_description "Description de la course"
Il peut contenir aussi les informations supplémentaires pour intégrer la piste dans une compétition (temps à ne pas dépasser, nombre minimum de poissons à attraper ...). Nous ne verrons cependant pas cet aspect dans ce didacticiel, consacré uniquement aux courses et non à la création de coupes.

5) Installation de la course

Pour finir, il faut mettre en place la course dans le jeu. Ici, nous la feront simplement apparaître dans le menu Entraînement ("Practice"), et non pas dans une compétition.

Rendez-vous donc dans le dossier ou est installé votre version de Tux Racer. Dans un système Linux, c'est le dossier des données qui nous intéresse (par exemple /usr/share/games/etracer pour Extreme Tux Racer). Naviguez jusque au sous-dossier courses/contrib/ et déplacez-y le répertoire de votre course. Et c'est tout. Démarrez le jeu, votre course devrait se trouver parmi les autres.

6) Et maintenant ?

Que faire une fois fini ? Jouer déjà ! Ensuite, pensez à faire une capture d'écran de votre piste, puis à la redimensionner (traditionnellement en un carré de 128px de côté, même si elle se trouve écrasée), avant de la placer dans le dossier contenant les autres fichiers sous le nom de preview.png.

Enfin, vous pouvez partagez votre course : dans les commentaires de ce billet pourquoi pas, sur ce forum prévu à cet effet, ou même dans la bonne catégorie du forum d'Extreme Tux Racer (qui sait, peut être que votre création sera intégrée dans une version future ?).

Voilà pour ce didacticiel. Il contient probablement des erreurs, et certaines parties sont certainement améliorables, n'hésitez pas à m'en faire part via les commentaires ! Et si vous prenez gout à la création de courses, notez que vous pouvez utiliser pour vous aider un greffon spécial pour The Gimp, inclu dans la majorité des version du jeu, dans un dossier 'contrib' ...