RenderWare est un moteur de jeu intergiciel (middleware) développé par Criterion Software, une filiale britannique spécialisée de Criterion Games. Lancé commercialement en 1993, il s'impose durant la fin des années 1990 et le début des années 2000 comme l'un des moteurs 3D tiers les plus utilisés dans l'industrie du jeu vidéo, notamment sur PlayStation 2, Xbox et GameCube. Son rachat par Electronic Arts en 2004 précipite son déclin, mais son héritage technique reste considérable. Des franchises majeures comme Grand Theft Auto, Burnout ou Mortal Kombat lui doivent leur moteur graphique.
Histoire
Origines et premières versions (1993–1997)
RenderWare naît au sein de Criterion Software Ltd, une société fondée en 1993 à Guildford, en Angleterre. À cette époque, les développeurs de jeux vidéo écrivent quasi systématiquement leurs propres moteurs graphiques, un processus coûteux et chronophage. L'ambition de Criterion Software est de proposer un moteur 3D généraliste sous forme de bibliothèque logicielle réutilisable, permettant à n'importe quel studio de se concentrer sur la conception du jeu plutôt que sur la plomberie graphique.
La première version de RenderWare cible les PC sous DOS puis Windows, à une époque où l'accélération matérielle 3D n'existe pas encore pour le grand public. Le moteur fonctionne entièrement en rendu logiciel (software rendering), gérant lui-même la rastérisation, le calcul des tampons de profondeur et le placage de textures. Cette approche est courante avant l'avènement des cartes 3dfx Voodoo en 1996.
Le jeu TrickStyle (1999) et Dave Mirra Freestyle BMX (2000) illustrent cette première génération, où RenderWare est encore principalement un moteur PC/Dreamcast.
L'âge d'or : l'ère PlayStation 2 (2000–2004)
La sortie de la PlayStation 2 en 2000 représente un tournant décisif. Son architecture matérielle, basée sur l'Emotion Engine et le Graphics Synthesizer, est notoirement difficile à programmer efficacement. Criterion Software adapte RenderWare pour exploiter cette architecture complexe et publie la version RenderWare 3, qui devient rapidement la référence du middleware de l'époque.
En 2001, le studio Rockstar Games adopte RenderWare pour développer Grand Theft Auto III, premier opus en monde ouvert entièrement en 3D de la série. Le succès mondial du jeu propulse la notoriété du moteur à un niveau sans précédent. Grand Theft Auto: Vice City (2002) et Grand Theft Auto: San Andreas (2004) confirment cette collaboration. Ces titres démontrent la capacité de RenderWare à gérer des environnements urbains vastes, le streaming de zones à la volée, et un grand nombre d'entités simultanées.
Entre 2000 et 2004, Criterion Software revendique plus de 50 % de part de marché parmi les moteurs tiers sur PlayStation 2, avec des centaines de titres sous licence dans le monde entier.
Rachat par Electronic Arts et déclin (2004–2007)
En août 2004, Electronic Arts rachète Criterion Software pour un montant estimé à environ 48 millions de livres sterling. Cette acquisition est perçue par l'industrie avec inquiétude : EA, concurrent direct de nombreux studios utilisant RenderWare, devient soudainement propriétaire du moteur sur lequel reposent leurs jeux en développement.
Les craintes se concrétisent rapidement. EA cesse de développer activement RenderWare comme produit commercial tiers et redirige les équipes de Criterion vers le développement de la série Burnout. Les studios tiers, privés de support sérieux, se tournent vers des alternatives comme Unreal Engine, Havok pour la physique, ou développent leurs propres solutions internes.
La dernière version officielle, RenderWare 3.7, sort en 2007. Elle reste utilisée pour quelques projets en cours mais n'est plus distribuée à de nouveaux clients. Le site officiel renderware.com est progressivement abandonné.
Architecture technique
Philosophie de conception
RenderWare est conçu autour d'un principe central : l'abstraction matérielle. Le moteur présente aux développeurs une API unique et cohérente, quelle que soit la plateforme cible. En interne, les couches basses (backends) sont spécifiques à chaque matériel : le rendu sur PlayStation 2 passe par le Graphics Synthesizer, tandis que sur PC il peut exploiter DirectX ou OpenGL. Le développeur n'a pas à se soucier de ces différences.
L'ensemble du moteur est écrit en C (et partiellement en C++ pour les outils), ce qui garantit une portabilité maximale et des performances proches du matériel. Les conventions de nommage suivent un schéma préfixé systématique : Le préfixe Rw désigne les objets fondamentaux du noyau (RenderWare Core) : RwTexture, RwCamera, RwFrame… Le préfixe Rp désigne les objets des plugins (RenderWare Plugin) : RpWorld, RpClump, RpAtomic… Le préfixe Rt désigne les outils utilitaires (RenderWare Toolkit) : RtBMP, RtTOC…
Le graphe de scène
RenderWare organise les objets 3D dans un graphe de scène (scene graph) hiérarchique, structuré autour de deux concepts clés :
Le RwFrame représente un nœud de transformation dans la hiérarchie. Chaque frame possède une matrice 4×4 décrivant sa position, orientation et échelle relatives à son parent. Les frames peuvent être chaînés pour former des squelettes ou des hiérarchies d'objets (voiture avec roues pivotantes, personnage avec membres articulés).
L'RpAtomic est l'unité de rendu fondamentale : il associe un RpGeometry (le mesh 3D) à un RwFrame (sa position dans le monde). C'est l'objet qui est effectivement soumis au pipeline de rendu.
Le RpClump est un conteneur regroupant plusieurs RpAtomic et leurs frames associés. Il représente typiquement un objet complet (un véhicule, un personnage) avec toutes ses pièces.
Le RpWorld représente l'environnement statique (le niveau, la ville), optimisé via une structure de partitionnement spatial de type arbre BSP (Binary Space Partitioning). Cette structure permet un frustum culling efficace : seules les zones visibles dans le champ de la caméra sont soumises au rendu.
Le pipeline de rendu
Le pipeline de RenderWare suit un modèle modulaire et extensible basé sur des pipelines de traitement chaînés :
Détermination de la visibilité : L'arbre BSP du RpWorld est traversé pour identifier les secteurs (WorldSectors) dans le frustum de la caméra. Un test d'occlusion culling supplémentaire peut être appliqué selon la configuration.
Collecte des atomics : Les RpAtomic visibles sont collectés dans une liste de rendu (render list).
Tri : Les objets peuvent être triés selon leur distance à la caméra, notamment pour la gestion correcte de la transparence (ordre arrière-avant, painter's algorithm) ou pour optimiser les changements d'état matériel (state sorting).
Soumission au matériel : Chaque atomic est soumis à son pipeline de rendu assigné. RenderWare propose un système de pipelines personnalisables : un atomic pipeline est une séquence de nœuds de traitement (pipeline nodes) qui transforment les données de géométrie en primitives soumises au GPU ou au rastériseur logiciel.
Ce système de pipeline nœuds permet aux développeurs de modifier ou d'étendre le rendu à n'importe quelle étape : ajouter un pré-traitement des sommets pour du skinning osseux, insérer un calcul de normal mapping, ou implémenter des effets spéciaux propriétaires.
Formats de fichiers
RenderWare définit ses propres formats binaires, organisés en chunks typés (structure TLV : Type, Length, Value) :
Extension Contenu Description .dff Clump Modèle 3D : géométries, matériaux, hiérarchie de frames, données d'animation .bsp World Niveau statique avec arbre BSP pour le partitionnement spatial .txd Texture Dictionary Dictionnaire de textures : conteneur regroupant plusieurs textures compressées (RGBA, DXT, etc.) .anm Animation Données d'animation squelettique (keyframes de rotation/translation par os) .col Collision Données de collision (format étendu, notamment par Rockstar Games)
Ces formats sont lus et écrits via le système de streams de RenderWare, qui gère la sérialisation et la désérialisation à travers une abstraction de flux générique, compatible fichier disque, mémoire ou réseau.
Textures et compression
La gestion des textures dans RenderWare repose sur les RwTexDictionary (TXD), des conteneurs partagés entre plusieurs objets d'une même scène. Cette architecture permet de mutualiser la mémoire vidéo : plusieurs modèles référençant les mêmes textures n'en chargent qu'une seule instance en VRAM.
Sur PlayStation 2, les textures sont stockées dans un format propriétaire exploitant le Graphics Synthesizer, avec un support des textures palettisées (4 ou 8 bits par pixel avec palette de couleurs) pour économiser la VRAM limitée (4 Mo). Sur PC, le moteur supporte les formats DXT1, DXT3 et DXT5 (compression S3TC), ainsi que les formats non compressés RGBA 32 bits.
Systèmes complémentaires
À partir de la version 3.x, RenderWare se structure en une suite de produits modulaires :
RenderWare Graphics : Le moteur graphique 3D décrit ci-dessus, cœur de la suite. RenderWare Audio : Moteur audio intégré gérant la lecture de sons, le mixage 3D positionnel et les effets DSP. Basé sur la technologie Sensaura. RenderWare Physics : Module de simulation physique pour la gestion des corps rigides, des articulations et des détections de collisions. Concurrent direct de Havok sur les projets utilisant déjà RenderWare Graphics. RenderWare AI : Module expérimental de gestion de l'intelligence artificielle (navigation, comportements d'agents).
RenderWare Studio
Pour faciliter la création de contenu, Criterion Software fournit RenderWare Studio, un environnement de développement intégré permettant aux artistes et game designers de : Assembler des scènes à partir de ressources exportées depuis 3ds Max ou Maya via des plugins dédiés. Prévisualiser le rendu en temps réel dans l'environnement cible (avec émulation des caractéristiques de la plateforme visée). Configurer les pipelines de rendu, les matériaux et les propriétés physiques via une interface graphique. Générer les fichiers de données finaux (DFF, BSP, TXD) prêts à être intégrés dans le projet.
Cette chaîne d'outils est un argument commercial majeur de RenderWare : elle réduit le fossé entre les artistes et le code moteur, permettant une itération plus rapide sur les visuels.
Modèle de distribution et de licence
Licence par titre
Criterion Software distribue RenderWare selon un modèle de licence par titre (per-title licensing), courant dans l'industrie du middleware de l'époque. Les studios paient : Une redevance initiale (upfront fee) pour accéder au SDK, aux outils et au support technique. Une redevance sur les ventes (royalty), généralement calculée comme un pourcentage du chiffre d'affaires généré par chaque titre utilisant le moteur.
Ce modèle permettait à des studios indépendants de taille modeste d'accéder à une technologie de pointe sans devoir investir des années-hommes dans le développement d'un moteur maison.
Le SDK RenderWare
Le SDK (Software Development Kit) est livré sous forme de : Bibliothèques compilées (.lib sous Windows, archives sur console) spécifiques à chaque plateforme cible. Fichiers d'en-tête C exposant l'intégralité de l'API publique. Documentation technique exhaustive (plusieurs milliers de pages au format HTML ou PDF). Exemples de code (samples) illustrant les fonctionnalités du moteur. Plugins exportateurs pour 3ds Max et Maya, permettant l'export des ressources dans les formats natifs RenderWare.
Criterion Software assure un support technique dédié aux studios licenciés, via un portail web privé (RWZone) donnant accès aux mises à jour, aux correctifs (patches) et à une base de connaissances technique.
Portabilité multiplateforme