« Architecture de la Xbox (index)

Architecture de la Xbox

Chapter 8: Jeux


Table des matières

  1. L'écosystème de développement
    1. Abstraction Matérielle
    2. Microsoft XDK
    3. NXDK
  2. Support
  3. Les services réseaux
  4. Le début d'une nouvelle tendance

Cette partie peut être un peu déroutante, principalement en raison du manque de documentation de bas niveau par rapport à d'autres consoles. Il semblait que Microsoft/Nvidia voulait vraiment que les développeurs utilisent leurs bibliothèques et oublient tout le reste. C'est néanmoins une stratégie intéressante.

Dans tous les cas, j'ai essayé de le documenter de manière aussi informative que possible, sans entrer trop en profondeur.

L'écosystème de développement

Le développement de jeux sur cette console est très complexe en termes de bibliothèques, de terminologie, etc. J'ai donc séparé cela par cadres.

Abstraction Matérielle

Image
Représentation de HAL.

Nous avons vu comment des éléments comme un 'coprocesseur programmable avec microcode' ont tendance à venir avec beaucoup de fanfare au début, mais se dissipent lentement une fois que les développeurs découvrent la véritable complexité du nouveau matériel.

Du point de vue du développeur, je pense que l'un des points de vente de cette console était l'inclusion de bibliothèques de haut niveau populaires qui pouvaient gérer efficacement les fonctionnalités de bas niveau. La stratégie de Microsoft et Nvidia consistait à, au lieu de documenter chaque aspect de bas niveau de leur matériel, ils ont simplement fourni une bibliothèque d'abstraction matérielle entièrement fonctionnelle qui pouvait effectuer les opérations que les développeurs s'attendraient à trouver sans nécessiter une connaissance complète du fonctionnement interne du matériel.

Il existe plusieurs SDK disponibles pour développer pour cette console, certains 'officiels' et restrictifs, tandis que d'autres 'pas si officiels' mais flexibles. Nous allons jeter un coup d'œil aux plus populaires.

Microsoft XDK

Image
Structure XDK

Le Kit de Développement Xbox de Microsoft ou 'XDK' est le SDK officiel utilisé pour le développement Xbox. C'est un package qui contient de nombreux outils, bibliothèques et compilateurs. Plus notablement, il est utilisé aux côtés de Visual Studio .NET (version 2002) qui était un IDE assez de ce temps, pour le meilleur ou pour le pire.

La bibliothèque graphique est une implémentation personnalisée de Direct3D 8.0, qui a été étendue pour inclure des fonctionnalités spécifiques à Xbox. Direct3D était une API très puissante utilisée pour développer du code compatible avec de nombreux GPU. Avec cela, les développeurs de PC ont l'opportunité de porter leurs jeux PC sans trop de modifications (en théorie!). Cependant, la syntaxe utilisée pour les programmes de sommet et les shaders de pixel ressemble carrément à l'assemblage.

En dehors de cela, la fonctionnalité audio est fournie par DirectSound qui s'occupe de l'APU sans avoir à se soucier de déplacer les données audio. Il y a aussi quelques bibliothèques réseau, qui sont très pratiques pour obtenir une fonctionnalité en ligne (c'est-à-dire multijoueur). L'API réseau repose sur Windows Sockets, qui était la tentative de Microsoft de simplifier les communications réseau en utilisant un protocole uniquement Windows (bien qu'ayant un design basé sur son homologue standardisé, les sockets BSD).

Pour essayer tout cela, Microsoft a distribué son propre kit de développement matériel qui n'est qu'une unité de vente teintée en vert avec le double de RAM installée (128 MiB au total) et, parfois, une puce MCPX différente (appelée MCPX-2, qui démarre directement à partir de la ROM Flash). Il contient une version améliorée du tableau de bord qui lance des exécutables signés par le XDK. De l'autre côté, le Xbox Neighbourhood (une application Windows) a été utilisé pour relier le kit de développement à Visual Studio, permettant un déploiement et un débogage faciles. Pour expérimenter avec Xbox Live, Microsoft a également fourni des serveurs sandboxés.

NXDK

Image
Structure NXDK. Remarquez que même si certaines bibliothèques de bas niveau sont enveloppées avec des bibliothèques de haut niveau, elles sont toujours accessibles au développeur

Pour éviter les litiges sur le droit d'auteur aux développeurs de Homebrew utilisant le SDK officiel, un groupe de développeurs non affiliés à Microsoft a créé un remplacement du SDK officiel appelé Open XDK. Après quelques années, son développement a cessé, donc un autre groupe l'a repris à partir de là et a nommé la nouvelle fourche New XDK ou 'nxdk'.

Le projet en cours a rétro-conçu les composants matériels de bas niveau (microcode, tampons de poussée, etc) et a conçu une nouvelle API en C/C++ qui fournit des appels de haut niveau à chaque partie du système.

Pour simplifier la couche graphique sans dépendre de Direct3D, nxdk utilise le compilateur CG . CG est un langage créé par Nvidia pour développer des shaders. CG est enchaîné avec d'autres compilateurs pour générer du code compatible Xbox. Lors de la compilation, le code CG est converti en assemblage compatible NV20, puis, cela est à nouveau traduit en utilisant un compilateur personnalisé pour générer du microcode compatible NV2A et pushbuffer. Pour ceux qui ne veulent pas utiliser CG, nxdk expose également le reste des compilateurs pour écrire des shaders de bas niveau.

Le reste des API disponibles gère d'autres services (audio, réseau, etc). En somme, cette bibliothèque donne plus de contrôle sur le matériel (contrairement au SDK officiel) en échange de l'absence d'utilisation des API de Microsoft (la norme de facto, bien que totalement propriétaire). Cependant, nxdk reste l'option la plus adéquate pour développer des programmes Homebrew légaux.

Support

Les jeux sont distribués sur des disques DVD à double couche (jusqu'à 8,5 Go !), et ils sont ensuite lus par un lecteur de DVD personnalisé qui comprend des protections anti-piratage (malgré l'utilisation d'une interface standard, ATA). Il convient de mentionner que le XDK incluait certains outils pour personnaliser la disposition des données dans le disque, permettant aux programmeurs d'améliorer les vitesses de lecture !

Maintenant, la console comprend également un disque dur interne de 8 Go, les jeux l'utilisent pour stocker des sauvegardes ou mettre en cache du contenu temporaire. Le système, quant à lui, stocke le tableau de bord, les paramètres Xbox Live et les paramètres réseau.

Les services réseaux

Oubliez les modems ou les services expérimentaux. La Xbox incluait tout ce que nous tenons pour acquis aujourd'hui pour fournir un service en ligne décent : une connexion Ethernet et une infrastructure en ligne centralisée (appelée Xbox Live).

Image
Logo Xbox Live.

De plus, Xbox Live ne permettait pas seulement le multijoueur en ligne, mais incluait également d'autres fonctionnalités comme le streaming audio pour le chat vocal en temps réel.

Mais qu'est-ce que Xbox Live exactement ? Eh bien, ce n'est qu'une collection de services en ligne interconnectés que les entreprises peuvent utiliser pour construire leur plateforme en ligne. Par exemple, l'un des services fournit des profils d'utilisateurs, donc les studios peuvent l'utiliser comme méthode d'authentification lors de l'accès aux fonctionnalités en ligne d'un jeu. Dans le SDK officiel, Microsoft inclut certaines API pour communiquer avec les serveurs Xbox Live.

Il est important de souligner que Microsoft contrôle à qui accorder l'accès à Xbox Live, donc les développeurs devront s'inscrire auprès de Microsoft pour obtenir les clés d'authentification qui seront utilisées par leurs jeux.

La véritable expérience en ligne se produit dans le serveur de titre, qui est le type de serveur qui répond aux clients (consoles Xbox) dans le monde entier et gère la communication en temps réel. Microsoft a inclus dans leur SDK quelques exemples pour montrer comment construire ces serveurs, bien qu'ils reposaient sur des systèmes Windows et étaient destinés à être déployés dans des centres de données exécutant Windows Server.

Le début d'une nouvelle tendance

Après avoir analysé l'implémentation de Xbox Live par Microsoft et regardé l'impact qu'elle a eu sur l'industrie. Cela semble maintenant assez évident, n'est-ce pas ? Comme si la recette pour un 'jeu en ligne correct' (a.k.a Ethernet + Infrastructure) était toujours là, mais toutes les entreprises ne voulaient pas y investir.

Il s'avère que ce n'est pas si simple : Microsoft a également dû convaincre les utilisateurs qu'ils 'avaient besoin' de cette fonctionnalité, que le multijoueur en ligne n'était pas seulement un ajout optionnel, mais une partie fondamentale de certains jeux. Sinon, les efforts de Microsoft ne représenteraient qu'une autre 'tentative en ligne'.

Essayez d'imaginer un monde où aucun joueur de console ne voulait de jeux en ligne, et où personne ne croyait qu'une architecture de PC pouvait être une console. C'était vraiment comme ça. Maintenant, cela semble évident MAIS CE N'ÉTAIT PAS LE CAS.

- Seamus Blackley


Previous: 7. Système d'exploitation

Next: 9. Anti-Piratage et Homebrew


Rodrigo Copetti © 2026 RSS Feed

Basculer vers l'édition moderne

Accueil · Articles · Support · À propos de l'auteur · À propos du site