Le moteur de Doom 3 placé sous GPL v3

Posté par  . Édité par Nÿco, Davy Defaud, Florent Zara, Benoît Sibaud et baud123. Modéré par patrick_g.
42
23
nov.
2011
Jeu

Quelques mois après la sortie du jeu Rage et de son moteur id Tech 5, id Software a publié les sources du moteur id Tech 4 sous licence GPL v3. Cet effort est dû principalement à John Carmack, fondateur d’id Software et grand fan de la GPL, et Timothee Besset, auteur des divers portages sous GNU/Linux des moteurs id Tech. Contrairement aux anciens moteurs écrits en C, celui‐ci est en C++.

Pour la petite histoire, la publication de ces sources a subi un contretemps, car un des algorithmes utilisés, appelé Carmack’s reverse, était lié à un brevet déposé par Creative Labs. Cet algo a d’ailleurs été découvert par John Carmack indépendamment de l’algo originel. Il a donc du réécrire cette partie du code pour avoir l’accord de leur département juridique.

Tant qu’on y est, si vous voulez vous plonger dans le code source de Quake 1 ou 2, Fabien Sanglard en a fait de très bonnes revues :

Aller plus loin

  • # Carmack's reverse

    Posté par  . Évalué à 7.

    A en croire le readme sur le github :

    The Doom 3 GPL source code release does not include functionality enabling rendering
    of stencil shadows via the “depth fail” method, a functionality commonly known as 
    "Carmack's Reverse".
    

    Le fameux code n'est pas inclut dans les sources ;).

    Andréas

    • [^] # Re: Carmack's reverse

      Posté par  . Évalué à 10.

      Pour ce que j'en ai compris, la technique est bien incluse dans le code. Carmack a contourné le brevet avec 4 lignes de code en plus et deux lignes changées.
      cf. https://twitter.com/ID_AA_Carmack/statuses/137189212519792640?_escaped_fragment_=/ID_AA_Carmack/status/137189212519792640#!/ID_AA_Carmack/status/137189212519792640

      Il dit aussi que cela prouve que ce brevet est "idiot".

      • [^] # Re: Carmack's reverse

        Posté par  . Évalué à 3.

        Ce que je ne comprends pas trop c'est qu'il a été dit que Creative avait utilisé ce brevet pour forcer Id a supporter EAX pour Doom3, si quelques lignes suffisaient pourquoi ils ne l'ont pas fait à l'époque??
        Ces lignes ont des conséquences au niveau performance? L'histoire est incorrecte?

        • [^] # Re: Carmack's reverse

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

          Sachant que l'EAX est une techno audio et que le code incriminé porte sur le graphisme, ce n'était pas une affaire de chantage genre "vous venez de réveiller un brevet dormant dans notre porte-feuille, vous supportez et faites la promotion de notre techno, et on vous embête moins" ?

          ce commentaire est sous licence cc by 4 et précédentes

          • [^] # Re: Carmack's reverse

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

            après un peu de recherche (il me semblait bien que quelque chose de très flou dans ma mémoire me rappelait une histoire comme ça) :

            http://newenthusiast.com/carmacks-reverse-still-an-issue-20090409489

            The patent in question involves techniques for the ‘z-fail’ method of computing shadow volumes in 3D graphics engines. This is a technique widely known as ‘Carmack’s Reverse’, named after John Carmack, who used the technique in Doom 3 to cope with the sheer amount of shadows going on in the game. Unfortunately, despite this widely accepted nickname, Creative held a patent from 1999 that described a similar technique.

            So, id announced that it would be incorporating support for EAX in Doom 3, and Creative graciously allowed them to use the Carmack Reverse without paying for it. Gamers were further incensed when Reverend from Beyond 3D received the following explanation from Carmack:

            http://www.shacknews.com/article/32824/creative-labs-patent-doom-3

            In case you were looking for a reason to get out some angst Creative Labs looks like a good target today. Here's a quote from John Carmack giving a little insight into why the deal that id Software struck with Creative recently. Seems It wasnt just a happy happy deal but Creative actually forced the issue. If you're looking for a good summary of wtf this means, take a look at this post.

            The patent situation well and truly sucks. We were prepared to use a two-pass algorithm that gave equivalent results at a speed hit, but we negotiated the deal with Creative so that we were able to use the zfail method without having to actually pay any cash. It was tempting to take a stand and say that our products were never going to use any advanced Creative/3dlabs products because of their position on patenting gaming software algorithms, but that would only have hurt the users. John Carmack

            ce commentaire est sous licence cc by 4 et précédentes

      • [^] # Re: Carmack's reverse

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

        En fait il y a deux techniques : Depth fail et Depth pass . Le passage de l'une à l'autre est trivial, mais seule une des deux est breveté :
        http://en.wikipedia.org/wiki/Shadow_volume

        • [^] # Re: Carmack's reverse

          Posté par  . Évalué à 4.

          Trivial, mais a un coût en performance comme l'implique le texte trouvé par Thomas DEBESSE (merci!).

    • [^] # Re: Carmack's reverse

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

      Je suis curieux de savoir comment bossent les juristes : ils ont une double compétence pour éplucher juridiquement le code technique ou bien ?!

      • [^] # Re: Carmack's reverse

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

        bien

      • [^] # Re: Carmack's reverse

        Posté par  . Évalué à 6.

        je ne sais pas mais la GPLv3 c'est eux.

      • [^] # Re: Carmack's reverse

        Posté par  . Évalué à 3.

        Je suis curieux de savoir comment bossent les juristes : ils ont une double compétence pour éplucher juridiquement le code technique ou bien ?!

        J'ai voulu tester une fois, par curiosité. J'ai contacté le service juridique du client chez qui je travaillais pour demander : "On voudrait ajouter la lecture de périphériques au format FAT32 dans ce système embarqué, mais il paraît de Microsoft a déposé des brevets ; qu'est-ce qu'on fait ?" On m'a répondu qu'il fallait d'abord que j'indique précisément les brevets concernés et en quoi l'implémentation (du noyau Linux) viole ces brevets. Bref, ces juristes là n'avaient visiblement pas de compétence technique et c'était à moi de me taper le boulot de recherche. Ce n'est pas étonnant, mais c'est tout de même amusant de vérifier cela sur le terrain.

  • # Comparaison de rendus

    Posté par  . Évalué à 9.

    Deux impressions d'écrans pour montrer la différence de rendu serait sympatoche.
    Par exemple pour aider le néophyte à évaluer l'amélioration du à cette évolution du moteur.
    Non ?

    Et aussi, c'est bien, mais à part le moteur en lui même, que cela apporte-t-il au monde du jeu vidéo libre ? des jeux vont-ils l'adopter en remplacement du leur (ou de la version précédente). Le passage C au C++ ne risque-t-il pas de compliquer la tache.

    Finalement, quel sont les avantages et points forts / inconvénients points faible, si l'on compare aux autres moteurs fonctionnel sous Linux (Ogre, Unigine ...)

    my 2 cents !

    Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas qu'elles sont difficiles. - Sénéque

    • [^] # Re: Comparaison de rendus

      Posté par  . Évalué à 10.

      Voici en gros les effets que ce moteur apporte :

      1. Effets de lumière sur les cartes, personnages et du personnage sur lui-même en temps réel, au niveau du pixel.

      Ombres sur les personnages

      Ombre du personnage sur lui-même

      Ombres des personnages sur la map

      1. Environnements extérieurs détaillés et panoramiques.

      .E.T: Quake Wars

    • [^] # Re: Comparaison de rendus

      Posté par  . Évalué à 10.

      C'est le moteur le plus optimisé pour afficher des pièces noires sans lumière. Il est sert aussi de benchmark pour tester la profondeur de noir des écrans.

      Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

      • [^] # Re: Comparaison de rendus

        Posté par  . Évalué à -10.

        en même temps, une pièce noire sans lumière = on voit rien. donc optimiser un truc pour ne rien afficher, c'est pas un peu stupide ? suffit d'afficher du noir ...

        Après est-ce bien noir ou pas, ça ça dépendra de l'écran non ? et là le mieux, c'est plasma (mais peut être pas assez réactif pour un jeu sur pc) ou les nouvelles techno LCD (mais je trouve ça trop cher pour un pc).

        Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas qu'elles sont difficiles. - Sénéque

        • [^] # Re: Comparaison de rendus

          Posté par  . Évalué à 8.

          Je pense que tu n'as pas saisi l'ironie.

          Doom 3 est très connu pour offrir de nombreux environnements presque sans aucune luminosité, et il est surtout impossible de manipuler la lampe torche en même temps qu'une arme ce qui en fait un jeu très difficile et stressant, mais dont on ne profite pas vraiment des graphismes.

          Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

        • [^] # Re: Comparaison de rendus

          Posté par  . Évalué à 9.

          Tiens, j'en profite pour ajouter cette citation de John Carmak himself sur Doom 3 : « The game would have been more enjoyable if people coud actually see it ».

          Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

          • [^] # Re: Comparaison de rendus

            Posté par  . Évalué à 2.

            Je crois qu'ils ont sorti des patchs pour pour ça (permettre d'avoir la lampe sur l'arme et augmenter la luminosité).

            Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

            • [^] # Re: Comparaison de rendus

              Posté par  . Évalué à 10.

              C'était pas des mods, pluto?
              Parce que le coup de la lampe, ça faisait partie du gameplay.
              Genre tu es dans une pièce et tu vois rien, et un truc te saute dessus, tu shootes dans tous les sens au hasard, tu flippes.
              Ou alors, tu es dans une pièce, un truc te saute dessus, comme tu as la lampe, il est effrayant tu le vois bien, mais tu peux pas tirer dessus, tu flippes.
              Le bon joueur, il flippe, alors que le mauvais joueur, il flippe, mais c'est pas pareil.

              • [^] # Re: Comparaison de rendus

                Posté par  . Évalué à 4.

                En fait je me suis aperçu à l'époque que jouer avec une meilleure CG qui supportait les pixel shaders 2 ou 3 (passage de GeForce 3 à GeForce 6 pour ma part), permettait d'avoir de la lumière dynamique, du coup quand on est dans une salle toute noire avec 2 ou 3 Imps, bah les boules de feu qu'ils lancent éclairent également la pièce.

                (Alors que avant je voyais juste la boule de feu sur fond noir non éclairé, ça permet juste de savoir où est le bras du monstre pendant une ou deux secondes)

              • [^] # Re: Comparaison de rendus

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

                tesautesdessus

              • [^] # Re: Comparaison de rendus

                Posté par  . Évalué à 3.

                C’était un mod:

                Under the crazy presumption that a roll of duct tape has to exist somewhere on the Mars facility, the Duct Tape mod sticks flashlights to your machinegun and shotgun. In order to preserve the atmosphere, these new lights are much narrower (and a little brighter) than the standard flashlight, and are only available on the basic weapons. The pistol is not equipped with a flashlight, so as not to spoil the early sections of the game.

                Depending on the time of day, the French go either way.

    • [^] # Re: Comparaison de rendus

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

      Et aussi, c'est bien, mais à part le moteur en lui même, que cela apporte-t-il au monde du jeu vidéo libre ?

      C'est sacrément éducatif si tu t'intéresse au rendu 3D. Carmack est un des meilleurs programmeurs de moteurs 3D et donc on y trouve en général des perles et optimisations qu'on ne trouve pas forcément ailleurs.

      Je ne pense pas que le passage au C++ change grand chose, surtout que c'est du C++ assez soft (pas d'abus des templates ou autre code illisible. En gros c'est juste pour faire de l'objet plus facilement).

      Par rapport à Ogre, le moteur de Doom3 est très orienté FPS alors qu'Ogre est plus généraliste. C'est probablement à la fois un avantage (si on fait un FPS) et un inconvénient (si on veut faire autre chose).

    • [^] # Re: Comparaison de rendus

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

      Lors de la libération des sources du moteur id tech3 (Quake3) on a vu quelques mods devenir des jeux standalone. C'est le cas par exemple de Tremulous, OpenArena, World Of PadMan, Urban Terror, Smokin Guns.

      Je pense que des moteurs comme ioquake3 ou Xreal pourraient gagner en fonctionnalités en puisant dans le code de l'id Tech4. Par contre je doute que des jeux existants essayent d'adapter ce moteur. Ce serait un travail colossal pour pas grand chose.

      • [^] # Re: Comparaison de rendus

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

        Je pense que des moteurs comme ioquake3 ou Xreal pourraient gagner en fonctionnalités en puisant dans le code de l'id Tech4.

        Ils ne pourront pas faire mieux que s'inspirer des idées exprimées par le code, mais ils ne pourront pas prendre directement du code de iodoom3 pour améliorer ioquake3 ou Xreal, car Doom3 a été libéré en GPLv3, alors que les projets précédents étaient en GPLv2 !

        Lors de la libération des sources du moteur id tech3 (Quake3) on a vu quelques mods devenir des jeux standalone. C'est le cas par exemple de Tremulous, OpenArena, World Of PadMan, Urban Terror, Smokin Guns.

        Je n'ai pas du tout suivi les mods de doom3. Ayant apprécié les sorties de Tremulous, d'UrbanTerror et de SmokinGuns particulièrement, est-ce que l'on connait déjà des mods encore suffisamment actifs qui pourraient profiter de cette libération et vivre un renouveau ? Y a t'il sur DLFP des joueurs de mods de Doom3, ou qui au moins connaissent l'écosystème pour émettre des suppositions, ou des souhaits ?

        ce commentaire est sous licence cc by 4 et précédentes

  • # Coquille de typo

    Posté par  . Évalué à 2.

    Le lien wikipédia vers la page Carmack's reverse ne fonctionne pas, car vous avez utilisé une apostrophe courbe (’) au lieu d’une droite ('). Dans Wikipédia, les titres d’articles utilisent des apostrophes droites.

  • # Doom 3 sous GPL v3

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

    God Bless John Carmack

  • # Ya plus qu'a

    Posté par  . Évalué à 1.

    Ya plus qu'a trouver une version de doom 3 encore vendue. Et là ce n'est pas facile!

    Des tuyaux ?

  • # Hello Phobos !

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

    Un nouveau site pour suivre l'évolution du code de Doom3, iodoom3, porté par l'équipe d'ioquake3 : http://www.iodoom3.org/
    Encore très succint, mais à suivre de près... peut-être est-ce un lien à ajouter à la dépêche ?

    Ils annoncent un bugzilla : https://bugzilla.icculus.org/enter_bug.cgi?product=iodoom3
    une mailing list : http://lists.iodoom.org/listinfo.cgi
    et un chan irc #iodoom3 sur Freenode

    ce commentaire est sous licence cc by 4 et précédentes

  • # Switch vers C++

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

    Quelqu'un a un lien vers une explication de Carmack sur les raisons du switch vers le C++?
    Je pense que son point de vue doit être intéressant.

  • # Escape from butcher bay & dark athena

    Posté par  . Évalué à 2.

    Ce jeu avait mis une claque visuelle à tout les fps existants.
    Pourquoi en parler? Son moteur est lui aussi basé sur OpenGL.
    Starbreeze Studios a annoncé son passage à Unreal Engine 3 pour leurs prochains titres, pour je suppose se débarrasser de la phase de portage console au maximum.

    Qui veut les soudoyer avec moi pour leur demander si ils voudraient bien libérer leur moteur, comme idsoft le fait?

Suivre le flux des commentaires

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