Créer une jauge à essence pour Racer

La récente version de Racer (v. 0.8.0) apporte son lot de nouveautés graphiques, mais aussi fonctionnelles. Parmi celles-ci, la variable relative à la consommation d'essence (fuel) de votre véhicule a été ajoutée. Je vous propose de vous donner quelques pistes pour exploiter cette fonction, dans le cas -particulier- d'une jauge à essence linéaire sur la Citroën Sm sur laquelle je travaille actuellement.

Jauge essence Sm Comme a pu me le confirmer Eric Rioult, la jauge à essence de la Citroën Sm fonctionne avec une aiguille se déplaçant sur un tambour fixe. Pour représenter ce fonctionnement dans le jeu Racer, j'avais donc besoin de déplacer graphiquement une aiguille latéralement. La documentation sur les compteurs de Racer (en anglais) ne renseignant aucun type linéaire, les compteur pouvant être soit digitaux, soit angulaires, j'ai essayé un hack du type angulaire. Le principe était simple : préparer une dizaine de jauges à des niveaux différents, et leur faire effectuer une rotation rapide de 90 degrés, hors du champ visible de l'écran, lorsque la variable "fuel" atteignait une certaine plage. Mais le problème de cette technique est que la variable en question n'a qu'une précision de 0.01 ! Donc, en assignant une plage comprise entre 0.989 et 1.0 par exemple, il fallait que la voiture "consomme" 0.011 litres d'essence pour effectuer la rotation ! À haute vitesse, ça ne posait pas trop de problème, mais à basse vitesse, la jauge effectuait tranquillement sa rotation et laissait voir la supercherie...

Partant de là, j'ai contacté le développeur du jeu Racer, Ruud Van Gaal, pour lui demander s'il était envisageable de rendre cette variable "fuel" plus précise, ce qui m'aurait permis de réduire la plage et ainsi de faire disparaitre plus rapidement l'ancienne jauge. Mais sa réponse a été beaucoup plus enrichissante que ce que j'attendais : il m'a avoué qu'il avait oublié de document un autre type de compteur : le type linéaire. Il m'a même gentiment fourni un exemple de code, utilisé pour représenter la force latérale appliquée au véhicule :

elt7
{
type=linear
x=400
y=100
width=2
height=16
image=view_linear_line_v.tga
var=gforce_lat
min_value=-2
max_value=2
; Min/max coordinate relative to x/y, and orientation (h/v)
orientation=h
min_offset=-55
max_offset=55
}

Fort de ce code, je m'en suis inspiré pour l'appliquer à mon problème. Voici le code commenté pour le fond de compteur :

elt7
{
; fond de compteur
type=static
; position en pixels
x=80
y=32
z=0
; dimension en pixels
width=64
height=32
; nom du fichier
image=fuel.tga
}

Rien de bien nouveau, mais sait-on jamais, ça peut être utile à certains. ;)

Puis, le code de l'aiguille, commenté lui aussi :

elt8
{
; type de compteur
type=linear
; position en pixels
x=80
y=32
; dimension en pixels
width=64
height=32
; nom du fichier
image=fuel_needle.tga
; nom de la variable à utiliser
var=fuel
; plage d'utilisation, dans ce cas, 0 à 90 Litres
min_value=0
max_value=90
; Coordonnées Min/max relatives à x/y, et l'orientation (h/v)
orientation=h
min_offset=-32
max_offset=0
}

Il faut noter que l'image de l'aiguille, dans mon cas, a exactement les mêmes dimensions que l'image de fond, ce qui permet d'ajuster facilement la position de celle-ci.

Voilà, bien documenté, ce n'est rien de bien compliqué, comme d'habitude ! Je pense que je pourrais ré-utiliser cette méthode pour enfin pouvoir configurer le compteur de vitesse à tambour de ma C4 NT Faux-cabriolet, mais en utilisant plusieurs images représentant chacune une plage de vitesse. Heureusement que la C4 ne dépasse pas les 100 km/h !

Commentaires

J'espère que la voiture cale

J'espère que la voiture cale avec le réservoir a sec ^^

Pas encore testé ?

Une fois le réservoir vide, la voiture cale, effectivement. :)
Je ne suis pas sûr qu'il y ai un moyen de faire le plein xD