Documentation
Guide technique et référence API
Qu'est-ce que Easy Replication ?
Easy Replication est un plugin Unreal Engine 5 qui simplifie radicalement la création de jeux multijoueurs. Plus besoin de comprendre les RPCs, la réplication, ou l'architecture client-serveur.
- ✓ Synchroniser des variables entre tous les joueurs
- ✓ Appeler des Ă©vĂ©nements sur tous les clients
- ✓ Spawner des acteurs visibles par tous
Avant / Après
Sans Easy Replication
UFUNCTION(Server, Reliable)
void Server_SetHealth(float NewHealth);
UFUNCTION(NetMulticast, Reliable)
void Multicast_OnHealthChanged();
void Server_SetHealth_Implementation(...)
{
Health = NewHealth;
Multicast_OnHealthChanged();
}
Avec Easy Replication
// 1 seule ligne !
Set Synced Float (Target, "Health", 100.0)
Installation
Copier le Plugin
Copiez le dossier EasyReplication dans le dossier Plugins de votre projet Unreal.
VotreProjet/Plugins/EasyReplication/
Redémarrer l'Éditeur
Redémarrez Unreal Engine. Le plugin sera automatiquement détecté et compilé. Assurez-vous qu'il est activé dans Edit > Plugins.
Ajouter le Composant Player
Ouvrez votre PlayerController Blueprint et ajoutez le composant Easy Replication Player.
Ce composant est obligatoire pour permettre aux clients d'envoyer des commandes au serveur.
Ajouter le Composant aux Actors
Sur chaque Actor que vous voulez synchroniser, ajoutez le composant Easy Replication.
Profils de Réplication
Choisissez un profil adapté à votre Actor. Le plugin configure automatiquement les paramètres de réplication optimaux.
Personnages contrôlés par les joueurs
Portes, coffres, leviers...
Balles, sorts, objets lancés
Objets décoratifs immobiles
Le profil se configure dans les détails du composant Easy Replication via la propriété Profile.
Variables Synchronisées
Synchronisez n'importe quelle valeur entre tous les joueurs avec une seule ligne de code. Utilisez les nœuds de la catégorie Easy Replication Helpers.
Types Supportés
Pour les états on/off
Pour les compteurs
Pour les valeurs précises
Pour les textes
Pour les positions
Pour les rotations
Complet
Identifiants rapides
Références réseau
Exemple : Système de Santé
// 1. Récupérer la santé actuelle
float CurrentHealth = Get Synced Float (Self, "Health");
// 2. Appliquer les dégâts
Set Synced Float (Self, "Health", CurrentHealth - Damage);
// La nouvelle valeur est automatiquement envoyée à tous les clients !
Arrays Synchronisés
Synchronisez des listes entières de données.
Inventaires, IDs
Waypoints, Path
Logs, Chat
Exemple : Inventaire
// Définir l'inventaire
TArray<int32> Items = { 101, 42, 99 };
Set Synced Int Array (Player, "Inventory", Items);
// Lire l'inventaire (sur n'importe quel client)
TArray<int32> MyItems = Get Synced Int Array (Player, "Inventory");
Références Actor
Synchronisez des pointeurs vers d'autres Actors (Cible, Véhicule, Item tenu...).
Référence réseau
// Le joueur verrouille une cible
Set Synced Actor (Self, "LockedTarget", EnemyActor);
// Sur les autres clients (ex: pour afficher un UI)
AActor* Target = Get Synced Actor (AllyPlayer, "LockedTarget");
Événements Répliqués (RPCs)
Déclenchez des actions à distance sans écrire de C++.
Exécuter sur TOUS les clients.
Exécuter sur le SERVEUR.
Exécuter sur un JOUEUR précis.
Exemple : Jouer un son partout
// 1. Créez un Custom Event "PlayFireSound" dans votre BP
// 2. Appelez-le via Easy Replication :
Call Replicated Event (
Target: WeaponActor,
EventName: "PlayFireSound"
);
Événements Ciblés
Envoyez des événements à des destinataires spécifiques pour plus de contrôle.
Exécute UNIQUEMENT sur le serveur. Idéal pour la logique critique.
Exécute sur le client propriétaire de l'Actor.
Exécute sur UN joueur précis via son PlayerController.
Exemple : Événements ciblés
// Calcul de dégâts sur le serveur uniquement (anti-triche)
Call Server Only Event (Target, "ApplyDamage");
Call Server Only Event (Float) (Target, "TakeDamage", 25.0);
// Feedback au joueur qui possède l'Actor
Call Owning Client Event (Target, "ShowHitMarker");
// Message privé à un joueur spécifique
Call Event On Player (String) (PlayerController, Target, "ShowMessage", "Hello!");
Types de Paramètres
Les événements répliqués supportent de nombreux types de paramètres.
Structs Génériques
Exemple : Données du Joueur
USTRUCT(BlueprintType)
struct FPlayerData
{
GENERATED_BODY()
UPROPERTY(BlueprintReadWrite)
float Health = 100.0f;
UPROPERTY(BlueprintReadWrite)
int32 Score = 0;
UPROPERTY(BlueprintReadWrite)
FString PlayerName;
};
Set Synced Struct (Player, "MyData", PlayerDataStruct);
Spawn & Destroy Répliqués
Créez ou détruisez des Actors visibles par tous les joueurs instantanément.
Spawn Replicated Actor
// Spawner un projectile visible par tous
AActor* Projectile = Spawn Replicated Actor (
ActorClass: BP_Projectile,
SpawnTransform: MuzzleTransform
);
// Détruire un Actor de manière synchronisée
Destroy Replicated Actor (ActorToDestroy);
L'Actor spawné sur le serveur est automatiquement répliqué vers tous les clients. Côté client, la fonction retourne nullptr mais l'Actor apparaîtra via la réplication.
Delegates de Changement
Réagissez aux changements de valeurs synchronisées avec des événements Blueprint.
Key, OldValue, NewValue
Key, OldValue, NewValue
Key, OldValue, NewValue
Key, OldValue, NewValue
Key, OldValue, NewValue
Key, OldValue, NewValue
Exemple : Mise Ă jour de l'UI
// Dans le Event Graph, liez l'événement du composant
On Synced Float Changed (Key, OldValue, NewValue)
{
if (Key == "Health") {
HealthBar.SetPercent(NewValue / MaxHealth);
// Effet visuel si dégâts
if (NewValue < OldValue) {
PlayDamageFlash();
}
}
}
Les delegates On Property Synced et On Replication Error sont également disponibles pour un suivi général.
Fonctions Utilitaires
Gérez vos variables synchronisées avec des fonctions pratiques.
Vérifie si une clé existe
Supprime une variable synchronisée
Liste toutes les clés d'un type
Exemple : Gestion des clés
// Vérifier si une variable existe avant de l'utiliser
if (Has Synced Float (Target, "Health")) {
float Health = Get Synced Float (Target, "Health");
}
// Supprimer une variable (nettoyage)
Remove Synced String (Target, "TempMessage");
// Lister toutes les clés Int pour debug
TArray<FName> Keys = Get All Synced Int Keys (Target);
Helpers Réseau
Retourne true si le jeu est en multijoueur
Retourne true si nous sommes le serveur
Retourne true si l'Actor nous appartient
Retourne "Solo", "Server", "Client"...
Bonnes Pratiques
Nommez vos clés de manière cohérente
Utilisez des noms descriptifs comme "Health", "PlayerName", "IsReady". Évitez les abréviations obscures.
Utilisez les bons types
Un booléen pour un état on/off, un int pour un compteur, un float pour une valeur continue. Évitez les strings pour les données numériques.
Choisissez le bon profil
Le profil Player pour les personnages, Interactive Object pour les objets interactifs, Projectile pour les éléments rapides.
Activez le Debug en développement
Cochez Show Debug Messages dans le composant pour voir les logs de réplication dans la console.