Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

26/09/2009

Unsung heros - strings et autres chaines...

Avec un titre pareil, si je fais pas exploser mes stats… ;-)

 

 

Enfin, trêve de bavardage de comptoir, revenons aux choses séreuses ^_^

 

 

On dit souvent que le son est la cinquième roue du carrosse, mais il y a en fait un élément qui est encore moins apprécié des développeurs : le texte.

 

 

Si les jeux vidéos sont faits d’images, de textures, de modèle 3D et de sons, les textes sont pourtant une composante majeur des jeux vidéo. Les textes sont partout : dans nos UI, dans la scène, dans les tutoriaux, dans les diverses aides et indications, dans l’exposition à la situation, etc etc

 

 

D’un pur point de vue design, les raisons d’être du texte sont multiples. En premier lieu, la chaine de caractère constitue la matière première la plus accessible pour décrire ce qui ne peut pas être produit. On utilise l’écriture pour faire l’exposition aux personnages, poser les bases narratives, expliquer les mécaniques de jeu. C’est la façon la moins couteuse de parvenir à transmettre l’information, et c’est pour ça qu’il faut en règle générale savoir lire pour pouvoir jouer à un jeu.

 

 

Evidemment, ça va à l’encontre même de la nature du jeu, où la règle primordiale est « show, dont tell ».

 

 

Mais le rôle du texte ne s’arrête pas là. En production, le texte sert aussi à nommer les niveaux, les différents acteurs, les différents layers, les assets, les textures, les meshs, en fait tout ce qui va être manipulé par les artistes en général, et le level designer en particulier.

 

 

Le texte là sert de clef d’abstraction pour manipuler les assets du jeu. Elle permet la communication et l’édition effective du jeu. Ce qui signifie d’établir des nomenclatures précises et efficaces afin de permettre un datamining naturel.

 

 

Evidemment, tous ces textes doivent être numérique, accessible depuis les outils ou le moteur de jeu.

 

 

Dire que la chaine de caractère n’est pas populaire auprès des programmeurs, c’est un euphémisme. En fait, c’est probablement le type de donnée la plus communément utilisés tout en étant la plus détesté, voir la moins comprise.

 

 

La manipulation des chaines de caractères n’est jamais simple. En premier lieu, la chaine de caractère n’est pas de taille fixe. Quand elle sert d’identifiant, elle requiert donc un cout certain quand il faut comparer deux chaines de caractère. De même, de nombreux algorithmes n’existent que dans l’objectif de trier les chaines, les ranger par hash, permettre la comparaison rapide ou la recherche avançée dans les bases de données.

 

 

De même, les chaines peuvent être manipulées à l’aide des expressions régulières, expressions qui suffisent souvent à faire passer des sueurs froides dans le dos du programmeur qui doit les utiliser.

 

 

Mais il y a pire : la chaine de caractère est une bête protéiforme : ANSI et autres formats ISO sont communs. Afficher une chaine de caractère requiert l’usage d’une font, et il n’y a pas deux fontes qui exhibent les mêmes propriétés.

 

 

Allez, pour enfoncer le clou, le contenu d’une chaine de caractère est en général écrit dans une langue donnée, ce qui signifie qu’il faut prévoir de pouvoir les localiser, dans n’importe quelle langue, et avec des alphabets bien différents.

 

 

Bref, la chaine de caractère n’est ni populaire chez le programmeur moteur (les perfs nomdediou !), ni chez le programmeur gameplay (la nomenclature nomdediou !), ni chez le QA localisation (les kanas nomdediou !), ni chez le designer (show dont tell nomdediou !)...

 

 

Pourtant, c’est notre matière première, celle que l’on utilise tout les jours, et dans tout les jeux. Il est difficile d’imaginer devoir s’en passer. Un moteur moderne est un processeur de données, et la chaine de caractère est une donnée primordiale. Alors quand on passe beaucoup de temps à travailler nos pipes de rendus ou nos moteurs d’animations ou de physique, il ne faut pas oublier de garder à l’œil la vulgaire chaine de caractère… Avant de se faire mordre en crunch time…

14:36 Publié dans Code | Lien permanent | Commentaires (5)

Commentaires

C'est marrant je me plaignais de ça vendredi et jeudi face à des obj et autre string de texte nomé de manière cryptique et qu'il fallait que j'apprenne par coeur faute de pouvoir les modifier....

Écrit par : Pedro | 26/09/2009

Les strings nos amies de toujours... la partie qui m'embete vraiment le plus est l'encodage pour les langages (formats par defaut / forces, gestion des events pour le typing, caracteres bizarres dans les noms de repertoire, et bien sur la bonne vieille blague du multibyte - widechar)...

Écrit par : MMoi | 28/09/2009

La chaine de caractère est l'amie de tout bon programmeur qui se respecte, mais comme tout animal de compagnie, elle peut mordre son maitre ^_^

Écrit par : Daz | 29/09/2009

Je crois que là où j'en ai plus chier c'était pour faire tourner Desperados sous windows 98 en Coréen. Depuis j'espère que ce pays sera rayé de la carte un jour ou l'autre en rétorsion ! :)

Bon en même temps j'ai une théorie selon laquelle seul les civilisations avec une forte culture du dessert mérite de survivre : donc au revoir le japon et la corée ! (gniark gniark).

Écrit par : whirly | 01/10/2009

Oui mais alors, après Juin, vu que je retourne 1 mois au Japon entre Avril et Juin ^_^

Écrit par : Daz | 02/10/2009

Les commentaires sont fermés.