Basic Casio et troisième dimension
Posté le 14/04/2021 14:52
Bonjour à tous !
3D rime souvent avec langage C, difficulté d'affichage, raycasting, lancer de rayon et autres grossièreté du même acabit. Et en Basic, rien en 3D. Ce temps est révolu !
Grâce à un système simple et robuste, il est possible d'afficher dans une 3D simple un labyrinthe dont le plan est stocké dans une matrice.
Le principe est assez trivial : on a une matrice qui représente le labyrinthe dans sa totalité et deux variables qui symbolisent les coordonnées de la place du joueur dans la matrice. Une troisième variable stocke la direction dans laquelle le joueur regarde.
À partir de ces trois variables on extrait de la matrice du labyrinthe une sous-matrice qui contient le champ de vision du joueur. Cette matrice fait 3 cases par 4. 3 cases pour avoir une case à gauche du joueur, une à droite plus la rangée centrale. 4 pour les plans. Cette matrice est analysée et en fonction de la position du 1 (mur) ou du 0 (air) le programme affiche (ou pas) un segment de mur qui correspond au plan en cours d'analyse.
Bon, assez des détails techniques ! Places aux images :
@RDP
Citer : Posté le 14/04/2021 15:00 | #
Petite suggestion : on ne devrait pas voir la ligne verticale sur le bord de l'écran, car pour voir un carré dans sa totalité il faut se tenir devant, hors on est dedans. Tu peux donc avancer un peu tout l'écran, et on s'y retrouverait mieux.
Accessoirement, le mur vertical à distance 1 devant nous occupe moins de colonnes à l'écran que celui à distance 2 : ça devrait être l'inverse.
Ajouté le 19/04/2021 à 10:29 :
J'y pense maintenant, est-ce que le programme fonctionne aussi si on se trouve dans un couloir large de 2 ou 3 cases ?
Citer : Posté le 20/04/2021 22:17 | #
Sympa !
J'ai une question, c'es pourquoi tu vérifies les 4x3 cases ? Es ce que tu pourrais gagner quelques perf en ne t'occupant que de celles devant le joueur ?
Et sinon, comment tu fais ton rendu avec la perspective ? C'est precalculé ou c’est vraiment calculé en fonction de ta sous matrice ?
Citer : Posté le 20/04/2021 22:19 | #
Quitte à spoiler la deuxième question, les positions des traits sont pré-calculées à la main et le programme consulte "juste" la matrice pour savoir lesquels afficher.
Citer : Posté le 25/04/2021 18:37 | #
Merci !
Je confirme ce que dit Lephe, j'ai un programme qui renvoie une liste de coordonnées (pour tracer le mur ou l'ouverture) en fonction de la position relative de la case regardée par rapport au joueur.
Pour la première question, c'est juste une question de "jouabilité" c'est plus agréable du point du vue du joueur de voir 4 cases devant lui, plutôt que 2 ou 3. Une autre raison est que chaque plan étant pré-dessiné (la deuxième question btw) si j'avais eu 5 ou 6 plan j'aurais dû tout pré-dessiné et j'aurais aussi très vite perdu en performance : un plan en plus oblige à avoir 3 cases à regarder en plus soit environ 9 traits à tracer sur l'écran.