Version en ligne

Tutoriel : Réalisez votre jeu vidéo avec UDK

Table des matières

Réalisez votre jeu vidéo avec UDK
Unreal Development Kit
Un peu d'histoire...
Capacités et performances
Qu'est-ce qu'un moteur de jeu ?
Installer et prendre en main UDK
Téléchargement
Prise en main d'UDK Editor
Votre première map
Une map basique
Décorez votre map avec les Static Meshes
BSP et models : une explication
La théorie du Level Design
L'éclairage
Eclairage statique, éclairage dynamique
Les sources de lumière
Lightmass : l'éclairage haut de gamme
Unreal Kismet
Une nouvelle map de test
Faire clignoter une lumière avec Kismet
Des déclencheurs avec les volumes
Kismet : techniques avancées
Unreal Matinee
Jouons avec Kismet
Les effets spéciaux
Son et musique dans UDK
Des étincelles, du feu, des explosions!
Les terrains dans UDK
Une map complète
Un exemple avec Unreal Tournament 3
Publier une map
Créez votre map !
Comment créer des éléments de jeu vidéo ?
Créer des models : le design modulaire
Créer des matériaux : textures, reliefs, reflets
La modélisation high-poly et le jeu vidéo
Importer du contenu
Un mot sur les packages
Importer un model
Importer des textures et créer un matériau
Gérer les models : collisions, matériaux
Le Lightmapping
Les matériaux en détail
Textures et matériaux
Un matériau dynamique
Instances et paramètres
Des models dynamiques avec les Skeletal Meshes
Créer un model animé
Importer un model animé
Placer un model animé dans une map et déclencher une animation
Particules et effets spéciaux
Introduction aux systèmes de particules
Débuter avec Cascade : un ParticleSystem basique
Effets avancés
Gérer vos sons
Créer du son pour un jeu vidéo
Importer des sons dans UDK
Pour aller plus loin
Introduction
Pour commencer
Installer un environnement de développement
Votre premier objet dans UDK
La caisse : fichiers utiles
Votre premier fichier UnrealScript
Compiler et utiliser la zCrate
Un objet dynamique avec UnrealScript
Collisions et corrections diverses
Attributs et contenu associé
Une caisse à couleur variable
Les armes dans UDK
Le SkeletalMesh en détail
Structure générale d'une arme dans UDK
Téléchargez le Burner Rifle
Une arme basique
UTWeapon et l'arme sans munitions
Test et gestion des tirs
Quelques ajouts utiles
Effets spéciaux et vue à la troisième personne
Un peu de théorie
Variables, types et classes
L'architecture de votre jeu vidéo
Quelques points spécifiques
Interagir avec le joueur
Configurer le jeu avec les fichiers INI
Mise en pratique
Un TP pour une action
Introduction
Scaleform : qu'est-ce que c'est ?
Préparer son environnement de développement Flash
Quelle documentation utiliser ?
Vos débuts en douceur : Hello World !
Un fichier Flash basique pour commencer
Importation et utilisation
Des images et du décor
Un système de menus pour votre jeu
Architecture d'un menu principal
Importer un bouton
Interfacer Scalerform et Unrealscript
Un menu complet
Un élément de liste dans Flash
Une liste complète
Unrealscript et les sources de contenu
HUD et interface en jeu
Le HUD
Réaliser un menu de pause
Un menu réactif aux objets
Des outils bien pratiques
Optimisez vos StaticMeshes
Intégrez des vidéos dans votre jeu
Des arbres réalistes avec SpeedTree
UDK par l'exemple avec zFortress
L'architecture du jeu
La création du contenu
Gestion du projet

Réalisez votre jeu vidéo avec UDK

Vous rêvez de réaliser un jeu vidéo aux graphismes exceptionnels, mais vous ne savez pas comment vous y prendre ?
Un FPS, un jeu de stratégie pour PC et Mac, ou un mini-jeu en 3D pour iPhone ? Tout ça est possible...

Vous êtes au bon endroit : Unreal Development Kit est un moteur de jeu gratuit, multiplateforme, un des leaders mondiaux dans le jeu vidéo. Utilisé avant tout par les professionnels, il est depuis quelques années ouvert à tous et à l'aide de ce cours, vous pouvez apprendre à le maîtriser.

Ce tutoriel vous permet de débuter avec UDK et créer votre propre jeu vidéo. Vous pourrez dessiner votre univers avec les logiciels classiques du graphisme (Blender, Maya, Photoshop, Flash...) et en faire des environnements jouables en multijoueurs avec vos propres règles de jeu, créer vos véhicules, vos armes...
Tout est possible. Ce sont les outils des plus grands studios de jeu vidéo qui sont présentés ici !

Le tutoriel s'architecture autour de plusieurs grandes parties, toutes essentielles dans la construction d'un jeu vidéo moderne.

Image utilisateurDeck, un des niveaux de démonstration

Image utilisateurUn exemple de niveau de jeu vidéo réalisé avec UDK

Image utilisateurVotre interface 3D en jeu avec Scaleform

Unreal Development Kit

Un peu d'histoire...

UDK, ou Unreal Development Kit, est un moteur de jeu vidéo développé par Epic Games.
Aussi connu sous le nom d'Unreal Engine 3, c'est un environnement de développement complet pour créer des jeux vidéos de qualité professionnelle et on trouve parmi ses utilisateurs des jeux vidéos bien connus:

Comme vous le voyez, on parle de très gros titres commerciaux.

Encore mieux: vous pouvez vendre des jeux commerciaux avec. Vous devrez cependant vous acquitter de 99$, puis, passé 50 000$ de revenus commerciaux, Epic Games en percevra 25%. Au delà des chiffres, ce qui compte pour vous, c'est que vous avez à votre disposition un outil fiable- pour preuve ses 15 ans d'existence- bien documenté et extrêmement puissant !

Un peu d'histoire...

Unreal Development Kit Capacités et performances

Un peu d'histoire...

Le moteur Unreal Engine n'est pas vraiment un petit nouveau puisqu'il a fait son apparition en 1998, pour le jeu vidéo Unreal développé par Epic Games - puis le célèbre Unreal Tournament qui assurera une visibilité énorme à ce moteur.

L'Unreal Engine

Déjà techniquement très en avance, Unreal Engine dans sa première mouture gère l'éclairage dynamique et même le rendu en temps réel dans l'éditeur, technique dont l'introduction n'est que très récente dans le moteur Source par exemple.
A cette époque, la notion de moteur de jeu n'est qu'une bonne pratique de développement. Pour des raisons de concurrence, chaque société développait l'ensemble de son code. Mais nous reviendrons là-dessus par la suite. :)

Unreal Engine proposait également dès sa première version un langage de script propriétaire, Unreal Script, qui facilite le développement puisqu'il permet d'oublier la gestion du matériel.

Unreal Engine 2 et 3

Unreal Engine 2 est la première mise à jour du moteur. Elle intervient en 2002, ce qui est un cycle assez court pour un système aussi complexe.
Cette nouvelle version apporte la gestion de la physique, domaine alors en plein essor dans le jeu vidéo (Half-Life 2 suivra quelques années plus tard).
Et, pour la première fois, le moteur devient multiplateforme puisqu'il fonctionnera sous XBox et GameCube !

Unreal Engine 3 sera révélé en 2007, avec Unreal Tournament 3, Gears of War 2 et de nombreux jeux qui suivront. En effet, Unreal Engine 3 est l'occasion pour Epic Games de proposer son moteur comme base de travail aux studios de jeu vidéo, moteur qui rencontrera un succès considérable !

Côté technique, UE3 apporte les ombres dynamiques, une physique améliorée qui embarque un support de PhysX, l'API de nVidia pour la physique via CUDA, ainsi qu'un bon nombre d'optimisations.

Comparaison des versionsComparaison des rendus des différentes versions, avec Malcolm

L'arrivée d'UDK

Enfin, fin novembre 2009, Epic Games annonce l'arrivée d'une version mise à jour du moteur Unreal Engine sous la forme de l'Unreal Development Kit, ainsi qu'un changement considérable de la politique de licence. En effet, UDK est gratuit pour un usage non commercial, ce qui fait de ce moteur une référence dans le monde du modding !
Il s'agit de l'Unreal Engine 3, mis à jour, avec tous les outils proposés au professionnels, sans limitation.


Unreal Development Kit Capacités et performances

Capacités et performances

Un peu d'histoire... Qu'est-ce qu'un moteur de jeu ?

Capacités et performances

Vous pouvez d'ores et déjà trouver toutes les informations nécessaires sur UDK sur le site officiel : http://www.udk.com
On va commencer ce cours par un récapitulatif des fonctions qui existent dans ce moteur.

Rendu graphique

Les principales caractéristiques du rendu d'UDK sont les suivantes :

Image utilisateurUne interface en jeu avec Scaleform

Gestion du contenu
Fonctionnalités de jeu

UDK vous apporte les fonctions suivantes pour le jeu lui-même :

Plateformes supportées

Les plateformes supportées sont les suivantes :

Aucune limite au style : c'est votre jeu !

Image utilisateurzFortress, un Tower Defense réalisé entièrement sur le Site du Zéro

Image utilisateurDans un autre style, un décor médiéval

Image utilisateurDungeon Defenders, un jeu indépendant avec UDK


Un peu d'histoire... Qu'est-ce qu'un moteur de jeu ?

Qu'est-ce qu'un moteur de jeu ?

Capacités et performances Installer et prendre en main UDK

Qu'est-ce qu'un moteur de jeu ?

Il est temps de préciser un peu ce qui se cache derrière cette grosse expression. Si vous faites de la programmation, vous avez l'habitude d'écrire du code, des fonctions, de compiler des programmes... Vous savez ce qui se cache derrière une variable, un objet, bref vous comprenez comment un jeu vidéo fonctionne.

En revanche, si vous êtes graphistes, vous analysez les images, vous comprenez les effets recherchés, le sens des symboles et des mises en scène, vous savez choisir des couleurs ou composer une scène.
Et si enfin vous êtes un joueur, ce que vous savez faire c'est gagner ! :pirate:

Le problème du jeu vidéo c'est la mise en commun de ces différents savoirs.
Un jeu vidéo réussi est obligatoirement le résultat de différents travaux, aussi bien sur la programmation, sur l'art, ou sur le gameplay.
Or, deux problèmes se présentent :

Image utilisateur

C'est là qu'intervient le concept de moteur de jeu. Le moteur est un environnement de développement (l'équivalent par exemple de Visual Studio, Eclipse ou Code::Blocks en programmation), qui embarque généralement la plupart des fonctionnalités présentées précédemment.
Son objectif est multiple :

Il est donc important de comprendre qu'un logiciel comme UDK est en fait un ensemble de différents outils, fédérés sous une seule interface, et qui permettent de créer votre jeu.
Il n'est pas lié à un jeu précis, et c'est à la fois le programme qui est à la base du jeu, et l'éditeur que vous allez utiliser pour le créer. Pour créer un jeu vidéo avec UDK, vous allez donc programmer, créer des objets visuels, des sons... Et tout intégrer en un jeu vidéo.

Image utilisateurUn système de particules dans UDK : même pour des effets avancés, la création graphique ne requiert pas de programmation

Ce que vous pouvez faire

Vous pouvez réaliser relativement facilement ces différents types de jeux vidéo :

En clair, vous pouvez réaliser n'importe quel type de gameplay. UDK n'est pas un outil de modding : c'est un outil généraliste de création de jeu. Vous verrez plus tard que le code d'Unreal Tournament 3, un FPS, est fourni comme exemple mais vous n'êtes en aucun cas obligés de vous en servir !

Image utilisateurUDK, c'est aussi de la programmation !

Ce que vous ne pouvez pas faire

Vous n'apprendrez pas à réaliser un MMORPG, en raison des limites du code de gestion de réseau qui n'est pas prévu pour gérer de nombreux joueurs. Il faudra vous contenter d'une trentaine de joueurs. Par ailleurs, l'immensité du travail requis pour un MMORPG 3D rend difficile ce genre de tâche, quelle que soit la technologie. Autant être sérieux d'emblée !

Il est important de bien comprendre ces principes pour la suite.

Et maintenant, pour ceux qui sont toujours là, passons à l'installation d'UDK !


Capacités et performances Installer et prendre en main UDK

Installer et prendre en main UDK

Qu'est-ce qu'un moteur de jeu ? Téléchargement

Si vous lisez ces lignes, c'est que vous êtes toujours motivés et que la partie précédente ne vous a pas effrayés...
C'est parfait, vous allez pouvoir commencer le travail et installer UDK !

Téléchargement

Installer et prendre en main UDK Prise en main d'UDK Editor

Téléchargement

Configuration matérielle requise

Eh oui... UDK est avant tout un jeu vidéo! Votre machine doit se conformer à ces caractéristiques :

Téléchargement

UDK est disponible au téléchargement sans aucune formalité. C'est par ici que ça se passe !

Eh, c'est en anglais!

Oui... Et c'est peut-être la première chose qui va vous faire peur avec UDK : tout sera toujours en anglais !
Rassurez-vous, nul besoin d'être bilingue, comme dans tout domaine de l'informatique vous allez peu à peu découvrir le vocabulaire: material, mesh, actor, tous ces termes obscurs n'auront bientôt plus de secrets pour vous.
J'utiliserai dans ce cours un maximum de termes anglais, pour que vous vous retrouviez dans l'interface, et que vous puissiez faire des recherches en anglais.

Quelle version faut-il prendre ?

Vous devriez choisir la version la plus récente. Il y a des mises à jour régulières, mais celles-ci ne devraient pas trop modifier le fonctionnement. Vous pouvez donc utiliser une version plus à jour que celle utilisée pour ce cours, en revanche méfiez-vous des plus anciennes.

L'installation est relativement évidente, je ne vous ferai pas l'insulte de la détailler. Il vous suffit d'installer UDK là où vous avez de la place sur votre machine.


Installer et prendre en main UDK Prise en main d'UDK Editor

Prise en main d'UDK Editor

Téléchargement Votre première map

Prise en main d'UDK Editor

UDK Editor, c'est l'outil central d'UDK, celui que vous utiliserez en permanence. Nous allons le découvrir tout de suite ! Mais d'abord, voici une information essentielle.

La documentation

UDK est un moteur qui dispose d'une communauté importante.
Par conséquent, si vous avez le moindre problème, commencez par faire une recherche ! Vous aurez à coup sûr des réponses sur Internet.

Avec toute cette documentation, vous pouvez tout apprendre. :)

Lancer UDK Game

On commence par ce qui va vous faire rêver : les démos d'UDK ! Vous devriez maintenant disposer d'un raccourci UDK Game dans le menu Démarrer. Cliquez dessus, et attendez le lancement du jeu...
Normalement ce dernier se lance avec une interface minimaliste, et quelques options. Cliquez sur Instant Action pour lancer rapidement une map en solo.

UDK Game

Ensuite, il vous suffit de choisir dans l'onglet Map une des nombreuses démos du jeu :

Enfin, cliquez sur Start Game pour lancer, et amusez-vous bien. :p

Comment on se déplace ?

Comme dans tout FPS : Z, Q, S, D !

Les touches de déplacement en avant et à gauche ne marchent pas !

Si c'est le cas, UDK est en mode QWERTY... Appuyez sur ALT et SHIFT en même temps pour passer votre clavier dans ce mode. N'oubliez pas de revenir en arrière avec la même combinaison une fois le jeu terminé, ou vous aurez d'étranges surprises en modifiant les propriétés des objets...

UDK Editor

On passe aux choses sérieuses maintenant ? Lancez UDK Editor.
Cette fois, c'est moins beau et surtout plus complexe, alors c'est parti pour une présentation de votre nouvel outil de travail !

Content Browser

La fenêtre dans laquelle vous démarrez s'appelle le Content Browser. C'est comme l'explorateur Windows, mais vous y retrouverez uniquement le contenu de jeu que vous y avez ajouté, ainsi que celui qui est fourni par défaut.
Pour l'instant, c'est un peu compliqué : on va donc le fermer. Pas d'inquiétudes : on va rapidement en parler.

Et maintenant, vous devriez voir apparaître l'interface principale d'UDK Editor. C'est parti pour un plan !

Fenêtre principale

N'ayez pas peur : tout ça est relativement simple.

Jeu dans l'éditeurEt voilà, vous pouvez vous déplacer !
Et nous allons pouvoir commencer la seconde partie de ce cours, avec votre première map.

Vous devriez maintenant avoir à votre disposition UDK et tous ses outils.
Bien sûr, pour l'instant vous ne savez pas vous en servir, mais pas de panique !
Tous ces outils s'apprennent peu à peu et nous allons les détailler dans la suite.

Ça y est, vous êtes prêt à commencer !


Téléchargement Votre première map

Votre première map

Prise en main d'UDK Editor Une map basique

Dans cette partie, vous allez apprendre à réaliser des niveaux avec UDK. Une fois n'est pas coutume, cette partie commence par un TP, nous verrons ensuite la théorie et les concepts avancés. Mais d'abord, vous allez pouvoir jouer dans UDK !

Une map basique

Votre première map Décorez votre map avec les Static Meshes

Une map basique

L'essentiel du travail dans la réalisation d'un jeu vidéo réside dans la création de niveaux, ou maps - UDK parlera de Level dans l'interface, c'est la même chose.
Pour commencer, nous allons voir la méthode pour réaliser une map, via un TP. Vous pouvez dès maintenant lancer UDK Editor !

Les commandes dans UDK Editor

Les touches utiles sont les suivantes :

Ces commandes sont les principales ! Vous devriez déjà pouvoir travailler avec elles.

Une map basique

La première étape va être de créer une nouvelle map ! C'est très simple: File - New.
Vous devriez avoir une fenêtre permettant de choisir l'ambiance par défaut:

Map templates

Différentes ambiances, à vous de choisir!

Vous devriez obtenir une map d'exemple, avec un cube, des murs blancs. Pas de soucis, tout est prêt !

Le Builder Brush et la géométrie

Revenons à notre interface principale. Nous allons commencer une petite map très simple, qui va permettre de montrer les mécanismes de bases.
Pour ce faire, nous allons commencer par les formes basiques de géométrie, sans décoration, parce que c'est la première étape de réalisation d'une vraie map. ;)

Dans UDK, la géométrie basique (cubes, cylindres, plans) se travaille à l'aide du Builder Brush, un outil simple qui vous permet de travailler une forme, puis de la créer. Pour ce faire, vous devez d'abord le rendre visible en appuyant sur B !

Le Builder Brush

Le Builder Brush!

On va étudier un peu la liste des outils qui nous permettent de modifier celui-ci.

Les outils de création basique
Brushes

Dans l'onglet Brushes, vous disposez des formes basiques disponibles. Celles-ci vous seront très utiles pour réaliser une map de test très rapidement, ce qui est justement notre objectif !
Ces formes basiques, si vous cliquez droit dessus, vous proposeront de régler directement les dimensions du Builder Brush.

Options de création d'un cube
CSG

L'onglet CSG est également très important puisqu'il va nous permettre de créer de la géométrie réelle à partir de la forme actuelle du Builder Brush. Concrètement, ces boutons appliquent les modifications que vous faites sur le Builder Brush, ils font "sortir du moule" l'objet que vous avez dessiné.
Une petite liste de leurs fonctions :

Volumes

L'onglet Volumes, et en partie le bouton de droite Add Volume, est probablement l'outil du Builder Brush que vous utiliserez le plus dans une map sérieuse. Il vous permet de créer des Volumes, des zones qui auront un effet particulier : mort du joueur, lumière, collisions, événements sont autant d'exemples classiques de son usage.

Manipuler la géométrie : votre premier bloc

On va se contenter pour l'instant de créer des blocs cubiques, avec CSG Add.
Pour cela, sélectionnez le Builder Brush avec un clic gauche, et déplacez-le dans la vue 2D.

Vous devriez pouvoir déplacer votre bloc comme ceci, à l'aide des flèches:
Un nouveau bloc tout prêt
Il faut cliquer sur une flèche, maintenir enfoncé le bouton et déplacer votre souris pour bouger le Builder Brush.

Maintenant, vous n'avez plus qu'à cliquer sur CSG Add :

Votre premier bloc !

Et voilà, votre premier bloc est en place ! :D
Comme vous le constatez, la texture (on parlera plutôt de Material) est un damier blanc/bleu, c'est le Material par défaut dans UDK.
Ne vous inquiétez pas, ça se change.

Maintenant, répétez l'opération pour entourer le point de départ du joueur... Le point de départ, c'est ce petit symbole, nommé PlayerStart :

Image utilisateur

Un point de départ de joueur : c'est ici que vous apparaissez quand le jeu commence !

Déplacez le Builder Brush, ajoutez la géométrie à chaque fois et construisez un mur, en respectant bien la grille !

Votre première mapJe ne me suis pas servi du bloc initial, c'est un détail, vous pouvez l'incorporer dans votre œuvre.

Construire et jouer

Il ne faut pas ici comprendre "Construire", ou Build dans UDK comme pour un programme. C'est plutôt une séquence d'optimisation automatique que nous allons faire.
Pour l'instant, tout se passe bien, mais vous allez vite vous rendre compte que si vous supprimez un des blocs bleus que vous avez créé, il ne disparaîtra pas !
C'est normal : pour mettre ceci à jour, il faut refaire le Build de la géométrie, et ensuite de l'éclairage : si vous êtes habitués à la 3D, vous savez probablement qu'avant de voir une scène éclairée, il faut simuler, calculer l'éclairage de cette dernière. Il existe un bouton pour ce faire. Vous vous souvenez de ma présentation de l'interface ?

Construire la map

Dans l'ordre des boutons, de gauche à droite:

Et ça y est, vous pouvez appuyer sur F8 et vous promener dans votre œuvre!

J'ai un message d'erreur bizarre !

Message d'erreur

Oui, vous voulez continuer. C'est un bug d'UDK qui apparaît dans certaines versions. Pour l'instant, c'est inoffensif.
Ce message indique que le contenu que vous utilisez ne sera pas présent si vous lancez cette map depuis UDK Game. Nous verrons plus tard comment faire.

Appuyer sur ECHAP pour quitter le jeu de l'éditeur quand vous avez fini.

Un dernier commentaire

A partir de maintenant, on appellera BSP la géométrie créée de cette façon.
Le mot va être expliqué plus loin, contentez-vous de le retenir !


Votre première map Décorez votre map avec les Static Meshes

Décorez votre map avec les Static Meshes

Une map basique BSP et models : une explication

Décorez votre map avec les Static Meshes

Maintenant que vous avez un début de map, nous allons pouvoir commencer à le décorer et à l'éclairer ! Pour ce faire, le plus simple est d'utiliser des models en 3D, et de les placer dans votre map pour la décorer un peu. Nous verrons très bientôt dans ce cours comment créer et importer vos propres models !

Le Content Browser

Découvrons ensemble cet outil qui vous permet de gérer l'ensemble de votre contenu!
Pour l'ouvrir, cliquez sur le U gris sur noir dans la barre d'outils de la fenêtre principale, ou appuyez sur CTRL + SHIFT + F.

Content BrowserLe Content Browser est découpé en trois principales parties :

Pas d'inquiétudes, tout ça va vite devenir évident pour vous.

Choisir et observer un Static Mesh

Choisissez la collection UDK Building Meshes, et dans les filtres Static Meshes.
Maintenant, naviguez dans les Packages en bas à gauche jusqu'à la section UDKGame/Content/UT3/Environment/. Vous avez maintenant une longue liste de Packages: ASC_Deco, ASC_Floor... Ce sont les packages d'Unreal Tournament 3 fournis avec UDK ! Étudiez le contenu d'un package en cliquant sur son nom: son contenu va s'afficher à droite. Comme vous avez choisi le filtre Static Meshes, vous affichez uniquement ceux-ci.

Les Static Meshes sont des models 3D basiques, qui ne bougent pas, ne sont pas animés et servent habituellement de pièces détaillées dans une map.
Maintenant, nous allons rapidement observer un de ces éléments: double-cliquez sur un Static Mesh pour ouvrir l'éditeur associé.

L'éditeur des StaticMeshes

Vous pouvez observer le model sous tous les angles avec les mêmes contrôles que la vue principale: clic droit maintenu pour tourner, clic gauche pour le zoom... On ne s'attardera pas dans cette vue qui sera détaillée par la suite.

Menu contextuel dans la vue 3D
Placer un Static Mesh

Fermez cette vue pour revenir au Content Browser, et choisissez un élément à placer.
Vous devez maintenant charger le package qui le contient, en cliquant droit sur le nom du package: choisissez l'option Fully Load.

Une fois le package chargé, sélectionnez votre Static Mesh et fermez le Content Browser.
Faites un clic droit dans votre map, et vous devriez avoir un menu similaire à celui qui apparaît ci-contre, avec une option Add Static Mesh [...]. Cliquez, et votre Static Mesh apparaît !

Mise en position

Maintenant, à vous de déplacer le Static Mesh comme vous l'avez fait pour le Builder Brush, cette fois avec quelques fonctions en plus.
La touche ESPACE vous permet de choisir l'action à réaliser: déplacement, rotation, changement d'échelle... C'est un raccourci très pratique. Une autre astuce indispensable, cette fois-ci avec la touche ALT : maintenez-la enfoncée pendant que vous déplacez un objet pour dédoubler un objet. Aidez-vous de la grille et des différentes vues pour obtenir le bon positionnement. C'est l'occasion de tout essayer : n'hésitez pas à tester tout ce que vous voulez !

Terminer la map

N'hésitez pas à recommencer la manipulation pour d'autres meshs. Comme vous allez vite le constater, les Static Meshs font souvent exactement les dimensions de vos cubes. Ce n'est pas du tout un hasard: c'est ce qu'on appelle un développement modulaire. ;)
Idéalement, vous pouvez cacher complètement les blocs que vous avez réalisés tout à l'heure.

Une fois que vous avez fini, reconstruisez la map, sauvegardez-la et lancez le jeu avec F8.

Vous devriez avoir votre map complète !
Image utilisateur
Votre première map UDK !


Une map basique BSP et models : une explication

BSP et models : une explication

Décorez votre map avec les Static Meshes La théorie du Level Design

BSP et models : une explication

Vous avez à l'instant utilisé d'abord des blocs basiques créés avec le Builder Brush, puis des models détaillés.
Il est temps de vous donner une explication sur le sujet...

Le BSP: Binary Space Partition

Derrière ce terme barbare se cache un concept très simple.
La façon la plus simple de modéliser un niveau de jeu vidéo, c'est le concept de BSP, "partition binaire de l'espace" : il consiste à découper le monde en tout petits cubes, qui contiennent une information binaire: plein, ou vide.
C'est tout ! Et c'est très simple à programmer en C par exemple: un simple tableau à 3 dimensions (X, Y, Z) qui contient une seule valeur, "PLEIN" ou "VIDE".

Ce concept simpliste, vieux de quinze ans, a longtemps été le cœur de tous les jeux vidéos en 3D, à commencer par le Source Engine de Valve, qui aujourd'hui encore base l'ensemble de ses outils dessus.
On va discuter un peu en détail des tenants et aboutissants de ce modèle.

Avantages

Tout est dit... Le principe de BSP, c'est sa simplicité !

Géométrie soustractive

Encore un terme barbare... Mais celui-ci est également très simple: vous vous rappelez du bouton CSG Substract ?
En fait, jusqu'à Unreal Engine 3, les niveaux étaient réalisés en creux: par défaut, l'espace était complètement plein. Vous avez remarqué que, dans Unreal Tournament, quasiment tous les niveaux se trouvent dans des tunnels, des grottes, des bâtiments ? :)

Aujourd'hui cependant, la mode est aux environnements ouverts, et UDK vous proposera par défaut des niveaux en géométrie additive. Mais il est bon de comprendre l'histoire du moteur parce que ça vous aide à en appréhender le mécanisme.

Il est peu utile de s'attarder plus longtemps sur BSP: il n'y a vraiment rien de plus à dire !
Comme vous le voyez, c'est un concept élémentaire, que vous avez manié sans le savoir dans la partie précédente.

Les models

La mauvaise nouvelle c'est que BSP est une technologie dépassée. Malgré sa simplicité, ses performances, elle a ses défauts :

La réponse, c'est le model 3D : un objet dessiné avec un modeleur 3D comme Maya, Blender, Softimage, 3DSMax, puis importé dans le niveau.

Les models: pourquoi ?

Les models répondent complètement à la liste des problématiques mentionnées plus haut. Ils sont réutilisables, et de fait ils sont souvent utilisés plusieurs fois dans le même niveau; ils peuvent facilement subir des effets complexes, être animés, et ils permettent un niveau de détail inégalé.
En somme, le model est la réponse à tous les problèmes. En revanche, les performances sont en retrait par rapport à BSP, mais il faut remettre les choses dans leur contexte : le BSP était nécessaire en 1998 !

Un jeu vidéo, en 2010, est typiquement constitué à 100% de models, et les cartes graphiques ont introduit des optimisations incroyables au niveau du matériel; ainsi, utiliser trois fois le même model consomme bien moins de ressources que de créer trois fois le même élément en BSP.

Les models dans UDK

UDK fait usage, très intensivement, de models au point de ne plus du tout utiliser BSP.
Vous en avez également utilisé précédemment : ce sont ces fameux StaticMeshes qui décorent votre map !
Vous devez du coup vous demander à quoi sert BSP, et pourquoi vous avez réalisé un début de map avec, alors que la géométrie BSP est totalement masquée par les StaticMeshes !

La réponse est simple: construire un model, le texturer, lui créer un modèle de collision, voire des animations, c'est très long.
BSP est donc un outil fantastique car il vous permet, en quelques heures, de réaliser une map complète et viable sur le plan du gameplay !
Vous devriez toujours réaliser d'abord une structure à base de BSP, sans aucun décor, y intégrer tous les éléments de gameplay, tester la map..
... Et ensuite seulement, la décorer avec des models pour réaliser la partie graphique.

Et maintenant, passons à l'essentiel...


Décorez votre map avec les Static Meshes La théorie du Level Design

La théorie du Level Design

BSP et models : une explication L'éclairage

Une map de jeu vidéo doit se penser à l'avance. Voici quelques éléments de réflexion sur le sujet.

L'éclairage

La théorie du Level Design Eclairage statique, éclairage dynamique

L'éclairage est une notion vaste. Vous allez ici découvrir les bases de ce concept et les principaux mécanismes que propose UDK dans le domaine.

Eclairage statique, éclairage dynamique

L'éclairage Les sources de lumière

Eclairage statique, éclairage dynamique

L'éclairage est l'un des principaux points importants dans la réussite graphique d'un niveau.
En effet, vous pouvez changer complètement l'ambiance de votre niveau, et ceci très facilement !

Image utilisateurDeux éclairages différents pour une seule scène

Pour introduire cette partie, il faut d'abord présenter le fonctionnement des lumières dans UDK. Avant tout il faut savoir que l'éclairage est un effet très gourmand en 3D. Dans un moteur de rendu classique pour des images fixes, une image 3D peut mettre des heures à être calculée, parce que des simulations complexes, proches du modèle physique de la lumière, sont réalisées !

Dans le jeu vidéo, la donne est différente : chaque image doit être affichée en quelques millièmes de seconde. L'éclairage est donc l'un des sujets sur lesquels les moteurs de rendu s'affrontent quand on en arrive aux performances, et on trouve dans ce domaine un grand nombre d'optimisations diverses.

L'éclairage statique

Le plus classique de tous, l'éclairage statique, constitue généralement l'essentiel des éclairages de jeux vidéos. Des moteurs comme Source y font appel quasi exclusivement. Le principe est simple et s'apparente aux moteurs de rendu classiques : au moment de préparer la map à être jouée, il faut compiler l'éclairage ( Build, dans le langage Unreal), en quelque sorte calculer l'effet des sources de lumière sur chaque objet.

Il y a deux façons de gérer le résultat : ce qu'on appelle une Lightmap, c'est-à-dire une liste de toutes les faces de votre niveau qui stocke l'intensité et la couleur de la lumière pour chacune d'elles, ou bien la technique du Vertex Lighting qui stocke l'éclairage pour chaque point, et réalise des calculs à partir de ces points pour dessiner l'éclairage des faces qui les relient.
UDK utilisait le lightmapping pour le BSP, mais est passé au vertex lighting avec les models, c'est donc cette technique que vous verrez en action.

Le principal avantage de cette technique est qu'elle est très performante à la fois en temps de calcul, et en mémoire. Il y a deux inconvénients : le temps de calcul de l'éclairage, qui est extrêmement long sur le moteur Source (près d'une heure parfois !), et bien évidemment, l'impossibilité de modifier l'éclairage en jeu !

L'éclairage dynamique

L'éclairage dynamique s'appuie sur les mêmes principes... Mais cette fois, tout est calculé en direct ! La consommation en ressources est donc terriblement plus élevée et l'éclairage dynamique doit se limiter aux cas où c'est utile : ciel dynamique, objets mouvants, effets spéciaux...

Aujourd'hui, la puissance des machines permet d'utiliser énormément d'éclairage dynamique, mais n'oubliez jamais que les ressources nécessaires sont bien supérieures.

Les ombres

Les ombres sont dépendantes de l'éclairage : elles sont donc calculées soit statiquement, soit dynamiquement, de la même façon que l'effet des lumières.

Et dans UDK ?

Pour chaque source de lumière, pour chaque objet, vous pouvez désactiver chacun de ces modes d'éclairage, désactiver les ombres, ou modifier le comportement vis-à-vis de la lumière. Vous trouverez toutes ces options dans la section Lighting de chaque objet.


L'éclairage Les sources de lumière

Les sources de lumière

Eclairage statique, éclairage dynamique Lightmass : l'éclairage haut de gamme

Les sources de lumière

Réglages de lumière

Les principaux réglages des lumières

L'entité de lumière dans UDK est extrêmement configurable. Sélectionnez l'ampoule visible dans votre map de test, et appuyez sur F4 pour accéder à ses propriétés. Je vous laisse découvrir les principaux paramètres ci-contre.

Les principaux paramètres de l'entité sont:

Nous reviendrons plus tard sur la section Lightmass. Pour information, dans tous les menus de propriétés, il suffit de poser le pointeur de la souris sur le nom d'un paramètre dans la colonne de gauche, pour obtenir une description. Il faut absolument que vous les lisiez pour gagner un temps précieux !

Vous pouvez déjà modifier les réglages de lumière pour l'entité présente dans la map, et observer les variations sur le rendu. A vous de créer votre propre ambiance !

Ces réglages existent pour toutes les lumières et auront un effet semblable.

Ajouter une lumière dans la map
La lumière par défaut : Point Light

C'est très simple : clic droit - Add Actor, Add Light (Point).
Ceci ajoutera une lumière basique, omnidirectionnelle. Il n'y a rien à ajouter aux réglages déjà évoqués. Ce genre de lumière est idéal pour donner une ambiance lumineuse peu marquée, pour réaliser un éclairage discret.
Vous pouvez également vous en servir avec des lumières proches d'un mur, avec un Falloff Exponent élevé, pour réaliser un halo autour d'un éclairage.

Les lumières avancées

Vous avez dû remarquer que beaucoup d'éléments sont accessibles par le clic droit.
Cependant, en matière d'éclairage, les entités les plus intéressantes sont uniquement disponibles dans le Content Browser. Plus précisément, dans l'onglet Actor Classes de ce dernier.

Lumières disponibles

Pour ajouter une de ces lumières avancées, il suffit de la sélectionner, de quitter le Content Browser et de faire un clic droit pour choisir Add ...Light here, suivant le type de lumière que vous avez choisi. Remarquez que c'est la même procédure que pour ajouter un Static Mesh: ce n'est pas un hasard ! Cela se passera toujours comme ça.
On va faire une liste des éclairages les plus utiles :

Image utilisateurLumière de type SpotLight, avec 10° comme angle de cône interne, et 50° pour le cône externe. Les deux cônes sont bien visibles dans l'éditeur.

Plus d'informations

Comme toujours, la source d'informations idéale est Unreal Developper Network: http://udn.epicgames.com/Three/LightingArtistHome.html
N'hésitez pas à visiter cette page, même si elle est en anglais.


Eclairage statique, éclairage dynamique Lightmass : l'éclairage haut de gamme

Lightmass : l'éclairage haut de gamme

Les sources de lumière Unreal Kismet

Lightmass : l'éclairage haut de gamme

Lightmass est le nom de la technologie d'Ambient Occlusion d'UDK: c'est le moteur d'éclairage qui permet d'obtenir facilement un rendu bien plus réaliste, au prix de temps de rendu bien plus longs. Si vous désactiviez Lightmass, la reconstruction de votre map serait quasiment instantanée!
Cependant, la qualité graphique supérieure obtenue vaut largement ce petit défaut.

L'Ambiant Occlusion

L'article Wikipedia explique à merveille cette technique de rendu: http://en.wikipedia.org/wiki/Ambient_occlusion
En résumé, elle permet de simuler le comportement physique de la lumière, qui a tendance à rebondir plusieurs fois sur des murs avant d'arriver à notre œil. Ainsi, un mur blanc au dessus d'un tapis rouge vif sera légèrement éclairé en rouge si le soleil tape fort dessus!
Ce comportement a également une tendance naturelle à assombrir les coins et à illuminer plus fortement les grandes surfaces sans obstacles.

Le réglage global de Lightmass

Pour configurer Lightmass, vous devez aller pour la première fois dans les options de la map.
Elles se trouvent dans le menu View - World Properties. Une fois le menu ouvert, descendez jusqu'à la section Lightmass.

Réglages de Lightmass

Les réglages utiles ici sont les suivants :

Effets avancés

Lightmass va bien plus loin qu'une simple AO. Vous pouvez également configurer les objets qui émettent de la lumière pour qu'ils participent à l'éclairage. C'est peut-être surprenant, mais avant UDK et Lightmass, une torche par exemple avait une apparence lumineuse mais ne participait absolument pas au calcul de l'éclairage !

Pour activer cet effet, ajoutez un objet lumineux. Dans le Content Browser, sélectionnez le package UDKGame/Content/UT3, et choisissez S_Bio_Blob_01. Ensuite, placez-le en tant que Static Mesh, sélectionnez-le, et appuyez sur F4 pour obtenir ses propriétés.

Pour activer l'éclairage automatique, cochez la case Lightmass - Use Emissive For Static Lighting.

Lightmass

Il vous suffit ensuite de régler les différents paramètres utiles :

Et maintenant, supprimez toutes les lumières, reconstruisez la map et admirez le résultat !

Image utilisateurÉclairage 100% Lightmass

Pour aller plus loin

La documentation complète de Lightmass est disponible sur UDN : http://udn.epicgames.com/Three/Lightmass.html
Prenez le temps de survoler cette page au minimum! La documentation UDN vaut toujours le détour...

... Maintenant, plus question d'éclairer sa map en blanc ! :pirate:


Les sources de lumière Unreal Kismet

Unreal Kismet

Lightmass : l'éclairage haut de gamme Une nouvelle map de test

Assez joué sur votre premier essai, vous allez réaliser une map plus intéressante.
Au programme : du dynamique, des événements, des actions !

Cette partie porte sur Kismet, un outil performant pour rendre vos maps dynamiques: faire bouger des objets, déclencher des effets, scripter des séquences... Et nous allons en profiter pour tester un éclairage dynamique !

Une nouvelle map de test

Unreal Kismet Faire clignoter une lumière avec Kismet

Une nouvelle map de test

Une scène de test de lumière dynamique !

Ce chapitre va être l'occasion de pratiquer l'éclairage. On commence par ajouter un Actor de type PointLightToggleable.
Si vous vous référez au chapitre précédent, vous devriez deviner que c'est une lumière omnidirectionnelle, que l'on peut activer ou désactiver... Mais je vais maintenant vous montrer comment !
Pour les étourdis, on ajoute une lumière ainsi :

Image utilisateur

Et voilà le résultat, vous devriez avoir quelque chose d'approchant !

Enfin, je vous propose de dédoubler le Static Mesh cubique au milieu de la map pour en disposer quelques-uns autour de cette lumière.
Pour les étourdis, encore une fois : cliquez sur le cube, maintenez ALT enfoncée, cliquez et maintenez une des flèches. Relâchez-la où vous souhaitez poser le cube.

Notre scène de test

Notre scène de test est prête !


Unreal Kismet Faire clignoter une lumière avec Kismet

Faire clignoter une lumière avec Kismet

Une nouvelle map de test Des déclencheurs avec les volumes

Faire clignoter une lumière avec Kismet

On va commencer par lancer Kismet. Kismet, c'est ce gros K vert juste à droite du bouton Content Browser. Ouvrez-le !

Fenêtre par défaut de Kismet

Il n'y a rien dedans, c'est normal. Fermez la fenêtre, je vais vous montrer comment ajouter des éléments.
Sélectionnez votre lumière PointLightToggleable (pas celle qui est par défaut dans la map, qui est une DominantDirectionnalLight), et retournez dans Kismet.

Cliquez droit, vous devriez avoir une option New Object Var Using PointLightToggleable_0. Allez-y, cliquez et vous avez maintenant une référence Kismet à votre lumière !

Image utilisateur

Faire clignoter une lumière avec Kismet

Vous l'aurez compris, Kismet va être complètement graphique. Vous allez faire de beaux schémas logiques avec, mais il sera impératif de bien réfléchir à l'avance à vos actions. Vous pouvez faire des séquences effroyablement compliquées avec, il faudra vous organiser !

Nous voulons ici faire clignoter la lumière. Pour ce faire, vous allez utiliser une action: Toggle ! En anglais, ça veut dire "basculer", au sens "allumer/éteindre". C'est exactement ce qu'il nous faut !
Pour l'ajouter, cliquez droit et choisissez New Action - Toggle - Toggle.

Image utilisateur

Une explication s'impose ! Tous ces petits carrés colorés sont des entrées et sorties. On va les détailler.

Pour associer la lumière à notre action Toggle, il vous suffit de cliquer et maintenir le bouton enfoncé, sur la connexion rose marquée Target, et de relâcher le bouton de la souris sur votre objet PointLightToggleable_0.
Si vous souhaitez (et c'est probable) déplacer des objets, maintenez la touche CTRL enfoncée, et cliquez sur un objet. Tant que vous maintenez enfoncé le bouton de la souris, vous pouvez déplacer l'objet, les signaux suivront. Essayez dès maintenant. :)
Pour vous déplacer dans la vue, maintenez le clic droit enfoncé et bougez la souris.
Pour déconnecter des fils, utilisez >clic droit - Break Link to sur une connexion.

Image utilisateur

Ce que nous avons fait est simple: nous avons associé notre lumière à une action Toggle. Il faut maintenant générer des évènements pour les manipuler.

Le déclencheur d'une action : l'Event

Un Event, ou évènement, est un objet de Kismet qui s'active au moment où une certaine condition est validée. Il a uniquement une sortie de signal, contrairement aux actions qui ont également des entrées.
Nous allons utiliser un Event particulier pour commencer : Level Loaded. Cet Event s'active dès le début de la partie. Pour l'ajouter, c'est comme avant : New Event - Level Loaded.

Image utilisateurLes Event sont rouges et de forme hexagonale. Comme vous le voyez, ils disposent de plusieurs sorties :

Pour l'instant, cet évènement ne nous sert à rien... Il nous faut gérer le temps pour faire clignoter la lampe!
Pour ce faire, nous allons ajouter une action Delay. Cette action se trouve dans New Action - Misc - Delay.

Image utilisateur

Tout ce qui nous intéresse ici, c'est :

Il ne vous reste qu'à câbler tout ça ! Rappelez-vous du principe de câblage: maintenez un clic sur une connexion, et relâchez sur la connexion à laquelle vous voulez vous connecter.
Voici les connexions que nous voulons faire :

Image utilisateur

Sauvegardez le niveau, et lancez le jeu avec F8. La lumière clignote !

Modifier la vitesse de clignotement

C'est très facile. L'action Delay a une connexion de couleur bleue marquée Duration.
Cliquez droit dessus et choisissez Create New Float Variable, ce qui va créer une variable.
Puis, sélectionnez-la, et dirigez-vous vers le menu des propriétés en bas à gauche : dans la catégorie Seq Var Float, vous avez un champ Float Value. Mettez 0.1 par exemple, ce qui attribuera une valeur d'un dixième de seconde pour votre Delay.

A moi aussi. C'est pour ça qu'il faut éviter de mettre ce genre de choses dans une map : le clignotement est trop rapide et c'est désagréable.
Je vous conseille de mettre cette valeur de Delay entre 1 et 2s pour avoir un effet agréable, comme un sapin de Noël!


Une nouvelle map de test Des déclencheurs avec les volumes

Des déclencheurs avec les volumes

Faire clignoter une lumière avec Kismet Kismet : techniques avancées

Des déclencheurs avec les volumes

Nous allons voir comment réaliser des déclencheurs, appelés Trigger dans UDK.
C'est aussi le grand retour du Builder Brush :magicien:

Créer une zone sans gravité avec un volume

Un volume est une forme en 3D dans laquelle on crée un comportement, un effet visuel...
Par exemple, pour créer une zone sans gravité, on peut créer un volume. C'est ce que nous allons commencer par faire, parce que c'est drôle.
Les volumes se créent exactement comme la géométrie BSP: faites apparaître le Builder Brush avec la touche B, réglez ses dimensions comme il vous plaira (utilisez ESPACE, ou réglez les propriétés précisément comme on l'a vu avec la géométrie basique). Simplement, au lieu d'utiliser la fonction CSG Add, nous allons créer un volume à la place.

Pour créer un volume, observez l'onglet Volumes des outils de map dans le menu principal.
Vous avez deux boutons, cliquez droit sur le bouton de droite qui montre un cube.
Une liste de tous les types de volumes que vous pouvez ajouter va apparaître, choisissez un GravityVolume.
Sélectionnez-le et ouvrez ses propriétés avec F4.

Les outils de création basique

_______Un GravityVolume
Voilà à quoi devrait ressembler votre écran ! Le menu Volumes dans la barre d'outils vous permet de choisir le type d'effet.

Il vous suffit dans GravityZde choisir une valeur positive, 100 par exemple. Si vous quittez le sol en sautant dans ce volume, vous allez vous envoler. :D
Comme vous le voyez, un volume est invisible, se crée avec le Builder Brush, et modifie le comportement du jeu dans son enceinte. C'est vraiment tout ce qu'il y a à retenir !

Utiliser un volume comme trigger

La notion de Trigger n'est pas propre à UDK : c'est un classique du jeu vidéo. On a toujours besoin dans une map de déclencher un effet au passage du joueur. On désigne par Trigger l'élément qui détecte le joueur et déclenche la séquence.

La bonne nouvelle, c'est que tout ceci va être très simple !
Il vous suffit de créer un nouveau volume, comme on vient de le faire, mais cette fois du type TriggerVolume !
Allez-y, foncez, ça devrait être rapide pour vous maintenant.

Cette fois en revanche, pas besoin de modifier les propriétés. Sélectionnez le cube, et ouvrez Kismet : maintenant, le clic droit dispose d'une nouvelle option: New Event using TriggerVolume_0 - Touch. C'est celle-ci que vous devez choisir.

Image utilisateurVous pouvez maintenant supprimer l'Event précédent (Clic gauche, puis SUPPR), Level Loaded, et relier la sortie Touched de votre nouvel Event à l'entrée Start de l'action Delay.

Image utilisateur

Sources

Cette partie était inspirée d'une page d'UDN, KismetTutorial : http://udn.epicgames.com/Three/KismetTutorial.html

Ce que vous savez faire

Vous êtes maintenant des experts pour :

Conclusion

C'était une partie difficile, car les mécanismes sont probablement nouveaux pour vous.
Ne vous inquiétez pas, après un peu de pratique Kismet devient un outil fantastique. ;)

Kismet est un outil très particulier, mais extrêmement puissant. Une fois habitué, des séquences comme celles-ci s'écrivent en quelques secondes, et surtout vous allez vite avoir le réflex de fouiller dans la liste des actions et événements de Kismet.
Je vous encourage à regarder les objets disponibles. Je ne vais pas tous les présenter !

Comme toujours, il existe une documentation complète de l'ensemble des fonctionnalités.
Certes, peu lisible et complexe, mais complète !
Vous pouvez la trouver, une fois encore, sur UDN: http://udn.epicgames.com/Three/KismetUserGuide.html

La partie suivante porte également sur Kismet, mais elle vous présente un outil encore plus performant : Matinee.


Faire clignoter une lumière avec Kismet Kismet : techniques avancées

Kismet : techniques avancées

Des déclencheurs avec les volumes Unreal Matinee

Il est difficile de présenter Kismet sans présenter Matinee également. Vous allez en voir l'utilité très rapidement, cependant Matinee est un outil complexe et difficile.
Conçu pour la réalisation de cinématiques, il va vous permettre de réaliser des séquences: gérer des caméras, se déplacer dans la scène, mais aussi déplacer des éléments, allumer des lumières...
Prenez votre temps pour cette partie, suivez bien les instructions et tout se passera bien. :p

La seconde partie vous présentera quelques astuces et points intéressants de Kismet.

Unreal Matinee

Kismet : techniques avancées Jouons avec Kismet

Unreal Matinee

Dans cette première partie, nous allons découvrir comment faire bouger des éléments de décor avec Matinee !

Placer un Mover

Ouvrez votre Content Browser et cochez le filtre Static Mesh.
Naviguez dans les packages dans UDKGame/Content/UT3/Environment/, et choisissez un model à utiliser comme ascenseur.
J'ai choisi une plaque métallique dans le package LT_Bridge: S_LT_Bridge_SM_Bridgepanel01e.
Faites attention à bien charger le package qui contient l'objet que vous voulez utiliser (cliquez droit sur le package - Fully Load), puis sélectionnez l'objet dans le Content Browser.

Revenez dans la vue 3D et faites un clic droit. Vous retrouvez l'option pour ajouter un Static Mesh, mais ne l'utilisez pas. Cette fois, cliquez sur Add InterpActor : <nom de l'objet>, par exemple Add InterpActor: S_LT_Bridge_SM_Bridgepanel01e.
Positionnez l'InterpActor comme vous le souhaitez, contre un des Static Meshes.

Image utilisateur

Une dernière étape sur l'InterpActor lui-même: activer ses collisions ! Sélectionnez-le, ouvrez ses propriétés et naviguez jusqu'à la section Collision - Collision Component - CollisionType. Choisissez l'option BlockAll.

Enfin, sélectionnez votre InterpActor et ouvrez Kismet. Dans les options du clic droit, choisir l'option New Event Using InterpActor_0 - Mover.
Deux objets vont apparaître: un Event classique, et surtout un objet orange qui est en fait une séquence Matinee. C'est exactement comme une action: un ou plusieurs objets associés, des évènements d'entrée, des évènements de sortie. Double-cliquez dessus pour ouvrir Matinee.

Matinee

Vous devriez avoir maintenant une nouvelle fenêtre, que vous pouvez ne pas agrandir si vous voulez voir Kismet en arrière-plan.

Image utilisateur

Dans la fenêtre Matinee, vous pouvez observer 3 différentes zones, de haut en bas :

Le mécanisme de Tracks et Groups

Concrètement, une Track correspond à une caractéristique d'un objet: par exemple, sa taille, sa position, ou sa couleur.
Un Group est un ensemble de Tracks qui correspond à un objet Kismet.

Nous allons donc créer un Group, que nous appellerons Ascenseur, et dans lequel nous réglerons le mouvement. ;)
Pour ce faire, dans la timeline et plus précisément dans la liste des Group sur la gauche, faites un clic droit et choisissez Add New Empty Group, et baptisez-le Ascenseur !

Image utilisateurLe résultat que vous devriez avoir dans Matinee

Matinee : configurer le Group

Attention, c'est la partie qu'il faut bien comprendre.
Si vous cliquez dans le graphe de droite, vous pouvez zoomer/dézoomer avec la molette. Tâchez d'avoir dans votre vue les petits triangles rouge et verts de l'échelle en bas, au nombre de deux chacun, comme dans la vue ci-dessus.

On va déplacer ces délimiteurs, mais d'abord vous aller activer le mode Snap qui vous permettra de manipuler des unités entières plutôt que des millièmes de seconde.
Cliquez sur le bouton de gauche dans cette section de barre d'outils, celui qui représente un aimant:

Image utilisateur

Le menu déroulant marqué 0.50 indique l'unité de snap: avec 1s, vous manipulerez uniquement des secondes. 0.50s, c'est très bien pour notre usage.

Ensuite, vous devez sélectionner le Group pour déplacer ces délimiteurs, en maintenant le clic gauche enfoncé. Déplacez le délimiteur rouge de droite jusqu'à la valeur de 1s, comme le délimiteur vert.

Et voilà, vous êtes prêt à animer votre ascenseur avec une Track.

Image utilisateurÇa y est, tout est prêt !

Matinee: animer votre Mover avec une Track

Cette partie sera plus amusante.
Déplacez votre fenêtre Matinee pour commencer, pour pouvoir fermer Kismet en arrière-plan dont vous n'avez plus besoin.
Tâchez de placer Matinee sur la droite de façon à bien voir la vue 3D et la vue de face.

Et maintenant, nous allons créer une Track !

Image utilisateur

Attention à ce que vous faites maintenant. Vous avez désormais, dans le Group Ascenseur, une Track Movement, qui est sélectionnée. Nous allons ajouter le point de départ et le point d'arrivée de votre ascenseur !

Image utilisateurFélicitations! Vous avez réussi à animer un ascenseur !

C'est fini, vous devez reconstruire la map, sauvegarder et vous pouvez tester votre nouvel ascenseur!

Matinee, c'est pour faire des ascenseurs?

Non. :D
Matinee permet facilement de déplacer des objets, comme on l'a vu. C'est utile pour réaliser des décors dynamiques: à vous de travailler les Events pour en faire autre chose que des éléments aussi simples.
Mais Matinee est aussi également l'outil idéal pour gérer dynamique n'importe quel effet : lumière, son, gameplay, tout peut y passer !

Image utilisateurExemple de changement de couleur dans Matinee

Pour aller plus loin avec Matinee

Comme toujours, voici le lien vers UDN : http://udn.epicgames.com/Three/MatineeUserGuide.html
C'est une page compliquée, mais très complète.


Kismet : techniques avancées Jouons avec Kismet

Jouons avec Kismet

Unreal Matinee Les effets spéciaux

Jouons avec Kismet

En apprendre plus

Il est important de préciser que vous n'avez vu qu'une infime partie de Kismet et Matinee. Ce cours se limite à une introduction aux principaux mécanismes, c'est à vous d'approfondir en fouillant l'interface, UDN, les forums, et surtout en étudiant les maps d'exemple !

Quelques astuces sur Kismet

Cette partie va se résumer à quelques astuces de développement avec Kismet.
Tout est utile là-dedans, mais Kismet ne vous servira pas forcément assez pour que cette partie soit indispensable. ;)

Afficher des informations de debug à l'écran

Dans chaque action Kismet, vous pouvez dans les propriétés ouvrir la section Sequence Object et cocher la case Output Obj Comment to Screen. Ainsi, le texte renseigné dans la case Obj Comment sera affiché à l'écran à chaque entrée d'évènement !
C'est extrêmement utile dans une séquence complexe, surtout si elle se déclenche en jeu...

Découper ses séquences avec le Wrap Comment

Pour ajouter une boîte de commentaire, utilisez New Comment (Wrap). Double-cliquez sur le texte pour le modifier, et utilisez CTRL + clic gauche pour redimensionner à partir du texte ou du coin noir.

Image utilisateur

A partir de maintenant, toutes vos séquences Kismet seront dans des boîtes. :ninja:

Exposer des variables

Pour une action, vous pouvez soit régler les variables dans les propriétés, soit les exposer dans Kismet via clic droit - Expose Variable. Ceci vous permet deux choses :

Vous retrouverez un exemple dans le diagramme ci-dessous, qui porte sur les conditions mais utilise des variables exposées pour plus de lisibilité.

Les conditions

Vous pouvez réaliser des séquences complexes avec les conditions dans Kismet. Clic droit - New Condition vous donnera leur liste. Ci-dessous, un exemple utilisant une condition sur le système d'exploitation, ainsi que l'action Log (dont les textes sont exposés).

Image utilisateur
Chaîner des évènements

Le diagramme précédant montre également un exemple de chaînage d'évènements: les 3 textes affichés ("Vous jouez sur", la plateforme, et "!!") le sont dans un ordre bien précis. L'évènement Out est émis une fois l'action faite.
Une remarque amusante: sur l'écran, l'action Log a un affichage inversé, de bas en haut... Donc ce texte est en fait complètement inversé :-°

Cette partie était la plus difficile de ce chapitre. Pas de panique, Matinee n'est pas un outil qu'on utilise tous les jours !
Le chapitre sur le mapping tend également à sa fin. Nous allons faire un point sur les techniques que vous avez apprises, comment construire et publier une map complète, et ensuite, ça sera à vous de jouer !


Unreal Matinee Les effets spéciaux

Les effets spéciaux

Jouons avec Kismet Son et musique dans UDK

Maintenant que vous savez réaliser des séquences, il va falloir mettre tout ça en action !
Le meilleur moyen est de découvrir ces effets qui rendent une map intéressante : les effets spéciaux.

Son et musique dans UDK

Les effets spéciaux Des étincelles, du feu, des explosions!

Son et musique dans UDK

Sound et SoundCue

Il est important de différencier deux types de sons. Vous allez en effet probablement trouver les deux, en particulier dans les packages d'UT3.

Pour voir la liste de ces sons, ouvrez le Content Browser et étudiez les packages dans UDKGame/Content/UT3/Sounds : double-cliquez sur un son pour le jouer ! Les Sound sont en bleu, les SoundCue en turquoise.

Les différents types d'Actors pour gérer le son

L'Actor le plus simple pour ajouter un son est AmbientSound : il jouera un son dès le début du niveau, et si le son est de type Forever, il continuera à l'infini. Pour en ajouter un, il vous suffit, comme pour un StaticMesh, de sélectionner d'abord le son dans le Content Browser, puis de l'ajouter dans la fenêtre principale via clic droit - Add AmbientSound: ... here.

Configurer un son d'ambiance

Une fois votre AmbientSound choisi et placé, accédez à ses propriétés via F4, comme d'habitude. :magicien:

Image utilisateur

Les propriétés d'un AmbientSound
Comme vous le voyez, AmbientSound est très peu configurable. C'est l'Actor le plus basique pour gérer du son. Il est temps de vous montrer comment accéder au Content Browser depuis les propriétés d'un objet, par exemple pour changer le contenu d'un Actor !

Récupérer du contenu dans des propriétés

Quand vous pouvez changer un contenu associé à un Actor, vous allez voir apparaître des icônes à la fin de la ligne Sound Cue des propriétés : une flèche verte, une loupe grise, un carré gris. Regardez bien le contenu de la ligne: c'est l'adresse du son, de la forme package.groupe.nom. Vous pouvez remplir directement cette information à la main si vous connaissez le nom de l'objet à trouver ; si UDK efface la ligne, deux raisons possibles :

Pour vous faciliter la vie, il est possible d'utiliser les boutons en fin de ligne :

Les sons avancés

Les autres Actors sont disponibles dans l'ActorBrowser :

Image utilisateur

La liste des Actors liés au son dans UDK

Voici la liste des sons disponibles :

Ajouter un son avancé en détail

Le mécanisme pour ajouter un de ces sons avancés ressemble à celui utilisé pour AmbientSound :

Quel est l'intérêt de l'AmbientSoundSimple par rapport à AmbientSound ?

L'intérêt réside quasi uniquement dans deux propriétés... Mais qui sont extrêmement utiles ! Elles se trouvent dans la section Ambient - Attenuation des propriétés :

Vous devez absolument utiliser un AmbientSoundSimple pour cette raison : régler la distance d'audition du son est extrêmement important. Certains sons se propagent mal (petits bruits créés par des objets de petite taille), certains doivent s'entendre de loin (machine dangereuse, ou juste très imposante, élément de gameplay...)

La musique d'ambiance d'une map UDK

La musique fonctionne dans UDK suivant le principe des Music Arrangements, baptisés UTMapMusicInfo dans le Content Browser.
Le principe est simple : ces objets font référence à plusieurs sons, chacun adapté à un évènement précis (début de partie, musique de fond, sons précis pour des évènements liés au gameplay). Ainsi, on a une musique toujours en accord avec l'action à l'écran, sans brutale transition sonore.

Image utilisateur

Choix d'une musique : utilisez la propriété Map Music Info

Pour aller plus loin

La documentation UDN des sons est disponible ici : http://udn.epicgames.com/Three/UsingSoundActors.html
Elle est, pour une fois, très claire et précise, cependant elle est faite pour UT3, c'est-à-dire avant les mises à jour d'UDK. Vous aurez sans doute remarqué que la qualité de la documentation est variable sur UDN : parfois très claire, parfois bien plus complexe et obscure. Ne vous découragez pas et prenez le temps de vous y référer en cas de problème, avant de pousser vos recherches.


Les effets spéciaux Des étincelles, du feu, des explosions!

Des étincelles, du feu, des explosions!

Son et musique dans UDK Les terrains dans UDK

Des étincelles, du feu, des explosions!

Maintenant que vous savez placer des sons d'ambiance, nous allons voir comment les déclencher dans Kismet, puis comment ajouter des effets visuels.

Les effets visuels avec les particules : l'actor ParticleSystem

Tous les effets visuels avancés que vous connaissez dans le jeu vidéo (Feu, explosions, fumée, étincelles, traînées des balles) sont créés avec des systèmes de particules dans UDK.

L'exemple le plus classique est l'étincelle: le cœur de l'étincelle est l'émetteur (invisible), et vous devez comprendre ce que sont ces fameuses particules : ce sont les morceaux de matière projetés, enflammés, hors de l'étincelle.
Ces particules, toujours dans le même exemple, auraient ces propriétés :

Nous allons voir un exemple. Ouvrez votre Content Browser et cochez le filtre Particle Systems!
Puis, fouillez dans les packages UDKGame/Content/UT3/Effects, et choisissez un système de particules, par exemple Corruption_Falling_Leaf_01. Bienvenue dans Unreal Cascade, l'éditeur des systèmes de particules !

Image utilisateurUnreal Cascade

Chaque feuille de ce système est une particule. Elle a un mouvement vers le bas, une rotation et elle disparaît en bas. Vous voyez, c'est très simple!
Nous ne détaillerons pas cet outil, pas plus que l'outil d'édition des Static Meshes dans la première partie. Pour l'instant, ce n'est pas l'objectif : vous allez juste utiliser un ParticleSystem.

Fermez Cascade, sélectionnez P_FX_VehicleDeathExplosion et fermez le Content Browser. Dans la vue 3D, il est maintenant très simple d'ajouter un ParticleSystem, avec : clic droit - Add Emitter : P_FX_VehicleDeathExplosion.
Pour l'instant, si vous lancez le jeu, vous verrez une seule petite explosion qui s'arrête... C'est normal, ce système de particules est à usage unique !

Réaliser une mine

Nous allons mettre en pratique tout ce que vous avez appris avec un TD : vous allez fabriquer une mine !
Son comportement est très simple: elle prendra la forme d'un model 3D, et à son approche, explosera en produisant du son, un effet d'explosion, des dégâts.

Les Actors à utiliser, et quelques contenus utiles

Il va vous falloir mettre en œuvre plusieurs Actors pour réaliser cette mine :

Si vous reconstruisez et lancez la map dès maintenant, vous allez normalement avoir une image d'explosion une seule fois, pas de son, pas de dégâts : pas de panique, c'est normal ! On va arranger ça très vite avec Kismet.

Image utilisateur

Une base de travail pour une mine explosive !

Déclencher les effets via Kismet

Vous vous rappelez des volumes TriggerVolume ? C'est l'outil à utiliser ici pour déclencher votre action. Souvenez-vous du processus :

Et maintenant, au travail avec Kismet ! Vous allez utiliser deux actions :

Image utilisateur

Le menu des propriétés dans Kismet pour l'action PlaySound

Image utilisateur

Un début de séquence Kismet pour votre mine

Ça ne marche qu'une seule fois !

C'est normal. Sélectionnez votre Event Touched, et modifiez sa propriété Max Trigger Count pour la placer à 0.

L'explosion se déclenche dès le début!

Désactivez la case AutoActivate des propriétés du ParticleSystem, dans F4 - Emitter - Particle System Component - Particle System Component.

Provoquer des dégâts

La dernière étape consiste à infliger des dégâts à la victime. Il y a plusieurs façons de le faire, nous allons en profiter pour présenter le concept d'Instigator.
Observez bien l'Event Touched associé au TriggerVolume : il possède une connexion Instigator. Si vous y reliez une variable avec clic droit - New Object Variable, cette variable sera remplie avec les informations du joueur qui a déclenché l'Event Touched ! Et c'est bien notre victime.

Vous allez donc rajouter une action ModifyHealth(dans la catégorie Actor des actions Kismet), avec :

Image utilisateur

La séquence Kismet finale

En conclusion

Vous avez maintenant probablement remarqué que la philosophie d'UDK n'est pas de vous proposer des Actors avancés, prêts à l'emploi, qui réalisent une tâche complexe.
Au contraire, UDK vous propose des mécanismes très simples et puissants: charge à vous de les associer comme nous venons de le faire pour en faire des effets dignes des meilleurs jeux vidéo ! Kismet est parfait pour combiner les forces : c'est un outil essentiel que vous devrez maîtriser.

Une fois n'est pas coutume, ce n'est pas UDN que je vous propose pour approfondir mais UDK Central, un autre site à connaître. Voici un cours qui associe Matinee à un ParticleSystem : http://udkc.info/index.php?title=Tutor [...] ticle_systems


Son et musique dans UDK Les terrains dans UDK

Les terrains dans UDK

Des étincelles, du feu, des explosions! Une map complète

Les terrains dans UDK

Cette dernière partie ne relève pas vraiment des effets spéciaux, mais est une technique un peu à part dans la création d'environnement: ni un Static Mesh, ni un bloc BSP.
Typiquement, un terrain sert à réaliser de grandes maps en extérieur : si vous jouez à Unreal Tournament 3, les maps WAR-Torlan, WAR-Confrontation et les maps à véhicules en général font un usage intensif des terrains !

TorlanWAR-Torlan, un classique d'Unreal Tournament. La map est essentiellement constituée de terrains.

Créer un terrain

Tout commence très simplement avec Tools - New Terrain.

Image utilisateur

La fenêtre qui va s'ouvrir
L'onglet Patches exige une explication.

Cependant, pour réaliser des décors réalistes comme des terrains, il faut pouvoir simuler des formes arrondies. En effet, le sol est relativement rond et doux dans ses formes générales, en particulier sur un sol terreux où il est impossible d'avoir des variations brutales !
La solution est simple : il faut diviser les faces en une multitude de faces, pour pouvoir approcher la forme d'une courbe.
C'est exactement ce que fait un terrain : c'est une simple face, divisée en un certain nombre de faces sur chaque axe... Et voilà ce que représentent les Patches : c'est le nombre de faces élémentaires sur chaque axe ! Ici, vous aurez donc un terrain carré constitué de 16 * 16 petits carrés !

Cliquez sur Next, puis Finish.

L'outil de modification des terrains

Sélectionnez votre terrain, et cliquez sur le bouton Terrain Mode dans les outils de map sur la fenêtre principale.

Image utilisateur

Image utilisateurL'éditeur de terrain d'UDK

Quelques commentaires :

Pour ajouter des couleurs à votre Terrain, vous devez sélectionner un Material dans le Content Browser. On reparlera des Material plus tard. ;) Puis, fermez le Content Browser et dans la liste en bas, clic droit et choisissez New Terrain Setup Layer from material (auto-create).

Image utilisateurUn terrain avec un Material !
Vous aurez l'occasion d'expérimenter les terrains en détail sur des maps complexes en extérieur. C'est un outil très agréable à utiliser, mais réservé à certains usages précis. ;)

Cette partie était un peu décousue. L'objectif était de bien ancrer dans votre esprit les mécanismes essentiels d'UDK :

Il n'y a pas grand-chose de plus à comprendre dans le mapping avec UDK. Une fois ces principes maîtrisés, vous ne ferez que découvrir de nouveaux Actors, créer de nouveaux contenus. C'est aussi la force d'un moteur éprouvé et bien construit : une fois que vous avez compris le principe, vous pouvez tout apprendre. ;)


Des étincelles, du feu, des explosions! Une map complète

Une map complète

Les terrains dans UDK Un exemple avec Unreal Tournament 3

Maintenant que vous savez faire une map, nous allons nous atteler à la publication de vos travaux pour qu'ils deviennent jouables hors de l'éditeur !

Un exemple avec Unreal Tournament 3

Une map complète Publier une map

Un exemple avec Unreal Tournament 3

Comme vous le savez maintenant, une partie du contenu d'Unreal Tournament 3 est présente dans UDK. Je vous propose donc de réaliser une petite map pour ce jeu, pour vous apprendre à utiliser du contenu propre à un jeu précis.

Nommer votre map

Dans UDK, le mode de jeu est déterminé par le préfixe de la map. Voici l'exemple d'Unreal Tournament :

Le plus simple est de nommer votre map DM-nomDelaMap - C'est le seul mode de jeu d'Unreal Tournament supporté par UDK. Nous verrons plus tard comment réaliser votre propre mode de jeu !

Utiliser les PathNodes

Le concept de Path Node est relativement simple : vous balisez votre map avec des entités invisibles que les bots utilisent comme références. Observez les icônes du menu de compilation :

Image utilisateur

Dans l'ordre: BSP, Lights, PathNodes, CoverNodes, All

On ne se sert que du bouton Build All, cependant il est important de connaître les deux étapes que nous n'avons pas encore étudiées, qui concernent les nodes.

Les chemins et l'IA

Quand UDK construit votre map, il crée un réseau de chemins ou Paths entre les Path Nodes. Les principes sont très simples :

Les PathNodes sont extrêmement simples à placer : clic droit - Add Actor - Path Node. Vous n'avez qu'à placer dans votre map une multitude de Path Nodes, un à chaque intersection, à chaque recoin, de façon à créer un réseau. Voici un exemple :

Image utilisateur

Un bon placement de Path Nodes

PathNodes particuliers

Il existe un nombre considérable de points de navigation. Le PathNode est le plus simple d'entre eux puisqu'il n'a aucune fonction particulière, cependant tout point d'intérêt de votre map sera un point de navigation lui aussi !

Le plus important d'entre eux est le point de départ d'un joueur, ou PlayerStart dans UDK. Vous pouvez ouvrir l'Actor Browser, déjà utilisé pour l'éclairage, à partir du Content Browser et développer la catégorie Common.
Vous y retrouverez l'entité PlayerStart, ainsi que TeamPlayerStart et UTTeamPlayerStart qui en sont des versions améliorées pour gérer respectivement les équipes en général, et les équipes dans Unreal Tournament.

Il vous suffit ensuite, comme à l'accoutumée, de sélectionner l'Actor choisi, de fermer l'Actor Browser pour faire ensuite un clic droit dans la vue 3D : Add ... here. Si vous souhaitez uniquement placer des points de départ classiques (PlayerStart), vous pouvez le faire très rapidement avec clic droit - Add Actor - PlayerStart dans la vue 3D !

Et voici la liste de tous les autres points, telle qu'UDK la propose, libre à vous d'en créer de nouveaux plus tard.

Image utilisateur

La liste des Navigation Points
Ces points spéciaux ne seront pas détaillés ici. Encore une fois ce cours n'a pas pour but d'être une documentation complète d'UDK mais une introduction aux principes essentiels ! Si vous vous posez des questions, une recherche rapide sur Google ou UDN vous donnera probablement la réponse sur ces sujets.
Ne vous inquiétez pas, le PathNode est réellement le point de navigation le plus courant en dehors des armes que nous allons maintenant voir.

Documentation

Voici la page résumant les propriétés des Path Nodes sur UDN : http://udn.epicgames.com/Three/Waypoin [...] calGuide.html

Actors spécifiques à UT3: armes, munitions...

Dans UT3, on ne trouve jamais d'arme au sol, sauf celles que les joueurs lâchent en mourant. Les armes sont générées par une sorte de distributeur : UTWeaponPickupFactory.
Vous pouvez le trouver dans l'Actor Browser que vous avez déjà utilisé pour les lumières avancées, ainsi que l'ensemble des munitions, et objets divers d'Unreal Tournament : santé, augmentations...

Image utilisateur

UTWeaponPickupFactory, et les autres !

Ces entités ont des noms relativement logiques, vous allez vous en sortir. Notez qu'Unreal Tournament comporte bien plus d'armes: UDK vous propose uniquement une petite partie de ses éléments pour vous enseigner le fonctionnement du moteur. Vous n'êtes pas censés les utiliser dans votre jeu. Et maintenant, voyons comment rendre votre map jouable !


Une map complète Publier une map

Publier une map

Un exemple avec Unreal Tournament 3 Créez votre map !

Publier une map

Vous travaillez actuellement sur des versions de travail de vos maps. Elles ne sont pas jouables dans UDK Game pour l'instant ! Nous allons dans cette partie voir comment les publier.

Le Cooking dans UDK

La différence entre une map de travail et une map jouable sur une console, ou un PC sans les outils UDK, réside dans une action qu'Epic Games a baptisée Cooking. Pour les anglophobes, l'analogie avec un gâteau est la suivante : vous passez du temps à créer un gâteau, mais pour qu'il soit mangeable, vous devez le cuire (cook).

Cette manipulation consiste en une série d'optimisations et de transformations qui rendent la map impropre à la modification (même si, contrairement à une map Source par exemple, c'est encore possible) mais accélèrent considérablement son lancement et les performances en jeu sur cette map.

Pour réaliser cette opération, nous allons utiliser Unreal Frontend.

Unreal Frontend

Vous trouverez cet outil dans le dossier Binaries de votre installation UDK.
Lancez-le !

Image utilisateurUnreal Frontend

Cet outil est capable de bien des choses, ici encore nous n'en utiliserons qu'une partie. Pour information, Unreal Frontend permet, entres autres, de "packager" votre jeu en un ensemble jouable que vos joueurs pourront télécharger. Concrètement, Unreak Frontend rassemblera vos fichiers, vos maps, votre contenu et vos scripts en un installeur Windows ou iPhone que vous pourrez distribuer. ;)

Son interface se découpe en plusieurs sections :

"Cooker" votre map

Par défaut, vous avez plusieurs profils, dont certains qui vous permettent de développer sur iPhone. Je ne présenterai pas cette partie, charge à vous d'expérimenter si vous êtes un développeur pour iPhone.
Le profil qui nous intéresse est DM-Deck, du nom d'une célèbre map d'Unreal Tournament. Vous allez donc le dupliquer et le renommer comme il vous plaira avec clic droit - Clone Profile, puis clic droit - Rename Profile.

Image utilisateurVous devriez avoir une interface comme celle-ci !

Pour l'instant, la map actuelle est DM-Deck. Cliquez sur Remove, puis sur Add et choisissez votre map dans la liste. Vous devez d'abord placer la map dans le dossier UDKGame/Content/Maps.
Cliquez sur Add Selected Maps, puis sur le bouton Cook en haut, et enfin sur Cook Packages ! La console devrait s'animer... Si tout se passe bien, le log de console devrait s'achever par une ligne en vert, qui se termine par SUCCEEDED, ou Réussi. :)

Pour votre information, les maps publiées sont placées dans UDKGame/CookedPC/Maps. Vous pouvez fermer Unreal Frontend: nous nous en resservirons bientôt, quand vous en serez à publier votre jeu vidéo.

Plus d'infos

On garde les bonnes habitudes : voici la documentation du processus de Cooking.
http://udn.epicgames.com/Three/ContentCooking.html


Un exemple avec Unreal Tournament 3 Créez votre map !

Créez votre map !

Publier une map Comment créer des éléments de jeu vidéo ?

Créez votre map !

Cette fois-ci, c'est la bonne : vous avez toutes les clefs en main pour réaliser un niveau avec UDK ! Pour mémoire, voici les principales étapes de la création d'une map.

Ébauche

C'est le moment de prendre son temps pour réfléchir au gameplay, à l'architecture, au thème, à l'ambiance... C'est une phase très importante qui peut vous faire gagner énormément de temps par la suite.
Vous risquez d'avoir moins d'idées une fois que vous serez lancé dans la réalisation, profitez de cette première étape pour tout mettre à plat. ;)

Prototypage

Une fois que vous savez ce que vous allez faire, en quelques heures vous pouvez construire la structure d'un niveau, uniquement avec BSP. Placez-y les armes, les véhicules, les objets à ramasser... Préparez votre map pour les bots, bref, occupez-vous de l'ensemble du gameplay, et jouez sur votre map !

Dans cette étape, le gameplay doit être votre seule et unique préoccupation. Attention toutefois aux dimensions : tâchez d'utiliser uniquement des puissances de 2 (128, 256, 512 unités) pour votre grille, et respectez cette dernière !

Décoration

C'est le moment de décorer la map. Si tout a été fait en respectant la grille, cela peut aller assez vite. Vous allez pouvoir utiliser les Static Meshes que vous avez en stock, ou ceux que vous avez créés pour l'occasion, et décorer cette map de fond en comble ! Dans cette phase, vous allez également pouvoir décorer votre map avec des effets spéciaux et animations.

Publication

Enfin, le moment sera venu de distribuer votre niveau. Si vous êtes en train de réaliser un jeu complet, cette partie se fera probablement en même temps que tout le reste du jeu ; cependant si vous êtes simplement en train de réaliser un niveau pour un jeu existant, vous devez publier votre map, y intégrer vos éléments graphiques additionnels, réaliser des captures d'écran pour en faire la promotion sur les forums, corriger les bugs remarqués par les joueurs...
C'est aussi un travail de longue haleine !

Ça y est, vous connaissez le processus de développement d'une map.
Vous avez en main l'essentiel des informations, pour celles qui vous manquent, vous savez où trouver la documentation qui vous les donnera !
Cette partie s'achève ainsi.

La partie suivante vous expliquera comment créer vos propres éléments de maps : aussi bien vos models, que du son, de la musique ou des effets spéciaux !

Maintenant, il est temps de personnaliser vos niveaux !


Publier une map Comment créer des éléments de jeu vidéo ?

Comment créer des éléments de jeu vidéo ?

Créez votre map ! Créer des models : le design modulaire

Le contenu de votre jeu vidéo représente l'essentiel du travail. C'est ce qui vous prend le plus de temps et demande les compétences les plus variées : graphisme 2D, modélisation, son, animation, particules...

C'est aussi la partie la plus créative : libre à vous d'imaginer un monde entier. Avec un moteur comme UDK, vous n'avez guère de limites à vos scènes. Votre imagination atteindra probablement ses limites avant d'atteindre celles du moteur ! :p

Il ne vous apprendra pas à modéliser, à dessiner, à créer du son. Pour cela, il existe d'autres cours spécialisés, y compris sur le Site du Zéro. Ce chapitre vous enseignera uniquement les spécificités du jeu vidéo.
Gardez aussi en mémoire qu'une seule personne ne peut pas tout savoir-faire. Si vous vous lancez dans un jeu, il est peu probable que la même personne réalise le son, les maps et le contenu 3D !

Si vous en doutiez encore, cette partie va vous montrer que créer un jeu est une tâche de longue haleine et qu'il est indispensable de créer une équipe. Ne vous découragez pas pour autant !

Créer des models : le design modulaire

Comment créer des éléments de jeu vidéo ? Créer des matériaux : textures, reliefs, reflets

Créer des models : le design modulaire

Cette partie s'adresse principalement à la réalisation de décors. Nous allons découvrir peu à peu comment réaliser des éléments pour vos jeux vidéo !

La modularité

On a un peu parlé dans la partie précédente de la différence entre la géométrie en BSP et des models. Il est temps de revenir un peu sur ce point !
Les models 3D sont bien plus que de simples décorations dans UDK. Ils constituent en réalité l'ensemble des décors dans un niveau d'aujourd'hui : portes, murs, sol, et même parfois reliefs ou terrains naturels alors que l'outil Terrain le permet ! Pourquoi ?

Il y a de multiples raisons que nous avons déjà évoquées. Mais la raison fondamentale, la voici : les models permettent de construire des décors modulaires.

C'est quoi, modulaire ?

Modulaire signifie ici : facile à déplacer, dupliquer, connecter à d'autres éléments. En pratique, c'est surtout un ensemble de caractéristiques sur les dimensions et la forme de vos objets qui vous feront gagner un temps fou dans vos niveaux. Avez-vous remarqué que les StaticMeshes disponibles dans UDK, en particulier les éléments de murs ou de sol, ont des dimensions extrêmement précises ? Souvent, leurs hauteur, longueur et largeur valent exactement 512, 256, 128 ou encore 64 unités.

L'intérêt d'adopter ces dimensions va vite vous apparaître : vous pouvez construire une pièce facilement sans avoir de trous, ou de difficulté à placer une pièce, comme leurs dimensions sont standardisées elles vont toutes parfaitement ensemble ! Et comme la grille de positionnement est également réglée pour ces valeurs, vos objets vont toujours bien se coller entre eux et s'aligner parfaitement.

Screenshot : DM-SteelGarden

Screenshot : DM-SteelGarden

Screenshot : DM-SteelGarden

Les blocs modulaires utilisés

Un exemple de design modulaire : au total il n'y a pas plus d'une dizaine de models différents dans les images que vous voyez ! Au niveau des dimensions, 256 et 512 sont les seules utilisées pour chacun de ces meshs. Le mur a la même longueur que le sol, que le toit, qu'un angle du sol...

La plupart des modeleurs 3D disposent d'une grille : dans Blender par exemple, vous pouvez configurer cette grille pour qu'elle se divise par 8 au lieu de se diviser par 10. Je vous encourage à le faire sur votre modeleur si c'est possible ! Ne créez jamais un mur, une dalle, un bloc réutilisable avec des dimensions qui ne sont pas une puissance de 2. Vous le regretterez amèrement et vous devrez recommencer vos models plus tard.

Une autre règle concerne le placement de l'origine : vous devez la placer de préférence dans un angle. Par exemple, pour un morceau de mur, placez systématiquement l'origine au niveau du sol, et dans un angle du model. Pour pas mal de raisons : notamment la gestion du redimensionnement, et surtout l'assurance que votre model respecte la grille.

Les models : pourquoi ?

Cette modularité est un outil extrêmement pratique, car il ouvre la voie à la réutilisation. La réutilisation, c'est le principe de placer plusieurs fois, et même plusieurs dizaines de fois un objet dans un niveau ou dans le jeu entier. La modularité facilite ce travail : vos objets sont toujours bien alignés et ont les mêmes dimensions, vous pouvez donc réaliser un couloir en copiant dix fois un élément de sol !

Je ne vois toujours pas le rapport avec les models !

Le rapport est en effet difficile à percevoir au premier regard. En effet, ce dont nous parlons ici, c'est tout simplement du copier-coller, c'est possible avec des blocs BSP, tout comme les dimensions des blocs BSP sont également modulaires.

Mais il y a une différence cruciale : les StaticMeshes auxquels vous êtes maintenant habitués, dans votre niveau, ne sont que des références vers un model 3D contenu dans un package. Il y a donc un seul objet 3D, pour potentiellement 10 voire 100 exemplaires de l'objet dans votre niveau, si par exemple c'est une dalle sur le sol ; alors que quand vous faites un copier-coller d'un bloc BSP, vous avez physiquement deux fois le même objet dans le niveau.

En conséquence, même si cette dalle est très détaillée et finement décorée, UDK n'aura besoin de gérer qu'une seule fois les données de cette dalle si c'est un StaticMesh, alors qu'en la réalisant en BSP, UDK devra gérer dans le rendu la totalité des exemplaires. Vous pouvez donc, en réutilisant un StaticMesh à plusieurs reprises, gagner énormément en performances tout en offrant un énorme niveau de détail !

Les models : comment ?
Pièges classiques

Voici une liste d'erreurs classiques dans la conception d'un model. Il faut absolument éviter de :

Si vous commettez une de ces erreurs, UDK ne plantera pas, tout fonctionnera parfaitement. Mais vous aurez de gros soucis pour construire votre map et la rendre jouable, parce que vous ne pourrez pas générer de collisions correctes ou parce que vous n'arriverez pas à placer précisément les objets dans la map. Respectez bien le principe de la conception modulaire et tout se passera bien de ce côté.

Processus

La création d'un model se déroule souvent suivant cette procédure.

Pas de panique, nous allons très vite voir en détail comment faire tout ça.

Le budget performances et les contraintes

Vous devez savoir que les objets des jeux vidéos sont créés avec certaines contraintes. La plus courante et la plus connue, c'est le budget en polygones, ou le nombre de faces de vos objets. Il faut néanmoins déjà préciser cette définition : dans UDK, on compte les triangles

En 3D, on m'a toujours appris à faire des faces à 4 points et jamais de triangles !

Et à raison ! Vous devez continuer à modéliser en évitant un maximum les triangles. Simplement, sachez qu'au passage à UDK, votre model sera "triangularisé" : si vous avez 1000 faces dans Blender, vous aurez donc 2000 triangles dans UDK (une face rectangulaire est faite de deux triangles). ;)

Et maintenant les chiffres, pour UT3 en 2007... Voici des ordres de grandeur du nombre de triangles par objet :

Le but n'est pas de vous obliger à atteindre ces chiffres ni de vous interdire de les dépasser : c'est un ordre de grandeur ! Ne faites pas une bouteille avec 1000 triangles ni un tank avec 100 triangles, c'est tout. ;)

Enfin, soyez conscients que les effets avancés que peut proposer votre modeleur 3D seront perdus à l'exportation : c'est typiquement le cas des Modifiers de Blender.


Comment créer des éléments de jeu vidéo ? Créer des matériaux : textures, reliefs, reflets

Créer des matériaux : textures, reliefs, reflets

Créer des models : le design modulaire La modélisation high-poly et le jeu vidéo

Créer des matériaux : textures, reliefs, reflets

Textures et matériaux

Si vous avez des notions de 3D, le terme texture vous est certainement familier. Mais qu'en-est-il du terme de matériau ? Bien connu par les professionnels, il est cependant mal compris par les débutants voire pas utilisé et souvent confondu avec texture.

Image utilisateurLe rendu étudié en détail ici

Un matériau (Material dans UDK) comprend toutes les propriétés de l'aspect physique d'un objet. On peut trouver par exemple :

Eh oui, c'est peut-être une surprise, mais il n'y a quasiment jamais une seule texture sur un objet, mais parfois 5, ou 6 différentes ! Car ce qu'on applique à l'objet, c'est un matériau, et les textures qui en font partie peuvent avoir un effet assez difficile à percevoir. Prenons l'exemple d'un des matériaux utilisés sur les models 3D montrés ci-dessus :

Image utilisateurDe gauche à droite : Diffuse Map, Emissive Map, Normal Map. En bas au centre : le matériau final.

Matériau et model : quel rapport?

Tout model dispose aussi d'un matériau. Un model peut utiliser plusieurs matériaux également, par exemple un siège pourrait employer un matériau pour le support et un matériau pour le coussin. Et bien sûr, plusieurs models peuvent utiliser le même matériau : le matériau que je vous ai donné en exemple est utilisé pour 4 des models montrés au début de cette partie !

Concrètement, l'association entre matériau et model se fait grâce à la technique de l'UV Mapping. Si vous ne la connaissez pas, il est urgent de vous renseigner dessus ! Pour Blender, il y a un cours sur le sujet sur ce site. Voilà un exemple d'UV Mapping :

Image utilisateurEncore et toujours le même matériau, utilisé sur le bloc de sol des images précédentes.

Les textures en détail : une map pour un effet
Diffuse Map

C'est ce qui correspond à ce qu'on l'appelait autrefois uniquement texture : la Diffuse Map contient les couleurs. C'est donc la plus importante, la seule texture que vous aurez quasi forcément sur un objet. La façon de les créer dépend énormément d'un artiste à l'autre. Mais souvent, le mieux est d'utiliser des textures existantes, par exemple avec http://www.cgtextures.com/. Voici le processus que j'utilise personnellement...

Specular Map

Le principe de cette texture est simple : elle définit l'intensité des reflets. Si vous utilisez du blanc, les reflets seront intenses, et nuls si vous utilisez du noir. Sachez que vous pouvez généralement vous contenter d'utiliser votre Diffuse Map, en niveaux de gris, avec un contraste augmenté, comme Specular map. Vous pouvez également la générer automatiquement dans UDK en utilisant uniquement la Diffuse Map, pour les matériaux avec des reflets limités (bois, pierre...).

Normal Map

Cette texture mérite une explication. En fait, elle mériterait un cours en elle-même, mais ce n'est pas le but ici...
La Normal Map est une façon de créer des reliefs autrement qu'avec des points et des faces supplémentaires. C'est la solution que vous emploierez pour donner du relief à vos matériaux : par exemple, il est impensable de modéliser les fibres du bois, les trous, les nœuds... En revanche, à partir d'une texture de bois, vous pouvez générer une Normal Map qui une fois dans UDK vous permettra d'avoir des reliefs.

Image utilisateurUn exemple de Normal Map : notez l'effet de relief

Avec quoi je fais ça?

Les outils ne manquent pas. Nous verrons une méthode complexe dans la partie suivante, mais la méthode simple est de générer la Normal Map à partir de la Diffuse Map, avec par exemple un plugin de Photoshop, si vous l'utilisez :

Il y a d'autres outils qui fonctionneront eux séparément de votre éditeur d'images :

Pour terminer

Comment on se sert de tout ça ?

Quand vous aurez une Diffuse Map prête pour votre objet, ouvrez-là avec un de ces outils, et utilisez-le pour générer une Normal Map. La façon exacte de faire dépend de l'outil et je ne l'expliquerais pas dans ce cours : il y a trop d'outils différents pour que ça soit utile. Prenez ça comme un TP !

Budget performances et contraintes

Eh oui, encore. Cette fois, c'est plus simple : vous devez utiliser des textures carrées, de dimensions multiples d'une puissance de 2 (512x512, 1024x1024...). Utilisez au maximum 2048 : c'est suffisant même pour un très gros véhicule. Tâchez également de réemployer vos textures tant que possible : dans l'exemple de cette partie, il n'y a que trois matériaux au total !


Créer des models : le design modulaire La modélisation high-poly et le jeu vidéo

La modélisation high-poly et le jeu vidéo

Créer des matériaux : textures, reliefs, reflets Importer du contenu

La modélisation high-poly et le jeu vidéo

Dans cette dernière section, vous allez découvrir rapidement comment les professionnels créent des éléments détaillés de jeux vidéo. ;)
Nous allons prendre l'exemple d'un bloc de dallage en pierre pour un sol dans un château.

Modélisation

La première étape est de modéliser un model dit Low Poly, peu détaillé mais qui représente correctement les formes de l'objet. Notez bien la position de l'origine (visible en bas à droite) : dans un coin, en bas. C'est comme ça qu'il faut faire, et surtout pas au milieu de l'objet si vous voulez qu'il soit modulaire !

Image utilisateur

Model Low Poly

Ensuite, on réalise une copie de cet objet basique et on le sculpte en utilisant cette fois-ci un nombre illimité de polygones : parfois plusieurs millions ! On parlera de model High Poly. Aucun jeu vidéo ne peut encaisser un tel objet, mais ce n'est pas grave, ça ne sera pas nécessaire.

Image utilisateur

Le maillage "High Poly", qui est déjà plus chargé

Image utilisateur

Le model final, sculpté et détaillé

Baking

Le Baking est l'opération qui permet de transférer les détails du model high poly vers le model low poly, tout en conservant le même nombre de polygones ! Pour réaliser le Baking, il faut d'abord réaliser une UV Map de l'objet low poly.

Image utilisateur

UV mapping

Une fois les deux models disponibles, low poly et high poly, il faut utiliser un outil comme xNormal dont nous avons parlé, qui va en quelque sorte comparer les deux models, et générer une Normal Map utilisable sur le model low poly pour lui donner l'apparence du high poly. Vous pouvez également utiliser votre logiciel de 3D favori du moment qu'il le permet, c'est le cas de Blender. Dans le monde de la 3D, on parlerait de Baking.
Et là vous devriez comprendre tout l'intérêt de la manipulation : vous pouvez réaliser un objet extrêmement détaillé, et ensuite le transformer en un objet très peu coûteux en ressources mais avec un niveau de détail approchant !

Diffuse map et rendu

Pour créer la diffuse map, le processus a été le suivant :

Image utilisateurDiffuse Map et Normal Map

Image utilisateur

Le rendu final

Au terme de ces manipulations, le Level Designer dispose de trois éléments :

C'est suffisant pour placer cet objet dans votre jeu !

Image utilisateurTest dans UDK

Après cette introduction, vous devriez avoir les idées plus claires quant à la réalisation de contenu. Nous allons donc pouvoir passer aux aspects plus liés à UDK.


Créer des matériaux : textures, reliefs, reflets Importer du contenu

Importer du contenu

La modélisation high-poly et le jeu vidéo Un mot sur les packages

Maintenant que vous savez comment créer votre contenu, voyons comment l'importer dans UDK !

Un mot sur les packages

Importer du contenu Importer un model

Un mot sur les packages

Vous vous souvenez des Packages ? Vous allez bientôt créer votre premier objet, il est temps d'en parler.
Quand vous aurez beaucoup de contenu, il sera indispensable de le répartir en différents packages, chacun avec un thème précis : un par arme ou véhicule, un par type de décor ("Murs en pierre", "Murs métalliques", "Gameplay", "Fosses à piques" :-° , etc).

Vous devez également créer un dossier à vous dans UDK\UDKGame. C'est dans ce dossier que je vous conseille de sauvegarder vos packages ! Voici comment je m'organise personnellement : un dossier par package, et des sous-dossiers pour les différents types de ressources.

Fichiers

Dans Mesh, je place les fichiers Blender et dans Texture les textures et leurs sources Photoshop. Stone est le nom du package, et j'ajoute le préfixe CA à tous mes packages.

Cette organisation vous permettra de vous y retrouver facilement. Rien ne vous empêche de tout faire sur le bureau de votre PC, mais ça sera aussi plus compliqué pour vous. :-°


Importer du contenu Importer un model

Importer un model

Un mot sur les packages Importer des textures et créer un matériau

Importer un model

Importer votre objet dans UDK est la chose la plus simple du monde. Nous allons reprendre l'exemple précédent et importer ce bloc de pierre. A vous de jouer : vous devez avant tout créer un objet 3D et lui associer une UV Map, ainsi qu'une texture et une normal map si vous êtes motivés.

Importer un mesh

Importer un Static Mesh dans UDK est très simple, il vous suffit d'exporter votre mesh au format ASE (ASCII Scene), FBX ou T3D depuis votre éditeur favori. Ensuite, lancez UDK Editor et restez dans le Content Browser.

Image utilisateurCliquez sur le bouton Import en bas à gauche de l'écran pour ouvrir un navigateur

Le menu d'importation est accessible via le bouton Import du Content Browser. Naviguez jusqu'à votre objet et double-cliquez dessus ! Si vous ne le trouvez pas, c'est que vous n'avez pas exporté le fichier dans un des formats supportés.

Image utilisateur

A vous de choisir le nom du package et de votre objet.

L'option Groupingest très utile. Elle vous permet de définir des groupes dans un package, et je vous le conseille: Mesh pour les models, Texture pour les textures, Sound, Material, etc. Vous pouvez mettre ce que vous voulez, mais organisez-vous. Une dernière chose : si vous choisissez comme nom de package un package qui n'existe pas, comme c'est probablement le cas, vous allez le créer. Enfin, cliquez sur OK pour importer le mesh.

Mon Static Mesh est tout gris et bleu !

C'est normal : aucun matériau ne lui est associé, UDK n'importe ici que la géométrie de votre objet et pas du tout ses couleurs, textures... Nous allons y remédier. Mais avant tout, sauvegardons notre travail !

Sauvegarder

Faisons un point sur la gestion des packages et des fichiers, avant de créer un Material pour décorer votre objet.
Sauvegarder est très simple : il suffit de sélectionner le nom du package dans l'arborescence et d'utiliser le raccourci CTRL + S pour sauvegarder et donc enregistrer le package au format UPK, comme Unreal Package. Rappelez-vous de votre organisation pour enregistrer au bon endroit !

Image utilisateur

L'état normal du Content Browser avant sauvegarde. Notez l'étoile à côté du nom de votre package dans l'arborescence ! Elle indique qu'il faut sauvegarder ce fichier car il a été modifié (ou créé, ici)


Un mot sur les packages Importer des textures et créer un matériau

Importer des textures et créer un matériau

Importer un model Gérer les models : collisions, matériaux

Importer des textures et créer un matériau

Importer les textures

Maintenant que vous avez compris le principe, tout va aller très vite. Pour importer vos textures, c'est le même procédé. Je vous conseille d'utiliser le format TGA (Targa) comme intermédiaire entre vos fichiers Photoshop, GIMP, ... et UDK.
Autre règle: vous devez absolument avoir des dimensions d'image parmi celles-ci : 128, 256, 512, 1024 (le standard) et 2048 (pour de gros objets très détaillés seulement !).
Pour les noms, la pratique courante chez Epic Games est la suivante :

Pour importer une texture, c'est exactement la même chose, sauf que vous devriez utiliser le mot-clef texture pour le Grouping. Une nouveauté cependant : les options de compression !

Image utilisateur

Dans la pratique, seulement trois sont utiles :

Eh oui. UDK réalise des optimisations et compressions à tous les niveaux de la chaîne : importation, sauvegarde, Cooking... Le résultat : des taux de compression hallucinants. Pour exemple, une de mes maps pèse plusieurs centaines de Mo en fichiers avant importation, et seulement 30Mo une fois terminée et publiée !
En revanche, ça a un prix : importer une texture peut prendre une bonne minute et plus la résolution est élevée, plus c'est long. Pas de panique, UDK n'a pas planté, il ne répond plus c'est tout.

Si c'est le cas, c'est sa façon de dire qu'il n'aime pas votre texture. Assurez-vous d'avoir respecté les bonnes dimensions, de ne pas avoir activé la compression RLE sur le Targa, et d'être en mode 24 bits et tout ira bien.

Créer un Material

Cliquez sur le nom de votre package dans l'arborescence, et dans la liste du contenu (votre mesh et vos deux textures) cliquez droit et choisissez New Material. Vous devez commencer à connaître cette fenêtre par cœur. Indiquez Material dans Grouping, et un nom explicite, avec un préfixe M_ pour Material par exemple. Cliquez sur OK : l'éditeur Material s'ouvre.

Image utilisateurUnreal Material Editor

Rassure-vous : cet outil est bien plus simple qu'il n'en a l'air. Cette zone noire à gauche est la zone de prévisualisation, à droite, vous avez un éditeur exactement comme celui de Kismet ! Ce gros bloc avec plein de connexions, c'est le rendu final avec plusieurs canaux : Diffuse, Emissive, Specular, SpecularPower et Normal sont amplement suffisants pour l'instant.

Il faut commencer simple : ajouter vos textures ! Pour ceci, la manipulation exige d'ajouter un node TextureSample. Ajoutez-le avec clic droit - Texture - New TextureSample. Ensuite, vous pouvez le déplacer comme dans Kismet, avec CTRL + clic gauche maintenu. Et maintenant, vous devez taper le nom de la texture dans les propriétés en bas. Puis appuyez sur ENTREE.

Image utilisateurTapez le nom de la texture : UDK devrait trouver tout seul le résultat.

Vous devriez avoir la texture affichée à la place du carré noir. Si c'est le cas, reliez-la sortie en haut à gauche à la connexion Diffuse du matériau, comme dans Kismet, et recommencez avec votre Normal Map si vous en avez une. Vous devriez avoir votre matériau complet affiché à gauche.

Image utilisateurUn matériau basique terminé. Vous pouvez le visualiser sur d'autres objets basiques avec les boutons turquoise dans la barre d'outils, qui représentent les formes basiques à essayer.

Fermez la fenêtre, et acceptez de sauvegarder les modifications, bien sûr !


Importer un model Gérer les models : collisions, matériaux

Gérer les models : collisions, matériaux

Importer des textures et créer un matériau Le Lightmapping

Gérer les models : collisions, matériaux

Un material pour votre mesh

Il est maintenant temps d'appliquer enfin notre matériau à notre model 3D ! Sauvegardez le package (cela peut prendre du temps maintenant que vous avez ajouté des textures) et double-cliquez sur le model.

Image utilisateurLa fenêtre d'édition de Static Mesh

Ce qui vous intéresse est dans la partie droite de l'image : les options du model. En particulier, l'arborescence des différents éléments, nommée LODInfo.

Naviguons dans l'arborescence LODInfo :

Apparaît une ligne Material. Si vous cliquez dessus, la zone concernée sur le model va s'illuminer en violet. Entrez le nom de votre Material et appuyez sur ENTREE, ou utilisez l'icône en forme de loupe pour naviguer dans le Content Browser puis la flèche verte pour sélectionner le Material. C'est fini ! Réduisez l'arborescence pour enlever le halo violet sur le model.

Image utilisateurVotre model et son matériau

Les collisions

Les collisions, dans le jeu vidéo, désignent la capacité d'un objet à ne pas être pénétrable par un autre. C'est un mécanisme qui n'est ni automatique ni évident : par défaut, vos models importés ne disposent pas de collisions. Il faut créer une sorte de boîte invisible autour de votre objet qui empêche d'autres objets, eux aussi pourvus de collisions, de pénétrer dans le model.
Pour résumer simplement, les collisions vous permettent de marcher sur votre objet ou de vous en servir comme mur !

Pour l'instant, votre mesh est complètement dépourvu de collisions. UDK vous le signale dans le Content browser pour vous en avertir ! La bonne nouvelle c'est qu'UDK est capable de les générer automatiquement.
Cliquez sur View - Collision pour activer leur affichage, puis dans le menu Collision, choisissez une méthode de génération. En voici une brève présentation :

Image utilisateurLe mesh et ses collisions avec DOP6

Vous pouvez sauvegarder. Votre mesh est prêt à être placé dans le jeu !

Que faire si aucune collision automatique ne donne de résultats corrects?

Vous avez probablement mal conçu votre mesh, il est trop compliqué par exemple, ou bien c'est une pièce concave, comme une voûte de tunnel. Auquel cas, si vraiment vous ne pouvez pas le séparer en plusieurs blocs (ce qui est vraiment la meilleure solution), il vous reste deux choix :

Pour aller plus loin

Comme d'habitude, vous n'êtes pas obligés de lire ces pages, mais c'est la documentation de référence d'UDK. Si vous avez une question à poser sur ce que nous venons de voir, il y a fort à parier que la réponse est ici. Bonne lecture !


Importer des textures et créer un matériau Le Lightmapping

Le Lightmapping

Gérer les models : collisions, matériaux Les matériaux en détail

Le Lightmapping

Une fois ces bases comprises, voyons un dernier point sur ce sujet : le Lightmapping.

Qu'est-ce que c'est que cette technique ?

Vous ne le savez pas encore mais dans vos niveaux UDK, pour chaque objet, une texture correspondant à l'éclairage de l'objet est réalisée quand vous calculez l'éclairage. Vous l'avez probablement compris dans les étapes précédentes : c'est par l'UV-Mapping que les coordonnées sur la texture sont associées à l'objet 3D... C'est exactement comme ça que fonctionne le Lightmapping : vous allez réaliser une UVMap spéciale pour l'éclairage, ou lightmap !

Comment réaliser une lightmap ?

Il y a deux façons de s'y prendre : la méthode manuelle, ainsi que la méthode automatique. Par simplicité, nous allons nous attarder sur la seconde ! Elle donne de très bons résultats et elle nous suffira. Pour ce faire, il suffit d'ouvrir votre StaticMesh avec l'éditeur dédié. Concentrez-vous sur les options du mesh, en haut à droite.

Actuellement votre mesh a une seule UVMap, celle que vous avez réalisée dans votre modeleur 3D. La mention UV Channels : 1 en haut à gauche de la fenêtre devrait vous en convaincre.

Pour générer une seconde UVMap, cliquez simplement sur File - Generate Unique UVs. Un nouveau menu apparaît : cliquez simplement sur Apply ! Rien de spécial ne va se passer, sauf cette mention qui va apparaître... UV Channels : 2. Vous avez réussi ! Il suffit de manipuler le mesh exactement comme avant, et vous allez constater de bien meilleures ombres.

A l'heure d'écriture de ces lignes, vous devez utiliser le rendu DirectX 9. Dans la fenêtre principale, cliquez sur File - Switch Renderer - DX9 et recommencez.

Et ça ressemble à quoi ?

Dans l'exemple ci-dessous, le sol de la pièce est lightmappé, en particulier sous le puits d'éclairage. Si on utilise un mesh classique sans ce travail supplémentaire, l'ombre est très diffuse et les détails en sont absents.

Image utilisateurLe sol sur la droite comporte maintenant des ombres très élaborées !

Pour aller plus loin...

Vous devriez en avoir l'habitude, voici la documentation sur le sujet !

En avant pour la prochaine partie : vous allez tout savoir sur les matériaux.


Gérer les models : collisions, matériaux Les matériaux en détail

Les matériaux en détail

Le Lightmapping Textures et matériaux

Passons à une revue plus détaillée du Material Editor.

Textures et matériaux

Les matériaux en détail Un matériau dynamique

Textures et matériaux

Aller plus loin avec les textures

Vous venez de voir comment ajouter des textures, mais nous allons aller plus loin. Reprenons d'abord les bases ! Vous avez remarqué que chaque node TextureSample a non pas une, mais 5 sorties. En voici la liste :

Vous pouvez vous amuser avec ça. Par exemple, pour éliminer la composante bleue, il vous suffit d'ajouter un node Add avec clic droit - Math - New Add et d'y connecter la sortie rouge et la sortie verte. En sortie de Add, connectez l'entrée Diffuse du Material.

Multiplier des images

C'est du noir et blanc, pourquoi?

Parce que chaque sortie R,V,B ou Alpha est une image en niveaux de gris. Ils contiennent donc une information de couleur, mais pas le nom de la couleur elle-même. Nous allons donc devoir ajouter une information de couleur grâce à la multiplication !

Le premier node avancé que vous devez connaître dans le Material Editor, c'est la multiplication. Ajoutez-en une avec clic droit - Math - New Multiply. Ce node prend deux paramètres : par exemple, une texture et une constante. Pour assombrir une texture, il suffit de la multiplier par une valeur constante de 0.5 par exemple ! Mais nous, nous allons multiplier par une couleur, le rouge pur, pour reconstituer le canal rouge. Pour ce faire, utilisez ce node : clic droit - Constant - New Constant3Vector.

C'est quoi, cette constante ?

C'est un vecteur RGB, ou en langage courant : une couleur ! Vous avez juste 3 valeurs, de 0 à 1, chacune correspondant à l'intensité de la couleur en question: R (rouge), G (vert) et B (bleu).

Vous vous rappelez du but du TP? Supprimer le bleu dans l'image. Voici ma solution :

Image utilisateur

Et maintenant, pour terminer, voici une reconstruction complète de l'image d'origine.

Image utilisateurDécomposition puis reconstruction de la Diffuse Map

A quoi ça sert tout ça ?

Ce qu'on vient de faire ici ne sert à rien concrètement, comme vous vous en doutez sans doute. Mais ce que vous avez appris est indispensable. Ce TP avait pour but de vous montrer le fonctionnement des nodes, comment fonctionnent les canaux de couleur, l'addition, la multiplication, les constantes.

Les TextureCoordinate

Un outil assez pratique : le node TextureCoordinate se connecte à l'entrée des nodes TextureSample et vous permet de redimensionner l'image ainsi que de la répéter, sur les deux axes U (largeur) et V (hauteur). Un exemple avec des valeurs de 4 :Image utilisateur

Si vous regardez votre model avec ce matériau, vous allez être déçu : ça rend très mal. Il faut utiliser cet outil quand c'est nécessaire. Par exemple, pour ajouter du relief à une texture de roche, il vous suffit de multiplier la Normal Map par elle-même, mais avec un node TextureCoordinate cette-fois... Le rendu est saisissant: le niveau de détail est bien plus fin, alors que vous n'avez au final rien ajouté à la texture !

Image utilisateurUn exemple d'ajout de détail sur un rocher

Émettre de la lumière avec l'Emissive Map

Vous vous rappelez dans le chapitre précédent, d'une boule radioactive verte qui illuminait votre pièce avec Lightmass?
C'est très simple à faire : il vous suffit de créer une texture niveaux de gris, avec en noir les zones qui n'émettent pas, et en gris/blanc celles qui émettent. Puis, multipliez-la par la couleur souhaitée :)

Image utilisateur

Contrôler les reflets avec la Specular Map

Maintenant que vous savez gérer couleur, relief et lumière, il ne vous reste que les reflets !
Gérer les réflexions de la lumière est simple. Il vous suffit de désaturer, ou enlever la couleur, de votre Diffuse Map, et de régler la valeur Specular Power qui contrôle la spécularité. La spécularité, c'est la tendance de vos reflets à s'étaler sur la surface : à 0, la moindre lumière illumine toute la surface, à 10, les reflets sont visibles mais pas éblouissants, à 100 par exemple, vous n'avez plus que des points lumineux, comme sur du métal.

Sachez également que la Normal Map influe énormément sur les reflets.

Voici un exemple basique de gestion des reflets :

Image utilisateurSpecular Map issue de la Diffuse, Power à 5

Les Physical Material

Un dernier point, pas des moindres : le comportement de votre matériau du point de vue physique... Friction, densité... Tout y est !
Vous trouverez des PhysicalMaterial dans UT3/Environments/PhysicalMaterials. Choisissez celui qui vous convient, ici PM_Stone et revenez au Material Editor.

Tout en bas, tant que vous ne sélectionnez aucun node, ce sont les propriétés du matériau qui s'affichent. Dans la catégorie Physical Material, indiquez dans l'option Phys Material cette valeur : PhysicalMaterials.Default.Stone.PM_Stone qui est le chemin du PhysicalMaterial que nous avons choisi.


Les matériaux en détail