John Carmack

John Carmack
John Carmack en 2005
Prise de vue : Spaceman Spiffy

John Carmack (né le 20 août 1970 à Roeland Park, Kansas) est le programmeur principal et le co-fondateur (avec plusieurs personnes, dont John Romero) de la société id Software, une entreprise de développement de jeux vidéo. Son habileté en programmation informatique lui a permis de devenir une célébrité dans la communauté des joueurs et des développeurs d'applications graphiques 3D en temps réel.

Le premier jeu développé par id Software, fut Commander Keen, un jeu de plates-formes célèbre. John Carmack est à l'origine de nombreux jeux de tir subjectifs tels que : Wolfenstein 3D (le premier jeu de ce genre à obtenir un certain succès), Doom (reconnu comme une révolution technologique et immense succès mondial) et Quake (le premier FPS à présenter un environnement totalement en 3D, y compris les objets et personnages, et le premier à introduire le jeu à plusieurs par Internet). Ensuite il a dirigé le développement de Doom 3, dont le moteur graphique était à la pointe de la technologie lors de sa sortie. Il dirige actuellement le développement de Rage et du moteur graphique id Tech 5.

Le succès de John Carmack repose sur son habileté à transposer de façon optimale les meilleurs algorithmes et techniques de rendu 3D sur des systèmes temps réel, tout en restant extrêmement au fait des nouveautés en matière de rendu 3D. Il est le plus célèbre développeur indépendant capable de réaliser des moteurs graphiques exploitant au maximum les évolutions du matériel, en particulier des cartes graphiques pour PC. Il a inventé plusieurs algorithmes, notamment le Carmack's Reverse - il n'est pas le premier à avoir découvert ce principe mais est le premier à l'avoir utilisé efficacement et intensivement.

En 2001, il a rejoint le panthéon des développeurs (Hall of Fame) de l'Académie des Arts et des Sciences Interactifs.

Amateur de fusées, il est fondateur de la société Armadillo Aerospace.


Bibliographie

  • Les maîtres du jeu vidéo (Masters of Doom) de David Kushner, éd. école des loisirs, 2010

Anecdote

L'Id Tech 3 (moteur de rendu 3D du jeu Quake III Arena) étant sous licence GNU GPL, il est possible de consulter l'intégralité du code source de ce jeu. Parmi celui-ci, on retrouve deux fonctions longtemps attribuées à John Carmack et qui auront fait beaucoup parler d'elles : l'une pour calculer une racine carrée, l'autre pour calculer une racine carrée inversée.

Écrite en C, la fonction calculant une racine carrée inversée est la suivante :

float Q_rsqrt( float number ){
    long i;
    float x2, y;
    const float threehalfs = 1.5F;
 
    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;  // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 ); // what the fuck?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
    // y  = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
 
    #ifndef Q3_VM
    #ifdef __linux__
      assert( !isnan(y) ); // bk010122 - FPE?
    #endif
    #endif
    return y;
}

Cette fonction est pour le moins particulière puisqu'elle ne contient aucune boucle, elle ne fait intervenir qu'une suite de calculs élémentaires! Pour autant, celle-ci fournit des approximations tout à fait acceptables (de l'ordre de 10-3). Elle est même jusqu'à 4 fois plus rapide que la fonction (float) 1.0/sqrt(x) et se révèle ainsi parfaite pour un jeu vidéo.

En réalité, cette fonction repose sur une méthode tirée de l'analyse numérique : la méthode de Newton. La clef de son efficacité réside dans l'utilisation d'une constante particulière 0x5f3759df. Cette constante hexadécimale est utilisée comme première approximation et réduit de façon remarquable le nombre d'itérations nécessaires pour obtenir une approximation satisfaisante. Cette constante – dite magique – est si remarquable qu'une seule itération de Newton donne des résultats suffisants dans le cadre du rendu graphique.

Chris Lomont de l'université de Purdue a depuis étudié la question. Il existe une constante fournissant de meilleures approximations : 0x5f375a86. Dans son étude, Chris Lomont fait également mention du fait que l'utilisation originale de cette constante serait peut-être due à Gary Tarolli [1], alors développeur chez nVidia.

Cette fonction est illégale en C++03 : les valeurs float sont stockées dans le FPU alors que les entiers sont utilisés par le CPU. Sur les CPU modernes, ces deux unités peuvent être considérées comme deux processeurs tournant en parallèle, et accéder à une même zone mémoire avec ces deux type de valeur produira un phénomène d'aliasing mémoire : il n'est pas dit que la valeur en mémoire correspondra à la valeur cachée dans les unités du processeurs, produisant des résultats très aléatoires. De plus des optimisations par les compilateurs récents augmentent significativement ce risque d'aliasing.

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article John Carmack de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • John Carmack — 2010 John D. Carmack II (* 20. August 1970 in Kansas City, Kansas) ist ein US amerikanischer Programmierer und Spieleentwickler. Er wurde durch die Entwicklung innovativer Game Engines im Computerspielebereich bekannt. Er ist Mitgründ …   Deutsch Wikipedia

  • John Carmack — John D. Carmack II Spaceman Spiffy …   Wikipedia Español

  • John Carmack — may refer to:*John D. Carmack (born 1970), game programmer *John K. Carmack (born 1931), leader and historian in The Church of Jesus Christ of Latter day Saints …   Wikipedia

  • John Carmack — John D. Carmack II (nacido en 1970) es una figura ampliamente reconocida en la industria de los juegos de video. Carmack co fundó id Software, una empresa de desarrollo de juegos de video, en 1991. Carmack es también muy reconocido por su… …   Enciclopedia Universal

  • Carmack — is a surname and may refer to:*Adrian Carmack (born 1969), game artist, cofounder of id Software *Chris Carmack (born 1980), American actor *Edward W. Carmack (1858 1908), American politician *George Carmack (1860 1922), American discoverer of… …   Wikipedia

  • Carmack — ist der Name von Adrian Carmack (* 1969), Spieleentwickler Chris Carmack (* 1980), US amerikanischer Schauspieler und Fotomodell Edward W. Carmack (1858−1908), US amerikanischer Politiker George Carmack (1860–1922), US amerikanischer Goldsucher… …   Deutsch Wikipedia

  • Carmack's Reverse — (ou Robust Stencil Shadow Volumes, ou encore Z Fail) désigne une technique d informatique graphique relative au calcul des ombres dans une scène graphique en trois dimensions. Il existe plusieurs techniques de projection d ombres, chacune devant… …   Wikipédia en Français

  • John Romero — Alfonso John Romero (* 28. Oktober 1967 in Colorado Springs, Colorado) ist ein US amerikanischer Spieleentwickler und gilt zusammen mit John Carmack als Vater des Ego Shooter Genres. Er gehört zu den Gründern von id Software …   Deutsch Wikipedia

  • John Romero — fue cofundador de id Software y un nombre ilustre dentro de la creación de videojuegos. Comenzó su carrera en SoftDisk, donde conoció a Tom Hall realizando videojuegos que se distribuían por correo a los suscriptores. Más tarde, conocería en esta …   Enciclopedia Universal

  • John romero — Pour les articles homonymes, voir Romero. John Romero …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”