UE4 | Inventaire pour Multijoueur # 3 | Structure d'interaction




Dans cet article, nous allons examiner la structure d'inventaire que j'ai appliquée à mon projet multijoueur. Cette section est très petite et ne contient pas de code.


L'inventaire lui-même est un composant utilisé non seulement pour le personnage , mais aussi pour tout objet du jeu, qui, selon le scénario, peut être un stockage pour les objets. Par exemple: coffre, boîte, boîte, placard, etc.




Ce composant contient un TArray , dont les éléments stockent un minimum d'informations nécessaires:


  1. L'identifiant de l'objet, sous la forme d'un GameplayTag . Comme je l'ai dit plus tôt, GameplayTag est plus pratique que, disons, FName , car il réduit considérablement le risque d'erreurs.
  2. Le nombre d'objets dans l'emplacement spécifié par la variable int .
  3. Catégorie de l'objet pour comprendre comment il peut être appliqué. À cette fin, au lieu d' Enum, vous pouvez utiliser GameplayTagsContainer , ce qui nous permettra d'attribuer l'objet à plusieurs types à la fois si nécessaire.
  4. Propriétés uniques de l'objet, qui sont stockées sous forme de structure à partir d'un tas de GameplayTag et flottent . Ici, vous pouvez stocker à la fois des paramètres et des modificateurs.

Il n'y a pas de lien vers les objets eux-mêmes dans cette structure d'inventaire, car après avoir enregistré et chargé le jeu, ils se référeront à des zones qui stockent déjà d'autres données. Ainsi, vous avez besoin d'un outil qui pourrait restaurer (réapparaître) tous les objets après avoir chargé le jeu. Ici, DataAsset vient à la rescousse , qui est toujours disponible côté serveur (car dans notre cas, nous l'avons connecté via GameMode ) et est prêt à aider à placer l'objet sur la scène.


Le composant d'inventaire contient également la logique de suppression et d'ajout du nombre requis d'objets, la logique de remplissage des emplacements. Toutes les fonctions lancées dans le conteneur ne devraient fonctionner que côté serveur.


La structure de l'interaction de l'inventaire et de la base de données est la suivante

Les propriétés uniques de l'objet, telles que les composants supplémentaires et la logique, sont facilement configurables à l'aide de C ++ et / ou Blueprint .


Dans la section suivante, je montrerai comment vous pouvez connecter le composant créé à Character ou à tout autre objet.


Toute critique constructive est la bienvenue. Soutenu de préférence par des suggestions.


PS Dans les deux premiers articles, des images explicatives ont été ajoutées.

Source: https://habr.com/ru/post/fr419347/


All Articles