Bonjour!
Merci beaucoup!
@ Godzillu & Creamy : bien sûr, aucun souci!
Pour les détails techniques sur la partie vélo (pour Asraroth en particulier, mais aussi tous ceux qui veulent \o/):
En fait c'est tout simple. Il ne s'agit effectivement pas de mode 7, ni de 3D.
J'avais pour idée de faire une partie "arcade" dans le style de "Super Hang-On" (j'y ai beaucoup joué sur Atari ST, j'adore \o/), donc c'est de la 2D comme à l'époque.
Comme je n'avais jamais programmé ce genre de truc auparavant, j'ai été bien obligé de partir de concepts de base (plus un objet est loin, plus il paraît petit...).
Donc en gros, pour commencer, j'ai dessiné un bout de route vu de dessus.
C'est celui-ci qui est utilisé dans le jeu :
(NB : le dessin est grossi 2x pour ne pas être trop petit à l'écran (à la base c'est toujours du 320x200). La partie basse du dessin, avec les carrés blancs, n'est utilisée que pour la zone quadrillée de la route juste avant la ligne d'arrivée, donc on peut en faire abstraction. Et bien sûr, toute la partie en noire est inutile, mais peut servir au dessin d'autres types de routes, par exemple...
)
Ce dessin sert à dessiner toute la route, de l'horizon jusqu'au bas de l'écran.
(dans le code, je chope d'entrée de jeu toutes les lignes du dessin une par une et je les stocke dans un tableau de sprites dynamiques, n'ayons peur de rien! \o/).
Basiquement, pour dessiner la route (toute droite, toute plate), il suffit de fixer simplement les choses :
- du bas de l'écran à l'horizon (positionné arbitrairement à l'écran), il y a "x" pixels.
- du bas de l'écran à l'horizon, la distance représentée est de "y" patates (on va dire que c'est en "patates", comme ça c'est totalement abstrait et ça évite de se poser des questions du style : "mais d'ici à là-bas, ça fait vraiment 14km?" (Réponse : non, ça fait 14000 patates))
- tout en bas de l'écran je veux que la route occupe toute la largeur de l'écran (par exemple).
- au niveau de l'horizon je veux que la route soit large de "z" pixels (NB: "z" > 0 de préférence! (sinon pas beau, ça fait un triangle...)
)
Ensuite, et en fonction de tout ça (niveau code) :
- balayage de distance en distance (en patates), depuis l'horizon jusqu'au joueur et à chaque fois :
- calcul de la largeur de la route à ce point précis, en pixels (on a tout ce qu'il faut pour)
- à quelle ligne de l'écran correspond ce point précis ? (calcul... on sait où dessiner la ligne)
- à quoi ressemble la route à ce point précis ? (calcul... on sait ce qu'on doit dessiner (on fait un cycle sur les lignes du dessin))
- dessin d'une ligne de la route
- re-belote...
Hop! on sait tracer une route toute droite de l'horizon jusqu'au joueur!
Ensuite pour faire "défiler" la route, il suffit d'introduire un compteur. Celui-ci s'incrémente à mesure que l'on avance (on avance plus ou moins selon la vitesse...) et cela a un impact direct au moment de la question "à quoi ressemble la route à ce point précis ?" lors du tracé => réultat : la route défile.
Les virages :
Là, il est clair que je "triche" honteusement! (hihihi)
Mais le truc ne saute vraiment aux yeux que quand on le sait (enfin je pense, où sinon c'est un truc qui bizarrement ne choque pas trop (ou alors je suis trop habitué aux très vieux jeux, tout est possible!!)...).
Normalement, un virage, on le voit arriver de loin, on le voit arriver depuis l'horizon...
Ici (et comme dans les vieux jeux de course!
), le virage se déclare soudain et la route se courbe peu à peu...
(du point de vue code, il s'agit en gros de rajouter du sinus dans les calculs).
Les pentes/côtes/bosses/creux :
Il s'agit ici aussi de rajout de calculs de sinus, selon les schémas suivants :
--------------------- (route plate, vue de profil)
---------/\---------- (une bosse, amplitude/longueur variables)
--------/\/\--------- (deux bosses de même amplitude/longueur variables)
---------\/---------- (un creux, amplitude/longueur variables)
--------\/\/--------- (deux creux de même amplitude/longueur variables)
Là il n'y a pas de "tricherie", le joueur voit arriver de loin les reliefs et dévale/remonte les pentes avec bonheur!
(le tout consiste juste à bien "raccorder" le passage creux/bosse avec la route "normale"...)
Voilà en gros pour la partie technique (mais je suis conscient de ne pas forcément avoir été super clair, malgré mes efforts!
).
(NB : ne pas hésiter à demander si besoin... j'essayerai de faire mieux)
A+
Charlatan