Journal Men Are Ants : Réflexion sur un passage 2D à 3D

Posté par  .
Étiquettes : aucune
0
5
oct.
2006
Bonjour,

Une dépeche est parue il y a une semaine ou deux au sujet du jeu Men Are Ants dont je suis le développeur.

Il a été unanimement remarqué que le jeu était d'une beauté discutable.

Je réflechissais depuis quelques temps à un éventuel passage à un jeu en 3d, et en fait j'ai du mal à construire ma réflexion, dans le sens où je n'ai jamais pratiqué l'opengl.

C'est pourquoi je fais cet article dans l'unique but d'obtenir des avis sur cette question.

Je suis mitigé sur plusieurs points. Le jeu utilise actuellement SDL, j'ai vu la présence d'un flag SDL_OPENGLBLIT qui, sur le coup m'a donné espoirs, mais lorsque je vis qu'il était complètement déconseillé je fut fort déçu. Alors la solution serait d'utiliser SDL_OPENGL en devant réécrire les fonctions des classes images et sprite, en espérant que ça ne ralentisse pas. Ceci bien sur pour ce qui est des menus etc.
Ce qui est bien c'est que j'ai conçu le jeu de telle façon que l'interface graphique est indépendante de la gestion réelle du jeu (dialogue entre client et serveur qui parle de cases, le serveur qui se fout royalement de la façon dont c'est affiché, etc).

En tous cas malgrès ça ça demande quand même une grosse part de réécriture du client, ce qui peut être fastidieux, bien que pour mon propre développement je pense qu'il peut être intéressant de connaître OpenGL et de faire le jeu avec.

Bon j'attends, si vous le voulez bien, des opinions sur ce sujet, des avis objectifs et constructifs, qui pourraient m'aider à prendre la bonne décision, car pour le moment ne pouvant me replier que sur moi même je ne sais pas quel est le bon choix.
Bien sur si la conclusion est d'utiliser OpenGL et que quelqu'un souhaite m'aider, ça serait avec le plus grand plaisir:).
  • # Le lien

    Posté par  . Évalué à 10.

    Pour ceux ne sachant pas de quel jeu il s'agit, voici son site : http://menareants.coderz.info
  • # l'opengl a rendez-vous avec la rage mobility m1, mais la M1 n'est pas là

    Posté par  . Évalué à 3.

    Je vais te donner une réponse extrêmement égoïste : ne pouvant faire
    tourner correctement OpenGL à cause d'une carte graphique pour le
    moins faiblarde sur ce point (rage mobility M1 8mo), je te dirais :
    «non, n'utilise pas OpenGL !»
    Mais bon, comme interface et moteur de jeu sont séparés, c'est pas
    vraiment un problème ;)
    • [^] # Re: l'opengl a rendez-vous avec la rage mobility m1, mais la M1 n'est pa

      Posté par  . Évalué à 1.

      Ben il est également possible que je fasse un fork du client actuel avec OpenGL, en continuant à maintenir la version SDL.
      • [^] # Re: l'opengl a rendez-vous avec la rage mobility m1, mais la M1 n'est pa

        Posté par  (site web personnel, Mastodon) . Évalué à 1.

        Je dirais même plus:

        à ce que j'ai cru comprendre, c'est un jeu réseau, donc comme t'as bien séparé interface et client réel, ce qui peut être cool, c'est que les 2 versions du client soient toujours compatibles en réseau. C'est à dire que c'est à chacun de choisir la version (2D ou 3D) qu'il veut utiliser, mais que ça n'empêche pas un client 3D et un client 2D de jouer ensemble (évidemment cela implique que le fait d'être en 3D n'apporte pas de fonctionnalités supplémentaires). Etant donné que ta partie client est en fait générique et que seul l'affichage changera, ça ne devrait pas poser de problème.
        Voilà pour mon opinion.

        Ce que ça implique pour ta question, c'est que le fait de te mettre à la 3D n'enterrera absolument pas la version 2D. Tu pourras développer les 2 en parallèle. Mieux même, si tu fais une lib client bien documentée, tu devrais pouvoir passer sans grosses difficulté le flambeau à quelqu'un pour une des parties. Par ex, tu peux dév la partie 2D et trouver qqun pour la 3D. Ou l'inverse, te mettre au client 3D et trouver des gens pour continuer à maintenir le client 2D.

        Et ainsi tu touches en même tps les acharnés de la 3D et les petites configs.
        Plouche.

        Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

        • [^] # Re: l'opengl a rendez-vous avec la rage mobility m1, mais la M1 n'est pa

          Posté par  (site web personnel) . Évalué à 6.

          Mouais, enfin vouloir faire évoluer parallèlement deux clients graphiques (2D et 3D), c'est un peu une perte de temps, surtout quand on a une équipe de 1 personne pour faire tout ça.

          Haypo
          • [^] # Re: l'opengl a rendez-vous avec la rage mobility m1, mais la M1 n'est pa

            Posté par  . Évalué à 3.

            Alors effectivement, c'est ce que je disais dans mon commentaire précédent, le developpement des deux en même temps. Effectivement, l'API du protocole ne change pas, et je ne pense pas qu'il soit impossible de faire une grosse feature 3d impossible de porter sur le client 2d.

            Pour Victor, continuer sur la version 2D en parallèle ne me serait aucunement difficile, si la façon d'afficher les choses est différente est indépendante du corps, il ne me resterait que peu de choses à faire concernant l'affichage en 2D.

            Par contre je pense que dans ce cas là, comme une partie concerne du client concerne tout de même autre chose que l'affichage et serait commune aux deux parties, je vois deux choix devant moi :
            - Soit je fais en effet une lib utilisée par les deux clients, ce qui faciliterait effectivement la création externe d'autres clients.
            - Soit je fais un gros define USE_OPENGL qui, activé utilise l'affichage 3d, desactivé utilise l'affichage 2d. C'est plus simple d'un coté pour moi mais ne servirait pas à la création d'autres clients. Alors après, entre un client 2d et un client 3d, je ne vois pas trop ce qu'il y a comme autre type de client à faire (un console ? vous pouvez utiliser telnet :p le protocole est textuel (voir le fichier API)). Pour ce qui concerne les menus je pense que ça ne change pas, c'est juste les fonctions des classe de sprite/image qui utiliseraient SDL ou OpenGL, et après ce qui est affiché pendant le jeu là serait la chose qui varierait complètement.

            En tous cas, le soucis aussi c'est que si j'ai à faire tout ce boulot, il faudrait que le jeu ait des utilisateurs. Or pour le moment, il ne réunit qu'une dizaine d'habitués. Je n'ai pas envie de me compliquer la tache pour rien. Si c'est uniquement dans le but d'apprendre, je passe à une version OpenGL sans me soucier de la version SDL et une fois fini basta. Mais ce n'est pas ce que je veux, je pense vraiment qu'on peut faire quelque chose de ce jeu, mais après faut avoir des joueurs...
  • # des graphistes

    Posté par  . Évalué à 10.

    Avant de chercher des solutions techniques, il faut que tu trouve une espece rare dans le domaine du jeu libre. Un bon graphiste.
    Tu aurra beau passer ton code en 3D. Si tes modeles sont moches, le jeu serra toujours aussi moche.
    On peut faire des tres beaux graphisme avec un jeu en 2D pure, tile based comme le tien.
    • [^] # Re: des graphistes

      Posté par  . Évalué à 4.

      Le problème actuel est que le rendu est assez étrange : les cases étant carrés, pour une bonne perpective il faudrait faire une vue de dessus, or ce n'est pas le cas.
      En outre je connais quelqu'un actuellement qui a la maitrise de blender et qui fait un jeu plus ou moins beau (même si très mal programmé) intitulé Gnu Total War, et qui m'a proposé sa contribution.

      Après bien sur il faut voir si ça vaut la peine d'effectuer un travail considérable pour avoir au final un jeu pas forcément spécialement plus beau.
      Alors c'est bien pour ça que je demande un avis :).
      • [^] # Re: des graphistes

        Posté par  . Évalué à 4.

        Si ton pote maitrise blender, il peut te faire les graphisme en 3D, en faire une image vue en perspective et tu t'en sert comme sprite, non ?
  • # Raz le bol de l'OpenGL

    Posté par  . Évalué à 8.

    Si l'intérêt d'un jeu est conditionné par le fait qu'il est en 3D, j'ai bien peur que ça ne vole pas haut. Si seuls les graphiques en 3D sont beaux, ça n'a pas de sens.

    Ce qu'il manque, à mon avis, à ce jeu, c'est un graphiste qui retravaille les images pour en faire un tout cohérent. On peut aussi faire des choses très moches en 3D. Le fait que le rendu final soit sous la forme d'une image en 2D n'empèche pas le graphiste de travailler les modèles en 3D.

    Les jeux commerciaux comme Civilisation, Sim-City 2000, Settlers et pleins d'autres ont fonctionnés en 2D sans vraiment de critique du graphisme.

    Pratiquement tous les jeux qui sortent en ce moment sous Linux sont des jeux en 3D qui posent beaucoup de problèmes à énormément de personnes. Personnellement, je n'installe jamais les jeux qui sont en 3D parce que le support est beaucoup trop variable; d'une machine à une autre, d'une révision de X à une autre, d'une configuration ou d'une distribution à une autre.
    • [^] # Re: Raz le bol de l'OpenGL

      Posté par  . Évalué à 3.

      Ben ma réflexion s'est posée là dessus pour deux raisons :

      D'une part, lorsque quelqu'un fit une dépeche sur ce jeu il y a deux semaines, la principale critique fut ses graphismes. Certes je n'ai pas fais de recherche de contributeurs graphistes, mais je me demandais si le fait de passer en 3d arrangerait les choses. Tu mets un bemol là dessus, et sur le fond je suis entièrement d'accord. J'ai été attristé que beaucoup de personnes étaient rebutés à jouer sous prétexte que c'était pas spécialement beau. Celles qui ont pris la peine d'y jouer ont en revanche pris du plaisir (d'après elle), je prends moi même beaucoup de plaisir à le developper et à y jouer. Je regrette qu'un jeu soit d'abord jugé sur ses graphismes avant d'être jugé sur ses fonctionnalités.

      D'autre part, je pense que si jamais je suis amené à le rendre en 3d, ça peut être interessant pour mes compétences de savoir utiliser OpenGL. Bien sur il ne faut pas que ça se conditionne à ça.

      Je me réjouie dans un sens de cette critique, en me disant qu'il reste des gens qui se foutent des graphismes du moment que le jeu est fun.
      • [^] # Re: Raz le bol de l'OpenGL

        Posté par  (site web personnel) . Évalué à 6.

        Je pense que pour faire un truc jolie en 3D tu va te faire bien plus chier qu'avec de la 2D. La différence, c'est le graphiste.

        En plus, la 3D sous linux est peu développé. Je te conseillerais comme les autres de rester en 2D ce qui permet d'utiliser le jeu avec des machines moins puissantes et de bien utiliser ton graphiste.

        Si tu veux absolument passer en 3D, ne part pas d'opengl, utilise plus un des zillions moteurs de jeu 3D (comme ogre ou autre).

        "La première sécurité est la liberté"

    • [^] # Re: Raz le bol de l'OpenGL

      Posté par  . Évalué à 8.

      Les jeux vidéos c'était mieux avant.
    • [^] # Re: Raz le bol de l'OpenGL

      Posté par  . Évalué à 3.

      Y'a qu'a voir Broodwar qui est toujours vendu, supporté par Blizzard, et dont les serveurs sont toujours plein de gens de tous pays.
      Pas besoin de 3d pure pour faire un jeu beau, la 2d ou 3d iso suffit avec un gameplay excellent ^^.
  • # 3D ?

    Posté par  . Évalué à 2.

    He bien, je ne pense pas que passer en 3D améliore les choses.

    Il n'est pas plus facile de concevoir des graphismes en 3D qu'en 2D non? D'autant plus que si on les conçoit en 3D, on peut en faire un image 2D sans problèmes.
    • [^] # Re: 3D ?

      Posté par  . Évalué à 4.

      Ainsi que dit précédement, un autre soucis réside dans le fait que les cases sont orthogonales, et que la perspective voudrait que ça soit une vue de dessus. Or ce n'est actuellement pas le cas. Pourquoi pas ? Ben on voit rien vue de dessus :)
      • [^] # Re: 3D ?

        Posté par  . Évalué à 3.

        Alors pourquoi pas une apparence de 3D isometrique avec des tiles en parallelogramme ? Tu l'as toi-meme suggere sur ton site ! C'est en tout cas ce qui me parait le mieux, si tu veux changer quelque chose.
        • [^] # Re: 3D ?

          Posté par  . Évalué à 2.

          Hum c'est vrai que je pourrais concentrer mes efforts là dedans, ce qui constrituerait une modification moins importante. J'y ai déjà pensé mais ça pose un problème :

          Actuellement, les cases sont des carrés, donc le nomre de cases par lignes est constant. Or avec la 3d isométrique, cela ne sera plus vrai, et je fais des tests à nombreux endroits pour vérifier si un objet ne sort pas de la map, à la fois coté client que serveur. Donc là ça m'obligerait à un autre type de réécriture.

          Note: tiens je viens de voir que sur l'onglet opera avec le site linuxfr que j'avais rédigé ce commentaire mais que j'avais oublié de le poster, étant passé à autre chose. Oui je trouve ça drole, et je dois bien être le seul.
          • [^] # Re: 3D ?

            Posté par  . Évalué à 1.

            Et en 3D, le probleme ne se pose pas ?
            • [^] # Re: 3D ?

              Posté par  . Évalué à 2.

              Non car en 3d on garderait une carte rectangulaire, avec le nombre constant de cases par ligne.
          • [^] # Re: 3D ?

            Posté par  . Évalué à 1.


            [...] je fais des tests à nombreux endroits pour vérifier si un objet ne sort pas de la map [...] Donc là ça m'obligerait à un autre type de réécriture.


            Je n'ai pas regardé ton code, mais est-ce qu'il ne suffirait pas de tester le signe d'un produit vectoriel ?
  • # Verdict

    Posté par  . Évalué à 2.

    Bonjour,

    Après les elements que j'ai entrevue ici, je vais garder la version SDL du jeu, mais en faisant subir néanmoins une "légère" transformation: utiliser des parallelogrammes pour faire de la 3D isométrique.

    Merci de vos conseils.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.