Présentation de la session UNREAL FEST Demon Ex Machina. La première utilisation d'Unreal Engine 4, le résultat de la sueur et des larmes qui ont ouvert la voie

Construisez un système de développement en tâtonnant dans le noir

"UNREAL FEST" est un événement officiel Unreal Engine à grande échelle sponsorisé par Epic Games Japon, et se tient à Kanto à l'automne et au Kansai au printemps depuis 2014, lorsque Unreal Engine 4 (ci-après dénommé UE4) a été lancé sur le public. Ici, nous présenterons le « Mecha Action Game » de l'UNREAL FEST EAST 2019 qui s'est tenu au Pacifico Yokohama le 6 octobre 2019.DÉMON X MACHINENous aimerions partager avec vous la session intitulée « Études de cas de développement de Faith, Blood, and Steel ».

Les intervenants étaient l'ingénieur en chef de Marvelous, Yuta Kono, et l'artiste principal Satoru Kikuchi. La session comprenait deux parties, avec M. Kono en charge de la première moitié, la « section ingénieur », et M. Kikuchi en charge de la seconde moitié, la « section VFX ». "DÉMON X MACHINE» a été le premier jeu grand public Marvelous à utiliser UE4 et a été développé pour la Nintendo Switch, il a donc été développé dans le noir.

M. Kono était en charge de la première moitié de la conférence. A travaillé du côté système de "DAEMON X MACHINA" en tant que programmeur principal.

Dans la première moitié, nous présenterons comment nous avons utilisé UE4 dans "DAEMON X MACHINA" et comment nous avons relevé les défis. Ici, le contenu de chaque point de l'ordre du jour a été expliqué. Basé sur le commentaire de M. Kono. Les grandes lignes de chaque ordre du jour sont les suivantes.

・Politique d'utilisation de l'UE4

J'aimerais utiliser UE4 tel quel, mais j'étais prêt à apporter quelques modifications. Mon impression est que les résultats ont été comme prévu. Nous avons mis beaucoup d'efforts dans l'art, ce qui est la caractéristique du titre.

・Composition des personnages

Le mécanisme appelé Arsenal utilise la classe Character et combine plusieurs maillages squelettiques en les attachant. Les six armes sont des acteurs individuels et peuvent être échangées ou séparées. La destruction de pièces s'exprime en combinant le remplacement du modèle et les effets. Le modèle humain appelé Outer fait également partie de la classe Character, et sa configuration est presque la même que celle d'Arsenal, mais SetMasterPose n'est pas utilisé pour la tête. L'ennemi utilise la classe Pawn. Bien qu'il s'agisse d'une configuration de modèle unique, des pièces telles que la tourelle sont fixées à l'aide d'acteurs distincts.

・Structure des niveaux

La zone fait environ 4 km carrés, les 2 km intérieurs étant une zone jouable. Les plans de fond sont créés par les artistes eux-mêmes. La météo est exprimée en échangeant les sous-niveaux d’éclairage, de sphère céleste et d’effets environnementaux. Navmesh est utilisé tel quel avec les modificateurs dynamiques uniquement. Au début, les plans de niveaux étaient créés librement par l'équipe, mais les ingénieurs leur fournissaient des règles définies pour plusieurs équipes. Le problème était qu’il existait des différences individuelles considérables dans la manière dont les plans étaient construits.

・Création/rendu d'images

Ma politique lors de la création de l’image était d’éviter de créer une image enfantine en éliminant les contours. Trois sources lumineuses parallèles sont utilisées et commutées par canal. Pour contrecarrer la charge, nous prenons des mesures telles qu'ajuster soigneusement le LOD et éviter autant que possible l'utilisation de matériaux translucides.

· VFX · SFX

Pour les effets, utilisez Cascade tel quel et modifiez certains modules. Le son utilise CRI ADX2/Sofdec2. Les bases des plug-ins inclus restent les mêmes, mais quelques modifications ont été apportées pour réduire la charge.

・Scène de démonstration

Le séquenceur est utilisé tel quel pour les cinématiques. Au début, j'ai eu du mal à choisir entre Matinee et Matinee. Une extension a été réalisée pour correspondre au titre, y compris des pistes d'événements. Les problèmes avec Sequencer incluent le fait que, comme il en était aux premiers stades de sa sortie, il n'y avait presque aucun document ni exemple, et que les spécifications ont changé avec les mises à niveau de la version du moteur.

・Interface utilisateur

L'interface utilisateur utilise UMG tel quel. Le problème était que la charge CPU était si élevée qu'elle ne pouvait pas être exécutée sur autre chose que GameThread, et qu'un grand nombre d'UObjects étaient générés.

・Configuration complète des touches

ActionMapping/AxisMapping n’est pas utilisé. Ceci a été réalisé en manipulant directement UInputComponent et en créant une table de conversion d'entrée. C'était bien qu'il soit immédiatement compatible avec le capteur gyroscopique. Veuillez noter qu'en mode Joy-Con Dual, vous ne pouvez capter que le capteur gauche.

・Multijoueur

Utilisez OmlineSubsystemSwitch tel quel. Puisqu'il s'agit d'un format ListenServer, une personne sera l'hôte et les autres seront des invités. Le traitement des mouvements est effectué côté client. Les arbitres et les classements ont été implémentés directement à l'aide du SDK. Le problème est que la configuration du réseau est en forme d'étoile, donc la charge est concentrée sur le joueur qui fait office de serveur. Il y avait beaucoup d'autres problèmes mineurs. De plus, des bogues se produisaient fréquemment dans OmlineSubsystemSwitch.

·Localisation

Pour la langue du texte, nous avons utilisé le tableau de bord de localisation et AssetLocalization tels quels. Afin de séparer l'audio du texte, nous l'avons implémenté indépendamment. Il n'y avait pas un très bon environnement d'édition pour les fichiers po. Dans bSerializeAssetRegistry, je l'ai désactivé en pensant que cela économiserait de la mémoire, mais AssetLocalization n'a pas fonctionné, je l'ai donc réactivé.

·performance

En ce qui concerne les mesures de performances, le processeur était principalement le goulot d'étranglement, nous avons donc utilisé divers paramètres du moteur pour réduire la charge. Chaque cas sera présenté point par point.

<Personnage>
J'ai modifié certaines parties en classes Pawn et réduit autant que possible le nombre d'éléments attachés.

<Contexte>
Comme de nombreux objets peuvent être détruits, la charge est réduite en désactivant la fonction lorsqu'elle est à l'arrêt et en l'allumant et l'éteignant soigneusement.

<Balle>
Pour les effets, le traitement du pool a été utilisé pour réduire la charge, et pour le mouvement, la collision a été activée/désactivée et déplacée à l'aide de MoveComponent.

<GC>
Dans GC, l'objectif principal est de réduire les UObjects.

<Plan>
En principe, les ticks sont strictement interdits dans les plans, et le C++ convient.

<Mémoire>
Vous pouvez modifier le seuil de libération des RenderTargets inutiles, mais cela est recommandé car il s'agit d'un paramètre simple et qui a un grand effet. À titre d'informations supplémentaires, certains numéros UObject sont divulgués à titre de référence.

<Lecture automatique>
Implémenté pour que vous puissiez créer automatiquement des salles et jouer en multijoueur. Son exploitation a commencé à la fin du projet. Le décompte quotidien était utile car il pouvait être comparé aux rapports de bogues réguliers.

·résumé

UE4 peut être utilisé tel quel, mais des paramètres détaillés sont requis. Je veux également faire attention aux mises à jour de version. Assurez-vous également de vérifier les fonctionnalités dépendant de la plate-forme. Les futurs problèmes que nous envisageons incluent la mise à niveau du moteur, la révision du flux d'intégration de l'animation, la vérification de ReplicationGraph en multijoueur et l'enrichissement du contenu de la lecture automatique.

VFX visant « mecha + toon »

L'artiste principal, M. Kikuchi, était en charge de la seconde moitié. Il a parlé de la politique VFX et d'un aperçu de "DAEMON X MACHINA", de ce qui le tenait particulièrement en tant qu'artiste et des problèmes auxquels il était confronté.

M. Kikuchi a participé à de nombreux titres, principalement grand public. Il est en charge de l'artiste principal VFX pour "DAEMON X MACHINA".

M. Kikuchi a d'abord parlé de la politique de production VFX. Ils ont choisi une expression toon pour le projet, dans le but de le différencier en disant : « C'est un truc de mecha, mais c'est un toon. » La mise en scène est simple et caractéristique, comme celle des anime et des bandes dessinées des années 1980. Afin d'explorer sa forme, M. Kikuchi a regardé beaucoup d'animes mecha à la maison et a déterminé le look VFX.
«Je l'ai regardé dans la salle de bain sur une tablette étanche. J'ai toujours aimé la mécanique, donc c'était un moment vraiment amusant», explique Kikuchi.

Au début du projet, la plupart du personnel n'avait aucune expérience en matière d'UE, mais ils ont dû créer un grand nombre d'actifs en peu de temps. C'était aussi la première fois qu'il produisait des effets visuels avec UE4, et il essayait tout simplement. Sur la base de ce qui précède, la politique générale que nous avons adoptée était de « ne pas rendre les choses trop compliquées et de nous concentrer sur des choses faciles à utiliser et à produire en masse ». À propos, l'environnement de production était UE4.20 et l'outil était Cascade.

Concernant les matériaux, considérons d’abord la composition. Il est divisé par usage, destination, éclairage, etc., et la structure hiérarchique est du type « parent, enfant, petit-enfant ». Après avoir clarifié les éléments de jeu pour le mode de fusion, ils ont décidé d'utiliser Masqué au lieu d'utiliser autant que possible la translucidité.
"C'était une décision drastique, mais maintenant que j'y pense, je pense que c'était la bonne", a déclaré Kikuchi.

Les détails du règlement ont été omis et seuls les éléments ont été introduits. Il semble que la liste de contrôle n'était pas trop détaillée et a été vérifiée par importance.

Concernant les mises à niveau de version et la personnalisation, nous avons choisi de ne faire aucune personnalisation car dans le passé, lorsque nous développions avec UE3, nous avions du mal à mettre à jour la version après personnalisation. Il a déclaré avoir mis à jour la version quatre fois au total et avoir pu migrer sans aucun problème.

Ajustez la représentation en fonction de la direction

Ensuite, des exemples VFX spécifiques pour chaque actif ont été introduits. Il existe sept atouts : "balle", "fumée", "explosion", "mouvement de glissement", "portée", "propulseur" et "fumée de surface".

Concernant les « balles », les missiles et les fusils étaient initialement représentés comme normaux, mais des formes ont été ajoutées à la trajectoire, et finalement elles ont été symbolisées par « missile : hexagone, tireur d'élite : carré, blitz : triangle ». Nous avons obtenu une expression visuelle facile à comprendre au premier coup d’œil.

La « fumée » est contrôlée par dissolution. L'augmentation de la vitesse de défilement UV a provoqué un problème de texture rugueuse, mais j'ai pu le résoudre en vérifiant le nœud Panner et en augmentant la précision. De plus, en utilisant une texture GrayScale, nous avons réussi à exprimer magnifiquement la rugosité des bords, même à basse résolution. Pour résoudre le problème des grosses fumées recouvrant l'écran, nous avons pris des mesures pour découper des trous dans la fumée en fonction de la distance de la caméra, permettant d'assurer la visibilité.

L'"explosion" de Zakoenemy était au départ trop compliquée et fatigante à regarder, mais cela a été corrigé en ajustant le matériau lumineux. Le matériau rougeoyant a quatre couleurs et largeurs configurables. Le VFX pendant le crash souligne la sensation de volume. Le but est de le rendre flashy pour que les gens puissent ressentir un sentiment d'accomplissement, et aussi pouvoir voir le lieu de l'accident avec les flammes verticales.

Le « mouvement de glissement » s'exprime à l'aide de traînées et de matières dissoutes. Il n'y a eu aucun problème sur le PC, mais sur la machine elle-même, la traînée est devenue violente, et cela a été résolu en supprimant "Size By Life".

Dans la section « portée », l’explosion a d’abord été expliquée. Afin de créer un mouvement convaincant pour l'explosion de la zone, nous avons ajouté un pinceau et un flou de mouvement pour créer un effet puissant. Utilisez la transparence dans l’espace de récupération et le bouclier. Dans le bouclier du boss, les matériaux sont un peu plus luxueux.

Le "Thruster" est un gadget placé sur le dos d'Arsenal en forme de fente. Boost met l'accent sur la sensation de jet et la sensation d'anime mecha avec l'affichage cross flare.

« Ground smoke » est un VFX lié à l’arrière-plan, et comme le champ est vaste, il est automatiquement placé. Fixez l'émetteur à la caméra et déposez des particules invisibles par le haut, créant de la fumée au point où elles frappent. Les VFX et SFX changent en fonction du type de terrain. Il était difficile de créer un système pour ce matériau physique, et on disait que cela demandait beaucoup d'efforts. Pour vérifier le comportement, nous avons préparé une carte spéciale avec différents terrains et vérifié divers VFX. Lors du contrôle d'endurance, en plus du travail manuel, ils ont également pris soin de créer un système.