Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vue isométrique

2D ou 3D?

    13 octobre 2010 à 20:06:54

    Bonjour,

    J'ai décidé de me lancer dans un jeu en vue iso. Mais je ne sais pas encore comment je vais m'y prendre exactement. J'aurais donc besoin de vos conseils :)

    2 grandes questions:
    1) Est ce que je fais tout en 2D, ou décors 2D et persos 3D?
    2) C'est un jeu de stratégie. En temps réel ou au tour par tour?

    1) J'ai vu pas mal de choses sur le net, surtout des débats au sujets des appellations 2D et 3D^^
    Mais je n'ai pas trop compris comment ça fonctionnait exactement:
    - Pour faire en 2D, il faut créer le personnage en 3D, puis enregistrer des vues 2D du perso (combien?). C'est ça?
    - Et pour faire en 3D??? On peut intégrer une image 3D à un programme Java??? Enfin là je sais pas du tout comment ça marche. Si quelqu'un peut m'expliquer ou même me rediriger vers une page du web, parce que j'ai pas trouvé^^

    2) Le tour par tour semble le plus facile. Mais en temps réel? La 3D est obligatoire? Je vois mal un STR en 2D en fait...

    Voilà, si quelqu'un pouvait m'éclairer sur la programmation d'un jeu iso en Java... merci! ;)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 octobre 2010 à 20:27:01

      1) c'est toi qui choisi, tu peux tout faire en 3D avec une camera à angle fixe même.
      2) je ne pense pas que l'un soit plus facile que l'autre, tour par tour veut dire stopper la logique mais continuer le rendu, pas forcément simple.

      et oui on peut faire de la 3D en java, avec openGL via JOGL ou avec un moteur comme jmonkey.

      il y a aussi la solution des librairies native, j'utilise ogre par l'intermédiaire de JNI mais la contrainte est qu'il faut aussi connaitre le C++.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 octobre 2010 à 20:31:08

        1 et 2, c'est tes choix. Y a pas de solution mieux qu'une autre, tout dépend de ce que tu veux faire.

        Citation

        Pour faire en 2D, il faut créer le personnage en 3D, puis enregistrer des vues 2D du perso (combien?). C'est ça?


        C'est une possibilité, pas la seule. Tu peux très bien dessiner tous les sprites à la main. Quant à savoir combien, là aussi ça dépend de toi. Tu peux n'en avoir que 4 (ex : en direction de chaque point cardinal) ou 8 (en rajoutant les diagonales), etc.

        Citation

        Mais en temps réel? La 3D est obligatoire?


        Que ce soit par tour ou en temps réel, le choix de la 2D ou de la 3D n'a rien à voir.

        Citation

        Je vois mal un STR en 2D en fait..


        La 3D dans les STR est pourtant relativement récente...
        • Partager sur Facebook
        • Partager sur Twitter
          14 octobre 2010 à 17:54:35

          Ok... je commence à comprendre et effectivement vous ne pouvez pas me répondre...
          Je vais continuer à me renseigner, merci ;)
          • Partager sur Facebook
          • Partager sur Twitter
            17 octobre 2010 à 11:58:39

            Salut, réalisant moi même en RPG en 2D Isométrique, je peux surement t'éclairer un peu :) :

            Est ce que je fais tout en 2D, ou décors 2D et persos 3D?

            Là, il y a vraiment plein de choix, tu peux par exemple faire tout tes objets, personnages, ... en 3D, puis les exporter en PNG, Sinon tu peux faire tout en 2D, ou encore tout en 3D. Mais attention, l'idée des objets 2D et Personnages 3D n'est pas très bonne car il y a beaucoup de chances pour que les deux styles graphiques s'opposent, ce qui fait que les graphismes de ton jeu risquent de ne pas bien rendre. Personnellement, si tu te débrouille pas mal dans la modélisation 3D, je te conseille de tout faire en 3D et d'exporter en 2D, car il est quand même plus simple de réaliser un moteur isométrique en 2D, menfin après ça dépend aussi de tes compétences en programmation et de ton niveau en dessin, si tu dessine très bien, fais tout en 2D, si tu dessine bof bof et que tu modélise plutôt bien, fais en 3D puis exporte en 2D.

            C'est un jeu de stratégie. En temps réel ou au tour par tour?

            Franchement, les RTS au tour par tour c'est dépassé, c'est lassant et ça coupe toute l'action du jeu, je te conseille en temps réel : c'est beaucoup plus actif et intéressant.

            J'ai vu pas mal de choses sur le net, surtout des débats au sujets des appellations 2D et 3D^^
            Mais je n'ai pas trop compris comment ça fonctionnait exactement:
            - Pour faire en 2D, il faut créer le personnage en 3D, puis enregistrer des vues 2D du perso (combien?). C'est ça?
            - Et pour faire en 3D??? On peut intégrer une image 3D à un programme Java??? Enfin là je sais pas du tout comment ça marche. Si quelqu'un peut m'expliquer ou même me rediriger vers une page du web, parce que j'ai pas trouvé^^

            Comme je l'ai dit dans le 1, je te conseille de faire ton jeu en 2D, et de faire toutes tes images en 3D, comme ça tu les fais une seule fois et t'as juste a faire une rotation pour l'avoir dans les 8 directions (Autant en faire 8 que 4, suffit juste de faire une rotation a l'objet). Si tu fais en 3D, ben tu modélise ton objet, tu l'exporte dans un format et ton moteur charge ton objet et l'affiche. Mais après tu te tape toute les complications de la 3D ... Et vu que t'as pas l'air très très calé en 3D, je te conseille de faire un moteur 2D ^^ (Cf : Une image 3D ^^ )

            Le tour par tour semble le plus facile. Mais en temps réel? La 3D est obligatoire? Je vois mal un STR en 2D en fait...

            Le tour par tour est certes plus facile car il y a des problèmes qu'on rencontre dans le temps réel qu'il n'y a pas dans le tour par tour (par exemple quand on lance un sort et que l'ennemi ciblé se déplace (ce qu'il ne peut pas faire dans un tour par tour), il faut que la boule de feu le suive, et encore ça c'est pas le plus important) Et comme l'a dit Enax, avant les RTS étaient en 2D... Et aprés c'est à toi d'innover, c'est pas parce qu'il n'existe pas des jeux de ce type qu'il ne faut pas en faire !

            Voilà, j'espére avoir répondu à tes question, et Bonne chance pour ton jeu ;)
            • Partager sur Facebook
            • Partager sur Twitter
              17 octobre 2010 à 13:13:07

              Alors j'avais fait mes choix avant de te lire, et j'ai fait comme t'as dit: tout en 2D et STR (c'est vrai que j'ai essayé d'imaginer le jeu, et tour par tour c'est pas terrible^^)

              Je viens de commencer à programmer. Je fais pour l'instant tout ce que je ne connais pas: tout ce qui touche à l'iso. Donc j'ai quelques petites questions, si t'as fait un RPG tu devrais pouvoir y répondre :)

              J'ai crée mon plateau de tiles iso.
              1) comment tu t'y prends pour la transparence? Quand un perso passe derrière un arbre par exemple?
              Je précise que j'ai l'intention de placer les décors indépendamment des tiles, avec des coordonnées (arbres, rochers, ...)

              2) tu dis 8 directions pour les persos. C'est suffisant dans le cas d'un STR, où le perso peut tourner à 360°?

              3) J'ai pas encore cherché et je vais certainement trouver, mais si t'as une formule pour retrouver la case suivant le clic je suis preneur...

              Voilà, j'ai d'autres questions mais je vais chercher tout seul avant de les poster ici. Je vous tiens au courant ;)

              merci!!

              edit: j'ai trouvé ton topic^^
              http://www.siteduzero.com/forum-83-500 [...] a-clique.html
              je le lis ;)

              edit 2: j'ai vu que tu avais fait ton plateau carré (j'entends pas là que toutes les tiles de gauche sont alignés les unes en dessous des autres)
              J'ai pas trop réfléchis, j'ai toute de suite pensé à le faire comme ceci: (les images sont pas à moi hein, c'est pour tester)
              http://www.casimages.com/img.php?i=101017031520371611.png
              Une suggestion sur la forme de la map?
              • Partager sur Facebook
              • Partager sur Twitter
                17 octobre 2010 à 17:32:15

                1) Moi j'ai décidé de pas trop me compliquer la vie dans mon RPG et que chaque objet sois relié aux tiles a cause des collisions, mais a l'avenir je ferais surement comme toi, mais pour l'instant j'ai pas très envie de m'embêter avec les collisions. En fait c'est très simple, ta boucle d'affichage devrait ressembler à ça :
                for (int tileY = camera.getPosY(); tileY < camera.getPosY() + camera.getHeight(); tileY++, y += HAUTEUR_TILE / 2) {
                     for (int tileX = camera.getPosX(); tileX < camera.getPosX() + camera.getWidth(); tileX++, x += LARGEUR_TILE) {
                         // On affiche la tile actuelle du sol 
                     }
                }
                
                for (int y = 0; y < this.getHeight(); y++) {
                     for (int x = 0; x < this.getWidth(); x++) {
                         if (objets.get(y, x) != null) {
                             // on affiche l'objet
                         }
                
                         else if (personnage.getPositionX() == x && personnage.getPositionY() == y) {
                             // On affiche le personnage
                         }
                     }
                }
                


                Ça devrait marcher niquel tant que tu ne rajoute pas de l'altitude aux tiles, auquel cas il faudra penser à un autre système (moi j'ai pas de problèmes avec ça vu que je fais du case par case) vu que quand tu rajoute des tiles plus élevées que d'autres, elles seront sensées cacher ce qu'il y a derrière, ce qu'elles ne feront pas avec cette technique.

                2) Oui c'est largement suffisant, de toute façon tu ne peut pas en faire plus en isométrie, si tu veux en faire plus (carrément inutile) faudra t'orienter vers des tiles Hexagonales ;)

                Pour la forme de la map je te conseille une map comme moi, carrée, parce que je trouve pas très logique d'avoir des bouts de vide dans un jeu ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  17 octobre 2010 à 18:39:33

                  ok merci :)
                  Je vais regarder pour la transparence.

                  Sinon pour la forme de la map j'ai essayé les 2 versions... soit je fais quelques chose qui faut pas, soit je préfère largement ma version, ça fait beaucoup plus 3D. (c'est plus de l'iso dans le 2ème cas, mais je me suis peut être trompé quelque part)
                  Regarde, j'ai fait un montage (hésite pas à zoomer)
                  http://nsa23.casimages.com/img/2010/10 [...] 422200710.png



                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 octobre 2010 à 20:12:19

                    De toutes façon, dans les deux cas t'es jamais censé voir les bords, donc du coup ça rend strictement pareil, et le 2éme cas est beaucoup plus simple à faire. Et tu t'es trompé lors du montage de la 2éme image (t'as fait 2 fois plus de tiles en largeur) ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 octobre 2010 à 20:18:44

                      Hum... effectivement, mes tiles étaient superposées, c'est pour ça que ça faisait moche :-°

                      Je vais donc voir quel modèle j'utilise ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 octobre 2010 à 9:14:07

                        J'ai vu sur ton post que tu utile des couleurs pour déterminer la tile cliqué.
                        Perso j'ai fait comme a dit elmh, avec des cases extends Polygon. Non seulement c'est beaucoup plus simple que ta méthode, mais en plus c'est nettement plus optimisé... charger l'image à chaque fois c'est pas génial^^
                        Alors qu'il y a une méthode contains() toute faîtes ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 octobre 2010 à 9:19:02

                          Oui, mais j'avais fait ça aussi car je gérais tout mon jeu avec un masque, la souris sur les arbres, bâtiments etc... Mais je te conseille de faire avec contains() pour les tiles (comme tu le fais) et de faire de simple AABB pour les clics, c'est ce que j'ai fini par faire aussi ;)
                          Ah oui et aussi, si tu fais des collisions entre 2 objets, ne fais pas de collision AABB, c'est juste la tile qui doit faire la collision, je te laisse réfléchir pourquoi, car j'ai vraiment pas envie de faire un dessin ^^ . Et d'ailleurs si tu veux faire ton jeu simplement, je te conseille Slick, une lib très bien faite, je vais surement changer mon moteur de jeu pour qu'il utilise Slick :)

                          Et d'ailleurs je ne chargeais pas l'image a chaque fois, a la fin, j'avais fait un masque qui s'auto générait dans certains cas, et je récupérais la couleur, mais c'était compliqué et la génération du masque faisait laguer.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 octobre 2010 à 9:58:56

                            J'ai pas tout compris :-°

                            Citation

                            et de faire de simple AABB pour les clics


                            AABB, c'est quoi?^^

                            Là je rencontre un problème avec ma map.
                            Déjà, sur ta map, il y a une ligne sur 2 avec une tile en moins non? Parce que sinon ça dépasse d'un côté. J'ai donc un problème avec mon tableau multidimensionnel. De plus, pour gérer les collision, j'avais l'intention de me reporter à un plateau droit. Mais avec nos plateaux, je n'arrive pas à m'imaginer le même plateau droit. Par exemple, il n'y a pas de tile 1,0.
                            Parce que l'idéal serait, par exemple pour les déplacement, de gérer les coordonnées dans un plateau de carrés, et seulement au moment de l'affichage l'afficher en vue iso, non? Tu fais comment?

                            merci ;)


                            Edit: je suis pas très clair, et ce serait pas plus mal d'avoir d'autres avis: je vais créer un nouveau topic.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 octobre 2010 à 17:31:04

                              Pour AABB tu verras quand tu seras au collisions, tu iras voir le tuto des collision de Fvirtman ;)
                              Sur ma map, la tile en moins qui fait vide c'est juste que j'avais pas dessiné mes tiles a partir de x = -LARGEUR-TILE / 2 et y = -HAUTEUR-TILE / 2
                              Si tu démarre a afficher les tiles comme ça il n'y aura pas de vide ;).
                              Pour gérer les collisions, surtout pas de plateau droit, les collisions se font par tiles isométriques (en forme losange ou la taille est divisée par 2) . Oui mais c'est fait bon, tu sais que dans la numérotation les chiffres pairs vont avec les pais et les impairs avec les impairs. Si jamais tu rencontre un probléme lorsque tu vas commencer ton jeu, si tu vois 1-0 ou 9-8 tu sauras d'où vient le probléme :)
                              Donc non, penser comme si c'était droit est une très mauvais idée.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 octobre 2010 à 17:50:10

                                Pas trop le temps de réfléchir à ce que tu m'a dit, mais juste une remarque: j'ai lu le tuto sur les collisions.
                                Regarde en bas de cette page (tout en bas), il dit tout le contraire de toi :p
                                http://www.siteduzero.com/tutoriel-3-2 [...] tml#ss_part_3
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 octobre 2010 à 17:57:05

                                  Oui mais non. J'ai déjà vu et je sais qu'il a faux, j'ai fait beaucoup de tests et je peux te dire que tu doit imaginer la plupart des choses en isométrie. Mais là où il le dit, c'est pour un point dans un rectangle, ce qui est vrai. Mais pour beaucoup d'autre chose il faudra penser isométrie, notamment pour les collisions entre les objets.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 octobre 2010 à 18:06:22

                                    Moé... une solution serait pourtant d'entourer tous les objets d'un rectangle, en pensant droit. Et après, très simple de savoir si il y a collision.
                                    Idem pour les déplacements:
                                    - les Tiles sont rectangulaires, seul l'effet iso les transforme en rectangle. Une unité au centre d'une tile, mettre donc autant de temps à aller en haut qu'à gauche de cette Tile. Pourtant, si tu pense iso, le chemin pour aller en haut est 2 fois plus court? Pas d'accord?

                                    Après je sais pas, j'y connais rien, mais ça me semble logique. Et si Fvirtman, c'est qu'il doit s'y connaitre un minimum...


                                    edit: je me renseigne également sur Slick.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 octobre 2010 à 20:45:28

                                      Bon, vu que tu ne comprends pas j'ai fait 2 montages :

                                      Ce que tu veux faire :


                                      Image utilisateur


                                      Tu vois bien que là, ton jeu va détecter une collision alors qu'il n'y en a aucune !


                                      Ce que je te dis de faire :


                                      Image utilisateur


                                      Et la ça va détecter une collision uniquement si il y en a vraiment une :)



                                      Citation : Javaa

                                      - les Tiles sont rectangulaires, seul l'effet iso les transforme en rectangle. Une unité au centre d'une tile, mettre donc autant de temps à aller en haut qu'à gauche de cette Tile. Pourtant, si tu pense iso, le chemin pour aller en haut est 2 fois plus court? Pas d'accord?



                                      EDIT : Non, pas d'accord. Si ta tile fait 40 pixels de hauteur et 80 de largeur et que ton personnage est au centre de la tile, il lui faut 20 + 20 pixels pour aller en haut et 40 + 40 pour aller a gauche (en partant du principe qu'il se replace au milieu de la nouvelle tile) Donc il mettra 2 fois plus de temps. En plus ce que tu dis ne veux strictement rien dire. Les tiles sont des losanges ou la taille est divisée par 2, elles ne sont pas rectangulaires. Ce n'est pas un "effet iso" c'est l'isométrie. Si tu continue a penser de la sorte, fais de la 2D Simple car là tu penses que l'isométrie c'est juste des tiles aplaties a la place des carrés, pis le reste osef. La façon dont tu imagine l'isométrie, c'est comme si tu disais que la 3D t'imagine que c'est droit, mais qu'il y a une simple impression de profondeur. Alors qu'il y a de la profondeur et tous les systèmes qui s'y rattachent.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 octobre 2010 à 10:19:07

                                        Alors déjà merci de prendre le temps d'expliquer à quelqu'un qui n'y connait rien en isométrie, très beaux schémas^^

                                        En fait, c'est la faute de Fvirtman (si, si, c'est sa faute :p ) si je m'obstine à penser droit^^ J'ai vu ça dans son tuto, donc je me suis dit qu'il fallait faire comme ça, c'est tout
                                        Donc ok pour les collisions, je comprends mieux.
                                        Donc:
                                        - format de la map, ok.
                                        - techniques de collisions, ok.
                                        - trouver le numéro d'une tile, ok.

                                        J'ai installé Slick, ainsi que son éditeur de map, Tiled.
                                        Tu me conseilles vraiment de les utiliser ?(en sachant que je ne sais pour l'instant pas du tout m'en servir)
                                        Tu t'en sers pour faire quoi, ça t'apporte quoi en plus?
                                        Tu comptes utiliser l'éditeur? (qui ne crée pas de map carré, à première vue)

                                        Voilà, je pense que je pourrais ensuite commencer à vraiment coder le jeu :)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          20 octobre 2010 à 10:29:10

                                          Ben Slick est vraiment très pratique pour réaliser des jeux, beaucoup d'options simples qui permettent de faire des choses facilement :) Mais chez moi le portage de mon jeu sous Slick est un vrai carnage, mais ça commence a venir :) (petit à petit :euh: ) . Pour Tiled laisse tomber, crée ton propre éditeur de map, ça sera bien mieux pour créer tes maps, car je n'aime pas du tout Tiled, vaut mieux créer ton éditeur personnel pour ton jeu qui te permettra de faire tes maps rapidement plutôt que te souler a paramétrer Tiled pour ton jeu a chaque fois, de plus va falloir que tu t'adapte au format des maps de Tiled, alors rien ne vaut mieux qu'un éditeur fait maison qui sera déjà 100 % paramétré pour le jeu :D

                                          D'ailleurs, je pense créer un tuto sur l'isométrie dans les jeux, je vais essayer de voir si ça pourrait intéresser des gens :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            20 octobre 2010 à 12:21:13

                                            ok. Suis d'accord pour l'éditeur de map, en plus c'est pas compliqué à faire une fois le jeu crée.

                                            Donc je vais voir pour Slick... mais comment t'as appris à t'en servir? un tuto?

                                            Citation

                                            D'ailleurs, je pense créer un tuto sur l'isométrie dans les jeux, je vais essayer de voir si ça pourrait intéresser des gens :)



                                            J'y avais pensé lol
                                            T'as déjà les shémas :p
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              20 octobre 2010 à 12:24:23

                                              Pour Slick va sur le site officiel, et va dans Documentation Wiki. Pour l'installer va voir ici Si tu as des problémes a l'installation, contacte moi par MP, on va essayer de pas trop pourrir le sujet non plus x)

                                              Voilà j'ai fait un post ici :)

                                              EDIT : J'ai changé le lien ^^
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                20 octobre 2010 à 12:38:24

                                                Pour l'installation c'est ok.
                                                Je vais voir la doc. (édit: en français, j'avais pas vu :D )

                                                Ton lien ne fonctionne pas, ça affiche: Vous n'avez pas le droit d'éditer ce sujet.

                                                Et suis d'accord pour les MP lol
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Vue isométrique

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown