Bugdad café

Encore un nouveau blog sur Wefrag… le blog de Saddam.

Jeux vidéos à la CPPCon 2015

Lundi 21 septembre 2015 à 1:56

La conférence CPPCon se tient actuellement à Bellevue, Washington aux états unis. Pour ceux qui ne connaissent pas, cette conférence est au langage C++ ce qu’est la GDC aux jeux vidéos. Depuis quelques années (ou juste l’an dernier, je ne sais plus), les jeux vidéos se sont immiscés dans cette conférence au travers de quelques intervenants comme Jeff Phresing (Ubisoft) (ce mec tient un blog génial ), Mike Acton (Insomniac Games)  ou encore Nicolas Fleury (Ubisoft).

Cette année, le développement des jeux vidéos aura une place de choix à la CPP Con puisqu’il sera [entre autres] question du nouveau groupe d’étude qui lui a été dédié au comité de normalisation du C++.

La communauté C++ et les développeurs de jeux vidéos

N’étant pourtant pas développeur de jeux vidéos moi-même, j’ai toujours été intéressé par les approches et techniques de programmation employés par les développeurs de jeux vidéos en C++. J’en ai retenu principalement deux choses :

  1. Les DJV programment plus en C qu’en C++ (j’entends par là qu’ils n’utilisent que peu les fonctionnalités du langage) et ont une méfiance pathologique envers les avancées du langage (boost, STL, RTTI, OOP).
  2. Ceux sont des programmeurs pragmatiques et ils ont bien compris (ou souffert) des méfaits d’une approche excessive et dogmatique de la programmation orientée objet. Style de programmation à laquelle ils opposent le “Data Oriented Design“. Une façon de programmer qui tient compte du fonctionnement intrinsèque du hardware (en gros, votre CPU accède à la mémoire via des caches et faire fi de cette réalité peut créer des écarts de performances énormes (pour info sur des PC actuels l’accès au cache L1 est de l’ordre de 100x plus rapide que l’accès à la DRAM ).

La communauté des développeurs de jeux vidéos a été (à mes yeux du moins) un peu à part du reste des dev C++ et a développé ses propres techniques pour ses propres besoins en cultivant une aversion pour les avancées proposées par la communauté C++ (boost est un bon exemple).

Certaines grosses boites comme EA (et Ubisoft je crois (?)) ont développé leurs propre version de la STL. Je bosse actuellement dans une boîte qui a fait de même (pour avoir des allocateurs polymorphiques). Je ne suis vraiment pas fan de cette approche qui consiste à réinventer la roue pour avoir une feature “in house”.

Avec la création du SG14, cette situation devrait changer et les deux communautés vont pouvoir profiter de leur savoir-faire, enfin l’opportunité est là en tous cas.

Le comité de normalisation du C++ et ses groupes de travail

Le comité de normalisation du C++ est organisé en différents groupes de travail et d’étude, certains sont focalisés sur le langage lui même (Core WG & Evolution WG), d’autres se concentrent sur des domaines d’études spécifiques comme le parallélisme et la concurrence (SG1), ou encore la mémoire transactionnelle (SG5).
Certaines propositions de ces groupes d’études font déjà partie du standard, C++11 offre maintenant un support normalisé des threads et des variables atomiques par exemple. D’autres comme les concepts (inventés depuis des années par Alexander Stepanov, le créateur de la STL) tardent à être intégrées au standard. “Concept lite” devrait faire partie de C++17.

Le groupe d’étude 14 (SG14) a été créé récemment par Herb Sutter pour répondre aux besoins spécifiques des programmeurs de jeux vidéos, mais aussi plus généralement aux programmeurs “low latency”. Ce groupe d’étude intitulé “Game Development and Low-Latency Computing” est présidé par Michael Wong, CEO de Open MP et représentant D’IBM au comité C++.

Le groupe de d’étude SG14

Le but de ce groupe d’étude est de permettre au C++ d’offrir aux développeurs de jeux vidéos et de software low latency des outils dédiés à leurs besoins spécifiques. D’après les informations que j’ai plus glaner, voici quelques propositions à l’étude :

  • De nouveaux conteneurs et algorithmes plus adaptés :
  • des garanties plus strictes sur les conteneurs existants
    • pas “d’allocation inutile”
    • sémantique de move peu couteuse
  • En vrac
    • des headers plus légers pour des compilations plus rapides
    • des options de compilation standardisées pour désactiver le support d’information runtime (RTTI) et des exceptions

Et bien d’autres choses!

Le SG14 à la CPPCon

Au programme de la CPPCon 2015 plusieurs talks seront dédiés au SG14 :

  • September 23 - ISO SG14 Working Meeting. Rien que de savoir qu’il sera présenté par Herb Sutter, je suis impatient de le visionner.

Je suis sur que ces talks seront passionnants et intéresseront tous les programmeurs de jeux vidéos C++. Bien d’autres talks porteront sur des sujets orientés performances mêmes si ils ne sont pas directement liés au SG14. Je posterai des liens vers les vidéos et slides quand ils seront mis en ligne.

L’Illuminated Keyboard de Logitech (WARNING)

Lundi 6 février 2012 à 13:28

Ce weekend, j’ai enfin décidé de m’acheter un nouveau clavier parce que j’en avais marre de mon “Microsoft Wireless Entertainment Desktop 7000″ :

  • Look trop geek
  • Pas ergonomique : je n’ai jamais réussi à m’adapter à la disposition des touches
  • A été galère à faire fonctionner sous Windows ET sous Linux (pas toujours reconnu lorsque GRUB se lance)
  • A l’origine, bien niaiseu que j’étais j’avais cru que le sans fil me permettrait enfin de jouer devant mon écran TV…C’etait sans compter sur le lag d’1/2 seconde dès qu’on est à plus de 2 mètres de la clé bluetooth
  • Et bien sur parce que j’en ai déduit que c’était la raison numéro un de mes piètres performances à BF3…

clavier microsoft wed 7000

clavier microsoft wed 7000

Donc, c’est partit “Cherie, demain on change de clavier!”

Après moult réflexions mon choix s’est arrêté sur “l’illuminated keyboard”(IK) de Logitech.

  • Il est beau, sobre, visuellement il me plait
  • C’est un flat et j’apprécie ce genre de clavier, la frappe est silencieuse et agréable
  • Le site des numériques le présente comme un très bon clavier et autorisant un grand nombre de touches enfoncées en même temps (jusqu’à 6 je crois)

Je vais donc acheter ce clavier en me disant que je fais le bon choix même si j’hésite encore un poil pour la version sans fil ayant lu que cette techno a fait des progrès ces dernières années. Finalement le vendeur de LDLC me conforte dans mon premier choix en me disant que l’IK est vraiment bon et plus adapté si je veux jouer avec. Hop, je raque 70 euros, je rentre, je deballe et je branche.

Wouaaaaaaaaaaaa il est trop bôôôô :

l'Illuminated Keyboard de Logitech

l'Illuminated Keyboard de Logitech

Premieres impressions :

  • Il est beau, putain il est beau!
  • La frappe est silencieuse et agréable, je vais pouvoir pondre des bugs au kilomètre
  • J’ai dit qu’il était beau?
  • Plus de problèmes avec GRUB ni de reconnaissance sous Linux (ce qui est normal puisque le problème venait du bluetooth)
  • Le rétro éclairage des touches est vraiment chouette, pour moi ce n’est pas une featurette, il m’arrive souvent d’être devant le PC sans bcp de lumiere.

Et puis vient LE test : je lance BF3…J’ai du mettre 5 minutes à m’en apercevoir :

CE GROS CON DE CLAVIER NE SUPPORTE PAS LA PRESSION SIMULTANEE DE <Z>+<SHIFT>+<ESPACE>!!!
A ce stade, il est bien évident que j’arrête ma partie illico estimant que je suis injustement handicapé dans ma frénésie meurtrière. Firefox > Google > “Illuminated Keyboard Shift + z + space” en me disant que je ne suis pas le seul et que quelqu’un aura déjà publié une solution.

2 ou trois heures plus tard, je me suis tapé les 77 pages de ce thread pour apprendre que :

  • Je ne suis pas le seul
  • Si je contacte Logitech pour me plaindre, on m’enverra chier parce que j’aurai du acheter un clavier de gamer
  • Certaines anciennes versions de ce clavier n’ont pas ce problème
  • C’est un problème de matrice mec
  • Il n’y a pas de solution
  • On peut résoudre ce problème en réassignant les touches

Voila, au final j’ai fait comme tout le monde : j’ai réassigné la course à la touche “>” et je suppose que je finirai par m’y faire. Et si ce n’est pas le cas, j’achèterai un clavier bas de gamme que je brancherai pour jouer. Il ne s’agit pas de dire que ce clavier est une grosse merde et que je vais me venger de Logitech. Je trouve que c’est quand même hallucinant qu’une combinaison de touches aussi courante ne soit pas prise en compte par une clavier à 70 euros. Le pire c’est qu’un des arguments de Logitech est du genre “vous pourrez jouer dans le noir”. Ce clavier est sortit en 2008 et c’est vraiment con d’apprendre ce problème une fois qu’on l’a acheté. Voila, si je peux éviter la même déconvenue à quelqu’un d’autre ce post n’aura pas été une perte de temps :-)

Hello world

Lundi 6 février 2012 à 11:49

Bonjour à toi qui me lit…Si tu existes. Pourquoi me mettre à pondre un blog sur WeFrag alors que ça fait des années que je lis sans pour autant contribuer? Est ce que j’ai aujourd’hui quelque chose de plus intéressant à raconter que les autres? Non, j’ai juste un peu de temps vu que mon employeur ma récemment remercié pour services rendus.

La raison première de ce blog s’explique dans mon prochain post. Éventuellement, Hypothétiquement, je parlerai du jeu auquel j’ai le plus joué en réseau : Far Cry. Si vraiment je suis motivé, ça parlera de programmation en général, de génération procédurale de bâtiments/villes et du fabuleux monde de la finance…Enfin bref.