Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Tile Mapping : présentation générale


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux

    Tile Mapping : présentation générale
    Bonjour à tous,

    Voici une le premier tutoriel d'une nouvelle série sur le « Tile Mapping » ou, la manière de faire un niveau et de le faire défiler suivant les mouvements du personnage.
    Ce tutoriel présente les bases et définit les concepts pour correctement débuter dans la mise en place du niveau.

    Bonne lecture.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Expert confirmé
    Article indispensable pour tout futur créateur de jeux 2D !!
    Le seul point noir pour moi est ce C++ avec lequel je fais la guerre dans mon dernier projet ... Le code source final est incompréhensible pour moi alors que je connais la technique depuis des lustres ...
    Mais sans doute que c'est ma mauvaise volonté ...

    L'explication et le cheminement du principe est un modèle du genre !
    Bravo !!
    Développeur - Créateur Amateur de Jeux vidéos
    Visitez ma page dédiée
    Visitez mon espace Itch.io
    Mon canal Discord

  3. #3
    Membre régulier
    Vraiment Bravo !

    C'est simple, clair, agrémenté d'excellents exemples que l'on connait tous !

    Vivement la suite !

  4. #4
    Membre du Club
    Bonjour,
    Tout d'abord, je tiens à féliciter l'auteur pour son article car je trouve le tutoriel très clair et accessible.
    Il me semble néanmoins avoir noté une petite erreur.
    Ensuite, je fais un double for. Je fixe Rect_dest.x et y à la bonne position (qui dépend de i et de j), puis je définis Rect_dest.x, qui lui dépend directement du nombre correspondant. (Nous allons détailler cette ligne ci-dessous.)
    Je crois qu'il s'agit plutôt de Rect_source.x à la place de Rect_dest.x

    Cordialement.

  5. #5
    Expert éminent sénior
    Parfait, je dirais même plus: "Divin". La suite, une suite et vite.

  6. #6
    Responsable 2D/3D/Jeux

    Bien vu
    Citation Envoyé par kriska Voir le message
    Je crois qu'il s'agit plutôt de Rect_source.x à la place de Rect_dest.x
    C'est maintenant corrigé.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre régulier
    Excellent . Comme les autres, j'ai hâte de lire la suite

  8. #8
    Nouveau membre du Club
    Merci Beaucoup,

    Cela va beaucoup m'aider pour apprendre à développer dans ce domaine,
    je travaille avec Vs Studio 2012, je pense que cela doit être pareil.

    Encore Bravo, et j'attends avec impatience, les test de collisions pour le décor.

  9. #9
    Membre à l'essai
    Merci pour ce superbe guide !

    J'ai vraiment hâte de lire la suite

  10. #10
    Responsable 2D/3D/Jeux

    Le sommaire de tous les articles de la série est présent ici.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Je vais faire hurler dans les chaumières mais c'est pour votre bien.

    Ces tutos c'est une initiative généreuse mais c'est une compilation de toutes les erreurs de débutant. Je les connais très bien pour les avoir faites aussi vu qu'elles sont en permanence répercutées dans les tutoriels.

    On apprend mal avec les tutos faits par des débutants, on apprend beaucoup mieux avec les sources des professionnels... (par exemple http://en.wikipedia.org/wiki/List_of...ce_video_games)


    Liste non exhaustive de toutes les erreurs relevées :


    - je vois des dimensions genre 24, 15, 13... c'est pas comme ça qu'on fait. On n'utilise que des dimensions puissance deux pour pouvoir profiter des opérations binaires, c'est la base même des tile engine depuis leurs origines, à la base c'était du hardware japonais (qui a désormais traversé l'océan pacifique avec l'apparition des smartphone) donc ça fonctionne comme les textures mais de façon beaucoup plus intelligente (et compliquée donc).


    - c'est rendu avec le blitting natif de la lib sdl. C'est une mauvaise habitude. Ca aurait été justifié pour un langage super lent genre javascript mais en c++ on peut faire mieux. Si quelqu'un veut adapter ça sur la lib sdl 2.0 on va avoir un gros problème de performance avec cette approche car ça veut dire qu'on rend chaque tuile avec un sprite gpu, donc un appel gpu à chaque fois. Et de toutes façons même sur la vieille sdl 1 on peut faire des choses beaucoup plus intéressantes en programmant soi-même le moteur graphique afin de programmer les vrais effets graphiques des jeux à tile, car là on va avoir un rendu ultra-pauvre.


    - il n'y a qu'un seul tilesheet donc on va être coincés pour le chargement des niveaux, l'animation des tuiles, les changements d'environnement, etc.


    - il y'a une confusion entre la grille de tuiles et la grille des objets. Ca n'est pas du tout les mêmes, ce sont des tableaux différents. Là la gestion des pnj ou des collisions va être une horrible galère et la transition entre deux maps va être tout bonnement impossible.


    - un éditeur de maps ne torture pas le graphiste à lui faire dessiner chaque tuile à la main. Il permet de dragger des objets qui sont convertis en tuiles en fonction de l'environnement. (dans le cas de super mario les maps ne contenaient qu'une liste d'objets, qui étaient convertis en blocs 16*16 au chargement de map, et ces blocs étaient eux-mêmes convertis en tuiles 8*8 au fil du scrolling)


    - la fonction "Affine" pour les collisions c'est du calcul de gros bourrin gaspilleur de cpu. Normalement on utilise l'algo de collision aabb.


    - puisqu'on a un éditeur de maps, autant en profiter pour se simplifier la vie et encoder directement du binaire qu'on va charger en une seule ligne de code au lieu de s'embêter à parser du ascii



    Voilà... je ne jette pas la pierre à l'auteur, toutes ces erreurs là je les ai faites aussi. J'avais fait un tuto à l'époque, et puis quand j'ai vu comment ils bossent chez les pros je l'ai viré du web.

    Sinon pour ceux que ça intéresse d'en savoir plus:

    - sur windows 8 et sans doute d'autres os smartphone, les tuiles sont rendues directement par la carte vidéo, comme sur les consoles japonaises, on voit mieux comment ça fonctionne

    - pour les fans du rendu software, les tuiles en rendu cpu ça se rend exactement comme font les émulateurs, pixel par pixel avec un moteur graphique basé sur les scanlines, et les sprites également
    nous devons inventer la langue de feu pour crâmer la langue de bois

  12. #12
    Membre habitué
    @jean_kevin_musclor ce commentaire arrive un peu tard mais n'hésite pas toi, a nous faire un tuto pas à pas avec une méthode simple et très pédagogique du tilemaping, scrolling, collision, etc... fait dans les studio de jeux vidéo comment eux code t-ils leurs jeux je suis très demandeur comme beaucoup aimeraient savoir comment on fait chez les pro.

    Malheureusement mois qui suis débutant je doit me contenté de ce que je trouve sur le net et faire confiance comment faire autrement.

    En tous cas pour l'instant sur internet le seul qui a daigné nous donné un peu de son savoir de son temps pour nous en faire profiter a des gens comme moi c'est LittleWhite(Fvirtman).

    Je pense maintenant que si il devait refaire aujourd'hui un tuto sur le tilemapping sans doute si prendrait-il autrement.

    Merci pour son tuto.

  13. #13
    Candidat au Club
    Java
    Bonjour a tous ,

    J'ai juste une petite question , est-ce que cette methode est aussi valable pour le langage java ?
    J'utilise Eclipse pouvez vous m'aider ?

    Merci

  14. #14
    Rédacteur/Modérateur

    Bien sur, le tile-mapping est langage-agnostique et IDE-agnostique aussi d'ailleurs.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  15. #15
    Candidat au Club
    Merci j'ai trouve le moyen

###raw>template_hook.ano_emploi###