🏞️ CryEngine – Moteur AAA (C++, Schematyc) & Rendu Photoréaliste
Guide complet IDEO-Lab sur le moteur de jeu de Crytek (Crysis, Hunt: Showdown).
Concept : Moteur AAA
Crytek, Moteur 3D, Photoréalisme (FPS).
CryEngine Crytek AAAvs. Unity / Unreal
Comparaison (Courbe d'apprentissage, C++, Graphismes).
Unity Unreal ComparatifLicence & Installation
Modèle (Royalty 5%), Launcher, Accès C++.
Licence LauncherSandbox Editor (Éditeur)
Interface (Viewport, Outliner, Details), WYSIWYP.
Sandbox ÉditeurTerrain Editor
Outil puissant de sculpture et peinture de terrain.
Terrain VégétationTrack View (Cinématiques)
Éditeur de timeline (similaire à Sequencer/Timeline).
Track View CinématiqueArchitecture : Entity
L'objet de base (IEntity). (Équiv. GameObject/Actor).
Architecture : Component
La brique de fonctionnalité (IEntityComponent).
Exemple : C++ Component
Implémentation (Initialize, ProcessEvent).
Scripting : C++ API
Accès au moteur (gEnv), Événements (SEntityEvent).
Scripting : Schematyc
Scripting visuel (Nodal). (Équiv. Blueprints).
Schematyc Visual ScriptingScripting (Legacy/Abandonné)
Lua (Ancien), C# (Abandonné).
Lua C# LegacyRendu : SVOGI
Sparse Voxel Octree Global Illumination (GI Dynamique).
SVOGI Rendu GIRendu : Eau & Végétation
Points forts historiques (Caustiques, Océans, Vent).
Végétation EauRendu : Material Editor
Éditeur de Shaders nodal (PBR).
Material Shader PBRPhysique (CryPhysics)
Moteur physique intégré (Rigid Bodies, Ragdolls, Joints).
Physique CryPhysicsAudio (CrySound)
Moteur audio intégré, Middleware (Wwise, FMOD).
Audio WwiseAsset Pipeline
Importation (CGF, SKD), Asset Browser, Resource Compiler.
Assets CGFMarketplace
Marché d'Assets (plus petit qu'Unity/Unreal).
Marketplace AssetsJeux Notables
Far Cry (1), Crysis (Saga), Hunt: Showdown, Star Citizen.
Crysis Hunt: ShowdownHéritage : O3DE
Fork Amazon (Lumberyard) -> Open 3D Engine (Linux Foundation).
Amazon Lumberyard O3DELa Plateforme de Rendu "AAA"
CryEngine est un moteur de jeu (Game Engine) 3D temps réel, développé par Crytek. C'est un moteur "AAA" (haut de gamme), historiquement réputé pour repousser les limites du photoréalisme graphique, en particulier dans les environnements extérieurs (végétation, éclairage).
Caractéristiques Clés
- Focus Graphique : Son point fort a toujours été le rendu "état de l'art" (éclairage, ombres, végétation, eau). C'est sa "marque de fabrique".
- Scripting (C++) : Le langage principal pour le gameplay est le C++.
- Scripting (Visuel) : Propose Schematyc (voir 4.2) comme alternative (similaire aux Blueprints d'Unreal).
- Éditeur (Sandbox) : Un éditeur "What You See Is What You Play" (WYSIWYP) très puissant, notamment pour la création de terrains (Level Design).
- Code Source : Accès complet au code source C++ (similaire à Unreal).
Historique & Jeux Clés
CryEngine a été révélé au monde par ses jeux "vitrines" :
- Far Cry (2004) : (Le premier) Révolutionne les environnements extérieurs (îles, eau, distance d'affichage).
- Crysis (2007) : (Le "Benchmark") Célèbre pour le mème "But can it run Crysis?". Il a établi une nouvelle norme de photoréalisme (Nano Suit, destruction).
- Crysis 2 & 3 : Ont continué à pousser le réalisme graphique.
- Ryse: Son of Rome (2013) : Vitrine de lancement de la Xbox One.
- Hunt: Showdown (2019) : Le succès moderne de Crytek, prouvant la capacité du moteur pour des jeux multijoueurs (PvPvE) atmosphériques.
- Star Citizen : (A commencé sur un fork de CryEngine, avant de migrer vers Lumberyard/O3DE, voir 7.3).
CryEngine est le "troisième" grand moteur AAA, bien que moins populaire que les deux géants.
| Critère | CryEngine | Unreal Engine | Unity |
|---|---|---|---|
| Point Fort | Rendu (Végétation, Extérieurs), FPS. | Rendu AAA (Lumen/Nanite), Outils (Cinématiques). | Flexibilité (2D/3D), Mobile, Facilité (C#). |
| Scripting Principal | C++, Schematyc (Visuel) | C++, Blueprints (Visuel) | C# |
| Courbe d'Apprentissage | Très Difficile (Réputé le plus dur). | Difficile (C++), Moyenne (BP). | Facile. |
| Documentation | Limitée (par rapport aux autres). | Très bonne (C++), Excellente (BP). | Excellente (Immense). |
| Communauté | Petite. | Grande (AAA, Cinéma). | Immense (Indie, Mobile). |
| Asset Store | Faible (Marketplace limité). | Bon (Marketplace, Quixel). | Immense (Asset Store). |
Modèle de Licence (Similaire à Unreal)
CryEngine utilise un modèle basé sur les royalties (redevances).
- Gratuit : Utilisation gratuite pour le développement.
- Royalty (Redevance) : 5% sur les revenus bruts.
- Seuil : La redevance ne s'applique qu'après que votre jeu ait généré ses premiers $5,000 USD (par an).
Installation (Launcher)
Similaire à Unreal, l'installation se fait via le CRYENGINE Launcher.
- Télécharger et installer le Launcher depuis cryengine.com.
- (Onglet "My Engines") Installer une version du moteur (ex: 5.7).
- (Onglet "My Projects") Créer un nouveau projet (C++ ou Schematyc).
Accès C++
Pour programmer en C++, vous devez également installer Visual Studio (avec les outils C++ Desktop). L'éditeur CryEngine (Sandbox) s'intègre à Visual Studio pour la compilation et le débogage (similaire à Unreal).
Interface (UI)
Sandbox est le nom de l'éditeur de niveau (Level Editor) de CryEngine. Il est similaire à Unreal/Unity.
| Fenêtre (CryEngine) | Équivalent (Unreal) | Équivalent (Unity) |
|---|---|---|
| Perspective Viewport | Viewport | Scene View |
| Level Explorer | World Outliner | Hierarchy |
| Entity Properties | Details | Inspector |
| Asset Browser | Content Drawer | Project |
WYSIWYP (What You See Is What You Play)
La philosophie de Sandbox est le "temps réel". Il n'y a (presque) pas de distinction entre le mode "Édition" (Scene) et le mode "Jeu" (Game) d'Unity.
Vous appuyez sur Ctrl+G (Game Mode) et vous "possédez" (Possess) instantanément le personnage dans l'éditeur pour tester. (Similaire au "Play in Editor" (PIE) d'Unreal).
C'est le point fort historique de CryEngine (depuis Far Cry). Le moteur excelle dans la création de vastes environnements extérieurs (Open Worlds).
Terrain Editor
Un outil intégré (Terrain > Edit Terrain) pour :
- Sculpter (Sculpting) : Modifier la hauteur (Heightmap) du terrain (élever, creuser, lisser).
- Peindre (Painting) : Appliquer des Layers (Couches) de matériaux (ex: Herbe, Roche, Sable) qui se mélangent (blend) en fonction de la hauteur ou de la pente.
Outil de Végétation
Un outil (Vegetation Painter) qui permet de "peindre" des assets (ex: arbres, buissons, rochers) sur le terrain, en respectant des règles (ex: "ne pas peindre sur les rochers", "varier la taille/rotation").
Track View est l'outil de cinématique (non-linéaire) de CryEngine. C'est l'équivalent du Sequencer (Unreal) ou de la Timeline (Unity).
Fonctionnement
Il permet de créer des "Séquences" (.seq) qui animent des objets et des propriétés via une Timeline (chronologie).
Usage :
- Cutscenes (Cinématiques) : Animer des caméras, des personnages (déclencher des animations), des lumières.
- Événements Scriptés : (ex: "Faire trembler la caméra (Keyframe), jouer un son (Keyframe), puis faire s'effondrer un pont (Keyframe)").
CryEngine (depuis v5) utilise une architecture ECS (Entity Component System), très similaire à celle d'Unity.
Entity (Entité)
L'Entité (IEntity) est l'objet de base (le "conteneur") dans la scène. (Équivalent : GameObject (Unity) / AActor (Unreal)).
Par défaut, une Entité est "vide" et ne possède qu'un Transform (Position, Rotation, Scale).
Elle obtient ses fonctionnalités (visuel, physique, logique) par l'ajout de Components (3.2).
Le Component (Composant) est la "brique" de fonctionnalité qui est attachée à une Entité.
Philosophie : Composition. (Au lieu d'hériter de "Joueur" qui hérite de "Physique", on prend une Entité "Joueur" et on lui *attache* un RigidbodyComponent et un PlayerInputComponent).
Types de Composants (Cœur)
MeshComponent(Rendu 3D)LightComponent(Lumière)CameraComponent(Caméra)RigidbodyComponent(Physique Lourd)CharacterControllerComponent(Physique Joueur)AudioSourceComponent(Son)IEntityComponent(Base) : (Voir 3.3) La classe C++ dont vos scripts héritent.SchematycComponent : (Voir 4.2) Le composant qui exécute un script visuel Schematyc.
IEntityComponent)C'est l'équivalent du MonoBehaviour d'Unity. C'est la classe C++ de base pour votre "logique" (script) de gameplay.
// Fichier: PlayerComponent.h #pragma once #includeclass CPlayerComponent final : public IEntityComponent { public: // ... // Cycle de vie : (Équiv. Awake/Start) virtual void Initialize() override; // Cycle de vie : (Équiv. Update/FixedUpdate) // (Reçoit tous les événements de l'entité) virtual void ProcessEvent(SEntityEvent& event) override; // Rétro-compatibilité (Helper) virtual uint64 GetEventMask() const override { // (S'abonner à l'événement UPDATE) return BIT64(ENTITY_EVENT_UPDATE); } protected: float m_speed = 5.0f; Vec3 m_moveDirection; }; // Fichier: PlayerComponent.cpp #include "PlayerComponent.h" #include // (Pour l'Input) void CPlayerComponent::Initialize() { // (Initialiser les composants, ex: Rigidbody) // (Abonnement aux inputs...) } void CPlayerComponent::ProcessEvent(SEntityEvent& event) { // (Si événement = Update) if (event.event == ENTITY_EVENT_UPDATE) { // (Récupérer 'delta') const float deltaTime = event.fParam[0]; // (Logique de jeu...) // (ex: m_moveDirection = ...) // Déplacer l'Entité (le Transform) GetEntity()->Move(m_moveDirection * m_speed * deltaTime); } }
gEnv)L'API C++ de CryEngine est vaste. La communication avec les "systèmes" (moteurs) globaux du moteur se fait (généralement) via le pointeur global gEnv (Global Environment).
// 'gEnv' est un pointeur global (Singleton) vers 'SSystemGlobalEnvironment'
// (Exemple : Obtenir le moteur de Rendu)
if (gEnv->pRenderer) { ... }
// (Exemple : Logger dans la console de l'éditeur)
gEnv->pLog->Log("Hello World");
// (Exemple : Obtenir le système de Physique)
gEnv->pPhysicalWorld->...
// (Exemple : Obtenir le système d'Input)
gEnv->pInput->...SEntityEvent (Événements)
La fonction ProcessEvent (voir 3.3) reçoit des événements. Les plus importants :
ENTITY_EVENT_UPDATE: (Le "Update" / Tick) Appelé à chaque frame.ENTITY_EVENT_START_GAME: (Le "BeginPlay" / Start) Appelé quand le jeu démarre.ENTITY_EVENT_RESET: (Mode Éditeur vs Jeu).
Schematyc (introduit en ~5.4) est le système de scripting visuel (nodal) de CryEngine. C'est le remplacement moderne de "Flow Graph".C'est l'équivalent direct des Blueprints (Unreal) ou du Visual Scripting (Unity).
Fonctionnement
Il permet aux designers (non-programmeurs) de créer une logique de gameplay (ex: "Ouvrir une porte si le joueur a la clé") en connectant des nœuds (nodes) dans une interface graphique (l'Éditeur Schematyc).
Interopérabilité (C++ & Schematyc)
Le workflow idéal (similaire à Unreal) est :
- (C++) Le Programmeur : Crée les systèmes de base (performance) en C++.
- (C++) Le Programmeur : Expose ces fonctions et propriétés à Schematyc (via des macros C++).
- (Schematyc) Le Designer : Utilise ces nœuds (C++) personnalisés dans le graphe visuel pour créer la logique de jeu.
Lua
Dans les anciennes versions de CryEngine (ex: CryEngine 3, Crysis 2/3), Lua était le langage de scripting principal pour le gameplay (similaire à GDScript pour Godot).
Le C++ gérait le "moteur", et Lua gérait la "logique" (IA, Armes, UI).
Statut : Largement obsolète/déprécié dans CryEngine 5, au profit de Schematyc et d'une approche C++ plus unifiée.
C#
Durant une brève période (CryEngine 5.0 - 5.2), Crytek a tenté d'intégrer le support C# (.NET Core) pour concurrencer directement Unity.
Statut : Totalement abandonné (Removed). Crytek a stoppé le développement du "bridge" C# en 2018 pour se reconcentrer sur le C++ et Schematyc.
Lumen (UE5) et SVOGI (CryEngine) sont les deux technologies concurrentes pour l'Illumination Globale (GI) dynamique.
SVOGI (Sparse Voxel Octree Global Illumination)
C'est la solution "maison" de CryEngine pour le GI temps réel. Elle permet les "rebonds" (bounces) de lumière dynamiques.
Le Problème (Avant)
L'éclairage "indirect" (les rebonds de lumière, ex: la lumière du soleil qui rebondit sur un mur rouge et colore le plafond en rouge) était pré-calculé ("baked").
Ce "baking" (ex: "Lightmass" dans UE4) prenait des heures (voire des jours) de calcul et était statique (si vous déplaciez une lumière ou un mur, il fallait tout re-calculer).
La Solution (SVOGI)
SVOGI calcule l'éclairage indirect et les réflexions en temps réel (dynamique). Si vous déplacez le soleil, l'éclairage de la scène est mis à jour instantanément.
Historiquement (depuis Far Cry 1), CryEngine a toujours été le leader incontesté pour le rendu photoréaliste des environnements extérieurs.
Végétation
L'outil de Végétation (Vegetation Tool) permet de "peindre" des millions d'instances d'arbres, d'herbes, et de buissons.
Points Clés : Rendu (shaders) de "subsurface scattering" (lumière passant à travers les feuilles) et animation (vent) très performants.
Eau (Océans & Rivières)
CryEngine est réputé pour sa simulation d'eau :
- Caustiques (Caustics) : Simulation des réflexions/réfractions de la lumière sous l'eau.
- Vagues (Waves) : Simulation de vagues d'océan (physique).
Le Material Editor (Éditeur de Matériaux) est l'éditeur nodal (visuel) de CryEngine pour créer des Shaders (programmes GPU), similaire à celui d'Unreal.
Matériau (Material)
Un Matériau (.mtl) est un Asset qui définit l'apparence d'une surface.
PBR (Physically Based Rendering)
CryEngine utilise un workflow PBR (Rendu Basé sur la Physique) (standard "Metallic/Roughness"). Le nœud "Matériau" final expose des entrées physiques :
- Base Color : La couleur/texture (Albedo).
- Metallic : (0=Non-métal, 1=Métal).
- Roughness (Rugosité) : (0=Miroir parfait, 1=Mat/Diffus).
- Normal : (La "fausse" texture de relief (Normal Map)).
CryEngine utilise son propre moteur physique intégré : CryPhysics.
(Contrairement à Unity (PhysX/Box2D) ou UE5 (Chaos)).
Fonctionnalités
- Rigid Bodies : Simulation d'objets dynamiques (caisses, débris).
- Ragdolls : Simulation physique des personnages (morts).
- Joints : Contraintes (charnières, ressorts).
- Véhicules : Moteur physique de véhicules (voitures, tanks).
- Destruction (Legacy) : (Crysis) Permettait la destruction (basique), mais a été moins développé que le "Chaos" d'Unreal.
CryEngine inclut un moteur audio intégré (CrySound).
Cependant, pour les productions AAA, il est conçu pour s'intégrer (via "Middleware Abstraction Layer" - MALA) aux deux standards de l'industrie :
- Wwise (Audiokinetic) : (Le standard de l'industrie AAA).
- FMOD (Firelight Technologies) : (Très populaire chez les Indies/AA).
Cela permet aux "Sound Designers" de travailler dans l'outil (Wwise/FMOD) qu'ils maîtrisent, tandis que le moteur (CryEngine) se contente de déclencher les événements audio.
CryEngine (historiquement) utilise un format d'asset "compilé" (similaire à un moteur de jeu "old-school").
Formats d'Assets
.CGF(Crytek Geometry Format) : Un Mesh (maillage) statique..SKD(Skinned Mesh) : Un Mesh "skinné" (avec squelette/armature) pour l'animation..CDA(Character Definition) : Fichier qui assemble un squelette, des meshs, et des animations..MTL(Material) : Le fichier Matériau (Shader + Textures).
Asset Processor (Resource Compiler)
Contrairement à Unity (qui lit .fbx / .png directement), CryEngine (traditionnellement) nécessitait un "Resource Compiler" (RC).
Flux : L'artiste (3ds Max/Maya) exporte (ex: .fbx). Le "RC" (Asset Processor) (qui tourne en fond) détecte le .fbx et le compile en un .CGF optimisé (que le moteur peut lire).
CryEngine possède une Marketplace (similaire à l'Asset Store d'Unity ou au Marketplace d'Unreal) accessible via le Launcher.
Comparaison : L'écosystème de CryEngine est beaucoup plus petit que celui de ses concurrents.
- La quantité d'assets (3D, scripts, outils) disponibles est très inférieure.
- La communauté (forums, tutoriels) est également plus restreinte.
C'est l'un des inconvénients majeurs pour les développeurs indépendants (Indies) qui dépendent de l'Asset Store.
- Far Cry (2004) (Le premier, qui a révélé le moteur)
- Série Crysis (2007-2013) (La vitrine technologique)
- Ryse: Son of Rome (2013)
- Evolve (2015)
- Prey (2017)
- Hunt: Showdown (2019) (Le succès récent de Crytek)
- Star Citizen (Utilisait un fork de CryEngine, avant de migrer vers Lumberyard/O3DE)
Amazon Lumberyard (Fork)
En 2015, Amazon a acheté une licence (très coûteuse) d'une ancienne version de CryEngine (CryEngine 3.8) et l'a "forkée" (dérivée) pour créer son propre moteur : Amazon Lumberyard.
Lumberyard était gratuit et profondément intégré à AWS (Twitch, GameLift...). (Ex: Star Citizen a migré de CryEngine vers Lumberyard).
O3DE (Open 3D Engine)
En 2021, Amazon a abandonné Lumberyard et a donné le code source à la Linux Foundation.
Ce fork (de Lumberyard, qui était un fork de CryEngine) a été renommé O3DE (Open 3D Engine) et est maintenant un moteur AAA 100% open-source (Apache 2.0) concurrent d'Unreal et Godot.
