0

Créer son propre type d’asset sur UE4

Versions: Unreal Engine 4.21.1 et Visual Studio 2017

Dans ce tutoriel, nous allons voir comment créer notre propre type d’asset personnalisé afin d’étendre les fonctionnalités de l’éditeur Unreal Engine 4 et optimiser ainsi le rendement de nos projets. Pour ce faire, nous allons créer un type d’asset appelé ItemDescription héritant de la classe Object et qui nous permettra de créer un asset ayant comme paramètres une description ainsi que le nombre de points de score qu’il rapporte. Pour aller plus loin dans la customisation, nous verrons également comment créer un asset de ce type en glissant-déposant un fichier texte contenant la description que nous voulons lui attribuer. C’est parti!

Déclaration du type

Etape 1. Si vous n’avez pas déjà de projet UE4 d’ouvert, créez un projet C++ basique (avec le template Basic Code par exemple). Pour ma part, j’ai créé un nouveau projet C++ intitulé: CreationTypeAsset.

Etape 2. Faites un clic droit dans votre content browser et choisissez l’option New C++ Class. Dans la fenêtre qui s’ouvre, cochez la case Show All Classes, choisissez la classe Object comme classe parente et cliquez sur Next. Dans la fenêtre suivante, donnez le nom MyCustomAsset à votre classe et cliquez sur Create Class.

Etape 3. Visual Studio devrait se lancer. Si ce n’est pas le cas, ouvrez votre projet VS en cliquant sur le fichier .sln qui se trouve à la racine de votre projet Unreal Engine. Dans Visual Studio, ouvrez le fichier MyCustomAsset.h et modifiez son contenu pour correspondre à ceci:

Avant de continuer, notez tout de même que si vous copiez le code ci-dessus, il faudra faire en sorte de ne pas modifier le nom de la macro située juste à côté du nom de votre classe dans votre projet. Dans mon cas, il s’agit de la macro CREATIONTYPEASSET_API à la ligne 9 et, en fonction du nom de votre projet, celle-ci aura un nom différent. Il s’agit en fait d’une macro définie par Unreal Build Tool (UBT) et permet de paramétrer la déclaration des imports/exports de DLL sur Windows. Si vous voulez plus d’infos sur le sujet, cliquez ici.

Etape 4. Compilez votre code. Une fois la compilation terminée, notre type d’asset est déclaré et nous pouvons passer à la suite: la création d’une instance dans l’éditeur.


Création d’une classe Factory

C’est ici que les choses commencent à être intéressantes 🙂 En effet, nous allons créer une classe Factory pour notre type d’asset. Qu’est-ce qu’une factory? Il s’agit en fait d’une classe permettant de gérer la création d’instances de notre nouveau type d’asset directement dans l’éditeur d’Unreal Engine. Pour ce tuto, nous allons implémenter deux classes factory: une première permettant de créer notre instance depuis le menu contextuel, qu’on va appeler UFactoryNew, et une seconde permettant de créer notre instance en glissant-déposant un fichier texte qui contiendra la description de notre personnage, qui va s’appeler UFactoryDragAndDrop.

Factory pour le menu contextuel

Etape 1. Dans votre projet Unreal Engine, faites un clic droit dans votre content et choisissez l’option New C++ Class. Dans la fenêtre qui s’ouvre, cochez la case Show All Classes et choisissez cette fois-ci la classe Factory comme classe parente. Cliquez sur Next, donnez le nom FactoryNew à votre classe et cliquez sur Create Class.

Etape 2. Dans Visual Studio, éditez le code du fichier FactoryNew.h pour correspondre au code suivant:

Etape 3. Ouvrez le fichier FactoryNew.cpp et editez son code pour correspondre à celui-ci:

Etape 4. Compilez votre code. Fermez l’éditeur Unreal Engine et ré-ouvrez le pour qu’il prenne en compte les changements effectués. Et voila! Si vous faites un clic droit dans le content browser et que vous choisissez la catégorie Blueprint, vous devriez voir votre nouveau type d’asset apparaître 🙂

Etape 5. Créez-en un et ouvrez-le. Vous pourrez alors éditer ses propriétés.

Factory supportant le drag & drop

Etape 1. Tout comme pour le premier type de factory, créez une nouvelle classe et choisissez la classe Factory comme classe parente. Cliquez sur Next et donnez cette fois-ci le nom
FactoryDragAndDrop . Cliquez ensuite sur Create Class.

Etape 2. Dans Visual Studio, ouvrez le fichier FactoryDragAndDrop.h et modifier son code comme suit:

Etape 3. Remplacez le contenu du fichier FactoryDragAndDrop.cpp pour correspondre à ceci:

Etape 4. Compilez votre code puis fermez et ré-ouvrez l’éditeur Unreal Engine pour qu’il puisse prendre en compte les changements. Essayez de glisser déposer un fichier texte (.txt) contenant une courte description… et voilà! 🙂

Nous venons de créer notre propre type d’asset à utiliser dans l’éditeur Unreal Engine. L’intérêt principal de ce genre de démarche consiste surtout à améliorer l’automatisation et le rendement de vos projets. Bien sûr, au travers de ce tuto, nous n’avons fait qu’effleurer le sujet et la création d’un type d’asset personnalisé peut vite devenir très complexe. On pourrait par exemple customiser le look des assets créés dans l’éditeur en utilisant des Asset Actions ou encore créer un éditeur entièrement personnalisé pour modifier nos assets, comme c’est le cas par exemple pour le plugin gratuit Not Yet Dialogue System disponible sur le marketplace d’Epic Games. Pour continuer dans votre apprentissage, n’hésitez pas à jeter un coup d’œil aux liens cités ci-dessous. C’est grâce à ces derniers que j’ai réussi à mieux comprendre le concept pour ensuite rédiger ce tuto 🙂


Liens utiles:
0

Créer un plugin pour Unreal Engine 4

Logiciels utilisés pour ce tuto: Unreal Engine 4.19 , Visual Studio Community 2017

Aujourd’hui, nous allons voir ensemble comment créer un plugin, y ajouter des fonctionnalités et le préparer pour qu’il puisse être accepté sur le Marketplace d’Unreal Engine. En faisant des recherches sur la question, je me suis rendu compte que les informations sur le sujet n’était pas très précises et j’ai donc décidé de vous proposer une sorte de compilation regroupant tout le nécessaire pour créer un plugin de manière simple. Une petite précision avant de continuer : le plugin que nous allons créer supporte l’utilisation du Hot Reload d’Unreal Engine 4, une fonctionnalité très pratique permettant de détecter automatiquement les fichiers « .DLL » fraîchement compilés, nous évitant ainsi de devoir fermer puis rouvrir notre projet à chaque fois que nous ferons des modifications du code source de notre plugin.

Dans ce tutoriel, nous allons créer un plugin de type Blueprint Function Library, mais sachez tout de même que ces étapes sont également valables pour la création de n’importe quel autre type de plugins (Actor Components, Actors, etc.). Pour les étapes à suivre, suivez le guide 🙂

Etape 1. Ouvrez UE4 et créez trois nouveaux projets à placer dans un dossier commun intitulé UE4PluginCreator. Les projets sont à paramétrer de la manière suivante :

  • PluginMaker : un projet C++ pour la création du plugin en tant que game module (permettant d’utiliser le Hot Reload).
  • PluginExporter : un projet C++ pour préparer le plugin à une publication sur le Marketplace.
  • PluginTester : un projet Blueprint pour vérifier le bon fonctionnement du plugin lorsqu’on l’importe dans un projet vierge.

Ci-dessus les paramètres des trois projets UE4 à créer.

Etape 2 . Ouvrez le projet PluginMaker et cliquez sur Edit > Plugins  dans la barre de menu. La fenêtre suivante devrait s’afficher :

Etape 3 . Cliquez sur New Plugin. Dans la nouvelle fenêtre, sélectionnez l’option Blank et mettez « MyFirstPlugin » dans le champ Name. Vous pouvez compléter le formulaire avec vos propres informations si vous le souhaitez. Une fois les informations renseignées, cliquez sur Create Plugin. Si Visual Studio s’ouvre à la fin de la génération du plugin, vous pouvez sauvegarder et fermer.

Etape 4 . Dans UE4, cliquez sur Add New > New C++ Class . Sélectionnez None et cliquez sur Next. Dans la nouvelle fenêtre, entrez « Test » dans le champ Name et sélectionnez « MyFirstPlugin » dans le menu déroulant juste à côté de ce dernier. Lorsque Visual Studio s’ouvrira à la fin de la génération du plugin, sauvegardez et fermer aussi bien VS que UE4.

Etape 5 . Dans le dossier du projet PluginMaker, coupez le dossier Plugins et collez-le à la racine du dossier du projet PluginExporter.

Etape 6 . Dans le dossier PluginExporter/Plugins/MyFirstPlugin/Source  coupez le dossier MyFirstPlugin et collez-le dans le dossier PluginMaker/Source . Dans ce dernier, ouvrez les fichiers PluginMaker.Target.cs et PluginMakerEditor.Target.cs et ajoutez-y le module de votre nouveau plugin en modifiant la ligne 12 des deux fichiers de la manière suivante:

Etape 7 . Ouvrez le fichier PluginMaker/Source/MyFirstPlugin/MyFirstPlugin.Build.cs  et remplacez son contenu par les lignes suivantes:

Etape 8 . Placez vous dans le dossier PluginMaker/Source/MyFirstPlugin/ . Déplacez les fichiers Private/MyFirstPlugin.cpp  et Public/MyFirstPlugin.h  dans ce dernier.

Etape 9 . Commentez tout le code du fichier Public/MyFirstPlugin.h et ajoutez-y les lignes suivantes au tout début :

Etape 10 . Commentez tout le code du fichier Private/MyFirstPlugin.cpp et ajoutez-y les lignes suivantes au tout début :

Etape 11 . Pour que le moteur Unreal Engine 4 puisse prendre en compte le module fraîchement créé, ouvrez le fichier  PluginMaker.uproject avec un éditeur de texte (j’utilise Notepad ++) et ajoutez y le nouveau module. Une fois que c’est fait, votre fichier devrait ressembler à ceci:

Etape 12 . Mettez vous à la racine du projet PluginMaker et supprimer les dossiers suivants: .vs , Binaries , Intermediate  et Saved .

Etape 13 . Faites un clic droit sur le fichier PluginMaker.uproject  et choisissez l’option « Generate Visual Studio project files« :

Etape 14 . Ouvrez le projet Visual Studio PluginMaker.sln  et générez la solution. Pour ce faire, faites un clic droit sur votre solution et sélectionnez dans le menu contextuel l’option « Générer » (« Build » si VS est en anglais).

La première partie de ce tutoriel dédié à la création d’un plugin est terminée. Dans la suite de ce tutoriel, nous nous servirons du projet PluginMaker pour coder les fonctionnalités de notre plugin. Une fois que ces dernière seront terminées, nous importerons notre code dans le projet PluginExporter pour créer un plugin qui sera compatible avec le marketplace d’Unreal Engine. Et enfin, une fois que tout sera terminé, nous testerons notre plugin dans le projet PluginTester pour voir si tout fonctionne bien. Dans la prochaine partie  de ce tutoriel nous commencerons à développer les fonctionnalités de notre plugin.

0

Réinitialiser un projet UE4 en cas de plantages

Dans certains cas et ce, sans aucune raison apparente, il arrive que votre projet se mette à faire crasher Unreal Engine 4, voire même à ne plus vouloir se lancer du tout. Une solution possible à ce problème consiste à réinitialiser entièrement votre projet UE4. Pour ce faire, suivez les étapes suivantes.

Etape 1 . Rendez-vous dans le dossier de votre projet et supprimez l’ensemble des fichiers et dossiers qui sont sélectionnés sur la figure suivante. Si votre dossier ne contient pas certains de ces éléments, ne vous inquiétez pas et sélectionnez uniquement ceux qui y sont présents.

Etape 2 . Si votre projet ne contient que des blueprints, vous pouvez passer à l’étape 3. Si votre projet contient du C++, faites un clic droit sur votre fichier « .uproject » (celui avec une petite icône bleue) et sélectionnez dans le menu contextuel l’option « Generate Visual Studio project files ». 

 

Etape 3 . Double cliquez sur votre fichier « .uproject » et vous verrez une boite de dialogue « Missing Modules » apparaître. Cliquez sur « Oui » et patientez le temps que le build de votre projet se termine.

 

Etape 4 . Si tout se passe bien, votre projet se lancera de nouveau et vous pourrez reprendre votre travail sans soucis 🙂