Ajouter des fonctionnalités en temps réel dans Unreal Engine 5.3 avec PubNub
Published: 2024-03-08 07:37:11

Si vous souhaitez ajouter des fonctionnalités en temps réel à votre [jeu](https://www.pubnub.com/solutions/gaming/) multijoueur ou [en ligne](https://www.pubnub.com/solutions/gaming/) Unreal Engine (UE) 5.3, vous êtes au bon endroit. PubNub garantit une messagerie à faible latence et une évolutivité, améliorant l'expérience des joueurs grâce à des fonctions sociales telles que le chat dans le jeu, la détection du statut en ligne, les listes d'amis, les systèmes de notation et les classements, et bien plus encore, le tout en temps réel. Que vous développiez pour Windows, Mac, iOS, Android, des systèmes de réalité virtuelle tels qu'Oculus et Meta Quest, ou que vous soyez multiplateforme, nous prenons en charge la couche d'infrastructure de votre jeu pour une interactivité en temps réel afin que vous puissiez vous concentrer sur votre application.

Continuez à lire pour voir comment vous pouvez utiliser le [module Unreal Engine](https://github.com/pubnub/c-core/tree/master/unreal) de PubNub pour implémenter ces fonctionnalités temps réel et bien plus encore dans votre propre jeu UE.

Gardez à l'esprit que notre plugin Unreal Engine est encore au début de son développement, nous serions donc ravis de recevoir vos commentaires à l'adresse [devrel@pubnub.com](mailto:devrel@pubnub.com) ou en soumettant une pull request/issue sur notre [dépôt GitHub](https://www.pubnub.com/how-to/admin-portal-presence/).

Conditions préalables
---------------------

Avant de commencer, vous devez préparer quelques éléments :

1.  [Unreal Engine](https://www.unrealengine.com/en-US/unreal-engine-5): Assurez-vous d'avoir installé Unreal Engine. Cet article a été créé avec UE 5.3.
    
2.  [IDE](https://docs.unrealengine.com/5.3/en-US/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine/): Il est recommandé d'utiliser Visual Studios avec UE. Assurez-vous de suivre les instructions d'Epic Games pour configurer UE 5.3 avec Visual Studios.
    
3.  [PubNub](https://www.pubnub.com/): Créez un [compte PubNub](https://admin.pubnub.com/#/login) gratuit pour obtenir les clés API nécessaires à la connexion au réseau. Vous devrez créer votre application et votre jeu de clés ; vous pouvez apprendre à le faire en suivant ce [guide](https://www.pubnub.com/how-to/admin-portal-create-keys/). Vous devrez également activer Presence pour la détection en ligne et vous pouvez apprendre à le faire en lisant notre [guide pratique](https://www.pubnub.com/how-to/admin-portal-presence/).
    

Intégrer le module Unreal de PubNub
-----------------------------------

Pour pouvoir utiliser le module Unreal Engine de PubNub afin d'alimenter les fonctionnalités en ligne, vous devrez effectuer une configuration du SDK et l'ajouter à votre projet afin de pouvoir intégrer les fonctionnalités.

### Configuration du SDK

Tout d'abord, clonez le dépôt SDK dans la source de votre projet Unreal Engine :

```js
git clone [Repository_URL] [Your_Unreal_Project]/Source/ThirdParty/
```

Remplacez `[Repository_URL]` par l'URL réelle du dépôt PubNub C-Core SDK. Si le dossier ThirdParty n'existe pas, créez-le.

Si vous êtes sous Windows, ouvrez le projet dans Visual Studios. Vous devez avoir accès à Tools > Command Line > Developer Command Prompt pour exécuter la commande `nmake` .

Naviguez jusqu'au répertoire SDK et compilez à l'aide de la commande appropriée à votre système (Remarque : ce blog a été rédigé sous Windows et a utilisé la commande Windows) :

POSIX (Linux/Mac)

Remplacez l'option, l'architecture et l'implémentation en conséquence.

```js
make -C <option> -f <architecture>.mk pubnub_<implementation>.a
```

Windows :

```js
nmake -f windows.mk
```

Windows Universal Platform :

```js
nmake -f windows/uwp.mk
```

OpenSSL :

```js
make -C openssl -f posix.mk pubnub_sync.a
```

**Note**: Si vous utilisez l'option OpenSSL, assurez-vous que les en-têtes de votre bibliothèque OpenSSL correspondent à ceux d'Unreal.

Ouvrez /Source/ThirdParty/PubNubModule/PubNubModule.Build.cs et ajustez les options `Option`, `Architecture` et `Implementation` avec les mêmes valeurs que celles que vous avez utilisées pour la compilation. Par exemple :

```js
private readonly string Option = "windows"; // posix, windows, openssl
private readonly string Architecture = "windows"; // posix, windows
private readonly string Implementation = "callback"; // sync, callback
```

Importez le module en modifiant les fichiers cibles du projet pour inclure le module PubNub. Veillez à remplacer `UnrealProject` par le nom de votre projet :

```js
public class <UnrealProject>[Editor]Target : TargetRules
{
    public <UnrealProject>[Editor]Target (TargetInfo Target) : base(Target)
    {
        //...
        ExtraModuleNames.Add("PubNubModule");
    }
}
```

Dans `UnrealProject.uproject`:

```js
{
  //...
  "Modules": [
    //...
    {
      "Name": "PubNubModule",
      "Type": "Runtime",
      "LoadingPhase": "Default"
    }
  ],
  //...
}
```

Vous avez presque terminé l'installation du SDK - il ne reste plus qu'à générer les fichiers du projet Visual Studios (ou à actualiser les fichiers pour inclure les nouvelles modifications). Vous pouvez le faire de plusieurs manières, notamment via l'éditeur d'Unreal Engine 5.3, ou en faisant un clic droit sur le fichier `.uproject` dans l'explorateur de fichiers et en générant les fichiers de projet Visual Studio :

![](https://www.pubnub.com/cdn/3prze68gbwl1/2g0GKBvbfZQ1h0a519wSit/983281f98f33410e0f8a33eb81d1b86a/2023-10-15_11_10_40-UnrealEngine-GeneratedBuildFiles.png)

### Utilisation du module

Pour commencer à utiliser le module Unreal Engine PubNub, vous devez modifier le fichier `Module.Build.cs` dans le module où vous souhaitez utiliser PubNub et ajouter le module. Veillez à remplacer `Module` par le nom de votre module :

```js
public class <Module> : ModuleRules
{
    public <Module>(ReadOnlyTargetRules Target) : base(Target)
    {
        //...
        PrivateDependencyModuleNames.Add("PubNubModule");
    }
}
```

Enfin, vous devrez inclure l'en-tête PubNub dans vos fichiers via `#include "PubNub.h"`. Vous n'aurez pas besoin d'inclure les include `THIRD_PARTY_INCLUDES_START` et `THIRD_PARTY_INCLUDES_END` car ils sont déjà pris en charge.

Implémentation des fonctionnalités en temps réel
------------------------------------------------

Vous êtes maintenant prêt à mettre en œuvre ces cas d'utilisation en temps réel dans votre UE Game ! Mais d'abord, plongeons un peu plus profondément dans la compréhension du fonctionnement de PubNub à un niveau élevé.

### Vue d'ensemble de PubNub

PubNub est basé sur le modèle Pub/Sub (Publier/S'abonner). Un utilisateur [publie](https://www.pubnub.com/docs/general/messages/publish) un message, qui est essentiellement une charge utile contenant toutes les informations pertinentes, sur le réseau PubNub. Les utilisateurs qui souhaitent recevoir ou écouter le message et d'autres événements générés s'[abonneront](https://www.pubnub.com/docs/general/messages/receive) au réseau PubNub et analyseront le message. Les [auditeurs d'événements](https://www.pubnub.com/docs/general/messages/receive#add-a-listener) sont utilisés pour capter les messages et les événements générés dans le réseau PubNub et se déclenchent en fonction d'une action effectuée.

Pour que le message parvienne aux bons destinataires, des [canaux](https://www.pubnub.com/docs/general/channels/overview) sont utilisés comme mécanisme de transmission des données d'un appareil à l'autre. Les canaux sont nécessaires chaque fois qu'un appareil souhaite publier et s'abonner au réseau PubNub. Alors qu'un utilisateur ne peut publier qu'un seul message à la fois, il peut s'abonner à plusieurs canaux différents à la fois.

### Chat dans le jeu

Le chat dans le jeu ou la messagerie in-app augmente l'engagement des joueurs et favorise la fidélisation des utilisateurs. Le chat dans le jeu permet aux joueurs de communiquer entre eux, ce qui favorise le sentiment d'appartenance à une communauté et fournit une plateforme d'interaction sociale qui rend l'expérience de l'utilisateur plus agréable.

Vous pouvez ajouter un chat dans votre jeu vidéo UE 5 pour une communication en temps réel en utilisant l'architecture Pub/Sub de PubNub et en [publiant des](https://www.pubnub.com/docs/sdks/c-core/api-reference/publish-and-subscribe#publish) messages chaque fois qu'un joueur envoie un message. Les clients doivent [s'abonner](https://www.pubnub.com/docs/sdks/c-core/api-reference/publish-and-subscribe#subscribe) aux canaux appropriés pour écouter ces messages (le type de chat étant déterminé par le [nom du canal](https://www.pubnub.com/docs/general/channels/channel-naming)), les capturer dans un écouteur d'événement `OnMessageReceived` et les traiter de manière appropriée :

```js
// Initialize the PubNub client
PubNubClient->Init(YourPublishKey, YourSubscribeKey);

// Sending a message
FString Channel = "all-chat";
FString Message = "Hello, fellow friends!";
PubNubClient->Publish(Channel, Message);

// Receiving messages:
PubNubClient->Subscribe(Channel);
PubNubClient->OnMessageReceived.AddLambda([](const FString& Channel, const FString& Message) {
    // Handle the received message here and display on screen.
    UE_LOG(LogTemp, Warning, TEXT("Received message on %s: %s"), *Channel, *Message);
});
```

### Détection du statut en ligne

La[présence](https://www.pubnub.com/docs/general/presence/overview) est utilisée pour déterminer le statut en ligne de vos joueurs dans votre jeu, en générant des événements pour fournir des informations sur leur statut en temps réel. La présence est une fonctionnalité extrêmement importante pour votre jeu, car elle permet à vos joueurs de connaître le statut en ligne de leurs amis, de savoir s'ils sont en ligne/hors ligne, s'ils sont en train de participer à un match ou à un lobby, de connaître leur emplacement dans le monde du jeu et même de savoir à quelle activité ils sont occupés.

Grâce à l'[API de présence](https://www.pubnub.com/docs/sdks/c-core/api-reference/presence), vous pouvez suivre l'arrivée et le départ des utilisateurs en ligne, y compris les événements personnalisés avec l'[état de l'utilisateur](https://www.pubnub.com/docs/sdks/c-core/api-reference/presence#user-state). Vous devez ensuite abonner chaque client à un canal de suivi de la présence et écouter ces événements via l'écouteur d'événements `OnPresenceEventReceived` :

```js
// Subscribe to a presence channel
FString PresenceChannel = "presence.all";
PubNubClient->Subscribe(PresenceChannel);

// Listen for presence events
PubNubClient->OnPresenceEventReceived.AddLambda([](const FPubNubPresenceEvent& Event) {
    if (Event.Action == EPubNubPresenceAction::Join) {
        UE_LOG(LogTemp, Warning, TEXT("%s joined the game!"), *Event.UUID);
    } else if (Event.Action == EPubNubPresenceAction::Leave) {
        UE_LOG(LogTemp, Warning, TEXT("%s left the game."), *Event.UUID);
    }
    // Handle other presence actions as needed, including custom user state.
});
```

### Listes d'amis, de guildes, d'alliances et de plans

L'intégration d'une liste d'amis, de guildes, d'alliances et de clans dans votre jeu Unreal Engine est un aspect essentiel de la promotion de l'engagement des joueurs. Elle permet à vos joueurs de créer un lien plus étroit avec d'autres joueurs dans le jeu, qu'ils soient amis en dehors du jeu ou qu'ils aient tissé des liens étroits au cours d'un match intense.

Ces listes peuvent être mises en œuvre dans votre jeu en créant des groupes de canaux et en y souscrivant. Les [groupes](https://www.pubnub.com/docs/general/channels/subscribe#channel-groups) de canaux vous permettent de gérer un grand nombre de canaux en même temps. Les groupes de canaux sont essentiellement un pointeur vers une liste de canaux qui vous permet d'envoyer un seul appel d'abonnement pour un maximum de 2000 canaux par groupe de canaux. Les groupes de canaux sont propres à l'identifiant de l'utilisateur connecté au réseau, ce qui signifie que vous pouvez nommer un groupe de canaux de manière unique et le lier à ce joueur.

Vous pouvez ajouter des listes d'amis, de guildes, d'alliances et de clans en utilisant l'[API des groupes de canaux](https://www.pubnub.com/docs/sdks/c-core/api-reference/channel-groups) pour définir chaque liste avec un nom unique, où l'ajout et la suppression de canaux dans chaque liste représentent les joueurs concernés qui sont ajoutés/supprimés des listes dans le jeu. La détection du statut en ligne et le chat pour ces groupes suivent les sections précédentes pour le chat dans le jeu et la détection du statut en ligne avec Presence. Vous pouvez obtenir plus de détails sur la mise en œuvre des listes d'amis, de guildes, d'alliances et de clans en consultant notre [documentation](https://www.pubnub.com/docs/general/resources/design-pattern-friend-list-status-feeds) sur la configuration de l'architecture.

### Classements en direct et systèmes de notation

Les systèmes de notation et les tableaux de classement sont des aspects essentiels d'une expérience de jeu amusante. Les systèmes de score fournissent des informations vitales lorsque les joueurs sont engagés dans un match intense et sont nécessaires pour déterminer les meilleures chances de victoire, tandis que les classements sont utilisés comme un moyen d'encourager la compétition entre les joueurs pour voir les meilleurs scores après les matchs. Ces deux types de systèmes encouragent la rejouabilité et constituent un moyen simple de fidéliser les joueurs.

Les systèmes de score peuvent être mis en œuvre de la même manière que la messagerie du jeu : créez un modèle de canal pour que seuls les joueurs participant au match reçoivent les mises à jour et abonnez-vous à ce canal lorsque les joueurs concernés rejoignent le match. Lorsqu'il y a des mises à jour à envoyer, par exemple en cas de nouveaux dégâts, publiez la mise à jour en élaborant un message et en l'envoyant. Consultez notre [guide sur les systèmes de score](https://www.pubnub.com/how-to/develop-game-scoring-system/) pour connaître les différents types de tableaux d'affichage que vous pouvez implémenter dans votre projet Unreal Engine.

Une fois le match terminé, un dernier appel est lancé pour mettre à jour les classements mondiaux afin que les autres joueurs puissent les consulter. En utilisant les [fonctions](https://www.pubnub.com/products/functions/), vous pouvez créer et exécuter une logique commerciale en périphérie pour acheminer, filtrer, transformer, augmenter et agréger les messages en temps réel qui transitent par le réseau PubNub. Cela signifie que vous pouvez héberger votre propre code ou des [intégrations tierces](https://www.pubnub.com/integrations/) sans faire tourner votre serveur pour intercepter les messages PubNub avant ou après qu'ils se produisent, ainsi que stocker des informations pertinentes en utilisant le [module KV store](https://www.pubnub.com/docs/sdks/functions/kvstore-module), qui est un magasin clé-valeur persistant qui agit comme une base de données pour vos fonctions.

Pour les classements, vous souhaitez mettre à jour les scores une fois que les joueurs ont terminé un match, puis informer les joueurs de la mise à jour du classement en vous abonnant à un canal dédié aux mises à jour du classement. Pour en savoir plus sur les fonctions, consultez notre [documentation](https://www.pubnub.com/docs/general/serverless/functions/overview).

À suivre
--------

Dans cet article, vous avez appris comment ajouter des fonctionnalités en temps réel à votre jeu Unreal Engine 5.3 avec PubNub. Que vous souhaitiez ajouter une [messagerie dans le jeu, des systèmes de notation en direct et des classements](https://www.pubnub.com/solutions/gaming/), ou même des listes d'amis, de guildes, d'alliances ou de clans, les développeurs de jeux peuvent compter sur PubNub pour mettre en œuvre ces fonctionnalités en temps réel.

Si vous souhaitez commencer à ajouter des fonctionnalités en temps réel à votre propre jeu UE 5.3 avec notre [module Unreal Engine](https://github.com/pubnub/c-core/tree/master/unreal), assurez-vous de consulter la [documentation](https://www.pubnub.com/docs/sdks/c-core) pour apprendre ce dont vous avez besoin pour implémenter avec succès ces fonctionnalités en temps réel. Nous disposons également de SDK pour d'autres moteurs de jeu, comme [Unity](https://www.pubnub.com/docs/sdks/unity) , qui est utilisé dans notre [jeu Unity](https://github.com/PubNubDevelopers/unity-multiplayer-shooter) pour présenter les fonctionnalités décrites dans cet article et bien plus encore. N'oubliez pas que notre plugin Unreal Engine est encore au début de son développement, nous serions donc ravis de recevoir vos commentaires ou vos questions à l'adresse [devrel@pubnub.com](mailto:devrel@pubnub.com) ou en soumettant une demande d'extraction ou un problème sur notre [dépôt GitHub](https://www.pubnub.com/how-to/admin-portal-presence/).

#### Contenu

[PrérequisIntégrer](#h-0)[le module Unreal de](#h-1)[PubNubInstallation du SDKUtilisation du](#h-2)[moduleMise en œuvre des](#h-3)[fonctionnalités en temps](#h-4)[réelVue d'ensemble de](#h-5)[PubNubChat](#h-6)[en](#h-5)[jeuDétection de statut](#h-7)[en](#h-6)[ligneListes d'](#h-8)[amis/Guild/Alliance/ClanTableaux de classement](#h-9)[en direct](#h-8)[et systèmes de notationQu'est-ce](#h-9) qui[suit](#h-10)?

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://www.pubnub.com/blog/add-real-time-features-in-unreal-engine-5-3-with-pubnub/)

Notre plateforme aide les développeurs à construire, livrer et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub
----------------

Découvrez le [Live Tour](https://www.pubnub.com/tour/introduction/) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs).