> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/docs.edgegap.com-fr/unreal-engine.md).

# Unreal Engine - Pour commencer

Apprenez en pratiquant et déployez votre premier serveur dédié sur Edgegap. À la fin de ce guide, vous aurez déployé un serveur dédié avec Edgegap sans frais.

Construire avec Docker Desktop est la méthode la plus rapide, la plus simple et la plus fiable pour démarrer.

{% embed url="<https://youtu.be/q7ljcr9rAWE>" %}

## ✔️ Préparation

<details>

<summary><a href="https://www.docker.com/products/docker-desktop/">Installez Docker Desktop et l’extension Docker Edgegap</a></summary>

* [Installez Docker Desktop depuis la source officielle](https://www.docker.com/products/docker-desktop/) (aucun compte requis).
* Redémarrez votre ordinateur après avoir terminé l’installation.
* Accédez à Paramètres ⚙️ > Extensions > Activer les extensions Docker.
* [Installez l’extension depuis la marketplace Docker officielle (cliquez sur ce lien).](https://www.docker.com/products/docker-desktop/)

</details>

<details>

<summary><a href="https://open.docker.com/extensions/marketplace?extensionId=edgegap/docker-extension">Installez l’extension Docker Edgegap Quickstart</a></summary>

* Installez depuis Docker Desktop / Extensions / Parcourir ou [en utilisant le lien](https://open.docker.com/extensions/marketplace?extensionId=edgegap/docker-extension).

<figure><img src="/files/386bc374f8d0bcfeb9f4c11c220cf0cdb0d2960c" alt=""><figcaption></figcaption></figure>

</details>

{% hint style="info" %}
**Confiant dans vos builds de serveur ?** Passez à [#customize-server-image](#customize-server-image "mention") et [Fonctionnalités avancées](/docs.edgegap.com-fr/learn/advanced-features.md).
{% endhint %}

## ⚙️ 1. Configurer le projet <a href="#id-1-configure-project" id="id-1-configure-project"></a>

{% hint style="info" %}
Cette méthode ne nécessite pas de télécharger le code source d’Unreal Engine, ni de le compiler à partir des sources !
{% endhint %}

☑️ Commencez par **vérifier votre version d’Unreal Engine** - prérempli avec la valeur de vos fichiers de projet.

☑️ **Saisissez le nom d’utilisateur GitHub et** [**PAT**](#user-content-fn-1)[^1] de [#preparation](#preparation "mention"), pour télécharger les dépendances depuis GitHub.

## 🔧 2. Compiler le serveur de jeu <a href="#id-2-build-game-server" id="id-2-build-game-server"></a>

Nous allons maintenant compiler et cuisiner votre projet, puis le regrouper dans une image Docker facilement réutilisable.

☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :

* **Nom de l’image** est un identifiant unique de votre choix, qui étiquette votre build de serveur avant son déploiement.
  * En général, cela inclura le nom de votre jeu — par exemple « my-game-server ».
* **Tag de l’image** est un identifiant pointant vers une version spécifique de votre image.
  * Le terme « artefact de build » est parfois utilisé pour désigner une version spécifique de votre image.
  * Les horodatages sont une excellente option pour les tags, par exemple `2024.01.30-16.23.00-UTC`  (par défaut).

☑️ **Compiler le projet** une fois que vous êtes satisfait de votre configuration. En terminant cette étape, une nouvelle image contenant l’exécutable de votre serveur de jeu Linux sera ajoutée dans votre client Docker local.

✅ Vous pouvez maintenant passer à l’étape suivante.

## 🧪 3. Tester le serveur localement <a href="#id-3-test-server-locally" id="id-3-test-server-locally"></a>

☑️ **Sélectionnez le tag de l’image que vous souhaitez exécuter localement** (les images distantes seront téléchargées). En option, davantage [arguments docker run](https://docs.docker.com/reference/cli/docker/image/build/#options) peuvent être fournis pour personnaliser votre test local :

* `-p 7777:7777/udp` - il s’agit du mappage de port [de votre conteneur local](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md#port-mapping),
* `-e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777`  est une [variable d’environnement](#environment-variables) qui simule un véritable déploiement Edgegap, indiquant à votre serveur de jeu le port interne sur lequel écouter les connexions des joueurs.

☑️ Une fois votre configuration prête, cliquez sur **Démarrer le serveur local**. En terminant cette étape, **un nouveau conteneur sera lancé** sur votre machine de développement.

☑️ Il est maintenant temps de connecter votre client de jeu de l’éditeur Unreal Engine (PIE) à votre conteneur de serveur local. Ouvrez la console Unreal PIE avec `~`  (tilde) et connectez-vous avec `open <ip>:<port>`:

* `ip`  = `localhost`  ou `127.0.0.1`  (équivalent dans la plupart des cas),
* `port`  = valeur de port externe aléatoire du conteneur dans l’interface Docker.

✅ Vous pouvez maintenant passer à l’étape suivante.

<details>

<summary>Dépannage et FAQ</summary>

Impossible de connecter les clients au serveur - `Délai de la requête dépassé.` , `请求超时` , `ConnectionFailed` , ou `Échec de la vérification du port`

* Vérifiez d’abord que le conteneur est démarré et qu’il n’y a aucune erreur d’exécution dans vos journaux.
* Veuillez vérifier que les valeurs de port dans la commande `docker run` correspondent.
* Veuillez vous assurer que votre client de jeu se connecte au **port externe** affiché sur la page des détails de votre conteneur ; cette valeur sera toujours aléatoire pour des raisons de sécurité.
* Assurez-vous d’avoir renommé votre fichier cible et configuré les builds de jeu comme décrit à l’étape [#id-1-configure-project](#id-1-configure-project "mention").

***

Mon conteneur est démarré, mais je ne parviens pas à m’y connecter pendant plusieurs minutes ensuite.

* Une fois qu’un conteneur est démarré, l’initialisation de votre moteur de jeu commence. Ce processus peut durer de quelques secondes à quelques minutes, et le serveur n’accepte pas les connexions des joueurs pendant cette période.
* Envisagez d’optimiser l’initialisation de votre serveur pour réduire cette période.
* Les clients de jeu doivent retenter la connexion à intervalles d’1 seconde pendant une durée limitée (selon la durée de votre initialisation), puis revenir au matchmaking.
* Envisagez d’ajouter une scène de chargement afin que le serveur puisse effectuer l’initialisation (et le déplacement dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux.

***

`Avertissement : impossible de créer le socket pour l’adresse de liaison`

* Veuillez installer le plugin Steam Subsystem d’Epic via la boutique d’assets Fab.
* Lors de l’utilisation d’Edgegap Integration Kit (EGIK) avec la version source de SteamCore téléchargée depuis GitHub, le plugin Steam Subsystem d’Epic n’est pas inclus en raison des politiques de distribution des plugins d’Epic Games.

***

Je me suis connecté, mais mon écran est complètement noir.

* Vérifiez que vous avez le bon **Carte par défaut du jeu** défini sous **Édition / Paramètres du projet / Cartes et modes**.

</details>

## ☁️ 4. Publier sur Edgegap <a href="#id-4-publish-to-edgegap" id="id-4-publish-to-edgegap"></a>

☑️ **Choisissez un nom d’application** pour étiqueter et regrouper des images similaires sur Edgegap.

☑️ **Sélectionnez le tag de l’image que vous souhaitez publier** et **Téléverser l’image**. En terminant cette étape, vous téléverserez l’image de votre serveur vers le registre Edgeap et une nouvelle [version de l’application sera créée](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md) dans votre navigateur web. **Assurez-vous de créer votre** [**de votre conteneur local**](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md#port-mapping) **lorsque cela vous est demandé,** avec les valeurs par défau&#x74;**.**

{% hint style="success" %}
Vous avez trouvé un bug et devez reconstruire/publier à nouveau ? Utilisez **Reconstruire depuis la source** pour [#id-2.-build-game-server](#id-2.-build-game-server "mention") et [#id-4.-publish-to-edgegap](#id-4.-publish-to-edgegap "mention") **avec les valeurs d’entrée actuelles de l’extension rapidement.**
{% endhint %}

✅ Vous pouvez maintenant passer à l’étape suivante.

## 🚀 5. Déployer sur le cloud <a href="#id-5-deploy-to-cloud" id="id-5-deploy-to-cloud"></a>

☑️ Nous allons maintenant effectuer le test final et **connecter votre éditeur Unreal Engine à votre déploiement cloud**. Récupérez votre **hôte du déploiement** à la place de l’IP du serveur et du **port externe**, ouvrez la console Unreal dans le client de jeu (tilde `~`) et saisissez `open {host}:{port}` .

<details>

<summary>Dépannage et FAQ</summary>

Impossible de connecter les clients au serveur - `Délai de la requête dépassé.` , `请求超时` , `ConnectionFailed` , ou `Échec de la vérification du port`

* Vérifiez d’abord que le déploiement est prêt et qu’il n’y a aucune exception ni erreur d’exécution dans le journal de votre déploiement. Si votre déploiement s’est arrêté, consultez les journaux dans notre [tableau de bord](https://app.edgegap.com/deployment-management/deployments/list).
* Veuillez vérifier que le paramètre de port dans les réglages netcode de votre build de serveur correspond au port interne dans votre [version de l’application](https://app.edgegap.com/application-management/applications/list). Pour les builds avec plugin, le port est défini automatiquement pour vous. Vous pouvez modifier le mappage de port en modifiant le [version de l’application](https://app.edgegap.com/application-management/applications/list) sans reconstruire. Trouvez votre protocole dans votre intégration netcode.
* Veuillez vous assurer que votre client de jeu se connecte au **port externe** affiché sur la page des détails de votre déploiement ; cette valeur sera toujours aléatoire pour des raisons de sécurité.
* Assurez-vous d’avoir renommé votre fichier cible et configuré les builds de jeu comme décrit à l’étape [#id-1.-configure-project](#id-1.-configure-project "mention").
* Êtes-vous situé en Chine et utilisez-vous [Smart Fleets](https://docs.edgegap.com/docs/deployment/session/fleet-manager/fleet)? Votre connexion peut être bloquée par le Grand Firewall. Envisagez d’ajouter un serveur situé en Chine à votre flotte, ou d’utiliser un VPN pour vous connecter.

***

Mon déploiement est prêt, mais je ne parviens pas à m’y connecter pendant plusieurs minutes ensuite.

* Une fois qu’un déploiement est prêt, l’initialisation de votre moteur de jeu commence. Ce processus peut durer de quelques secondes à quelques minutes, et le serveur n’accepte pas les connexions des joueurs pendant cette période.
* Envisagez d’optimiser l’initialisation de votre serveur pour réduire cette période.
* Les clients de jeu doivent retenter la connexion à intervalles d’1 seconde pendant une durée limitée (selon la durée de votre initialisation), puis revenir au matchmaking.
* Envisagez d’ajouter une scène de chargement afin que le serveur puisse effectuer l’initialisation (et le déplacement dans le cas d’Unreal Engine) en même temps que les clients, tout en synchronisant l’état des deux.

***

`Avertissement : impossible de créer le socket pour l’adresse de liaison`

* Veuillez installer le plugin Steam Subsystem d’Epic via la boutique d’assets Fab.
* Lors de l’utilisation d’Edgegap Integration Kit (EGIK) avec la version source de SteamCore Integration Kit (SIK) téléchargée depuis GitHub, le plugin Steam Subsystem d’Epic n’est pas inclus en raison des politiques de distribution des plugins d’Epic Games.

***

Je me suis connecté, mais mon écran est complètement noir.

* Vérifiez que vous avez le bon **Carte par défaut du jeu** défini sous **Édition / Paramètres du projet / Cartes et modes**.
* Vérifiez que le [la vérification de compatibilité de la version d’Unreal Engine a été désactivée](#id-2.-configure-game-server-builds) dans `DefaultEngine.ini`.

***

Mon déploiement s’est arrêté/redémarré et je n’ai plus accès à ses journaux.

* Dans le cas où le processus du serveur plante à cause d’une exception, notre système tentera de redémarrer automatiquement le serveur. Envisagez de tester votre serveur localement pour identifier la cause racine.
* Nous conservons les journaux uniquement pendant la durée du déploiement ; si vous souhaitez les consulter après l’arrêt du déploiement, veuillez [intégrer un stockage de journaux tiers](https://docs.edgegap.com/docs/deployment/endpoint-storage).
* Voir [/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped](https://docs.edgegap.com/docs.edgegap.com-fr/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped "mention") pour découvrir toutes les causes d’arrêt de votre déploiement.

***

Mon déploiement s’est arrêté automatiquement après X minutes.

* Les déploiements du niveau gratuit ont une limite de 60 minutes, veuillez envisager de mettre à niveau votre compte.
* Tous les déploiements seront arrêtés après 24 heures d’exécution, conformément à notre politique de nettoyage des serveurs, pour la maintenance de l’infrastructure, et afin d’éviter d’engendrer des coûts inattendus lorsqu’un déploiement n’a pas été arrêté correctement. Pour les serveurs de longue durée, envisagez d’utiliser [Flottes privées](/docs.edgegap.com-fr/learn/orchestration/flottes-privees.md) avec [Persistance](/docs.edgegap.com-fr/learn/orchestration/persistance.md).
* Voir [/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped](https://docs.edgegap.com/docs.edgegap.com-fr/pages/5d7a2f9e0583a99d78071f1c4b8a7892a518534a#id-5.-deployment-stopped "mention") pour découvrir toutes les causes d’arrêt de votre déploiement.

***

Que se passera-t-il si un joueur quitte mon déploiement ?

* Par défaut, les serveurs ne rejettent pas les connexions des joueurs. L’authentification des joueurs dépend de vos développeurs, car de nombreuses méthodes et fournisseurs d’authentification différents peuvent être utilisés.
* Les clients de jeu peuvent stocker localement les informations de connexion afin de tenter une reconnexion en cas de plantage inattendu du client.
* Pour permettre aux joueurs de rejoindre des parties en cours, envisagez d’utiliser [Vue approfondie](/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md#backfill) ou [Sessions](https://docs.edgegap.com/docs/deployment/session).

***

Mon serveur affiche une utilisation CPU de 100 % après être devenu prêt.

* Ce n’est peut-être pas un problème, car les moteurs de jeu ont tendance à effectuer des opérations gourmandes en CPU lors de l’initialisation du serveur. Si l’utilisation du CPU ne redescend pas après 2 à 3 minutes suivant le démarrage du déploiement, vous devrez peut-être optimiser votre serveur ou augmenter les ressources de la version de l’application.
* Réduire la fréquence des ticks peut aider à maîtriser l’utilisation du CPU en traitant moins de messages.
* Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le niveau gratuit.
* Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version de l’application. Vous pouvez dupliquer votre version de l’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.

***

Mon déploiement redémarre en boucle et affiche l’erreur `OOM kill`

* Cela est dû au dépassement de la quantité de mémoire allouée. Envisagez d’optimiser l’utilisation de la mémoire avec du pooling d’objets, de la compression ou en supprimant les objets inutiles dans votre scène.
* Vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM) dans le niveau gratuit.
* Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version de l’application. Vous pouvez dupliquer votre version de l’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.

***

Parfois, l’utilisation de la mémoire (RAM) de mon serveur grimpe à une valeur élevée ; est-ce un problème ?

* Tant que vous restez dans la quantité de mémoire allouée à la version de l’application, ce n’est pas un problème.
* Dépasser la quantité de mémoire allouée à la version de l’application provoquera `OOM kill` (voir ci-dessus).

***

Les performances de mon serveur seront-elles affectées par d’autres serveurs exécutés sur la même machine ?

* Non, notre plateforme garantit que les ressources allouées ne seront pas utilisées par d’autres studios ni par d’autres serveurs sur une infrastructure partagée. Avec Edgegap, il n’y a pas de voisins bruyants.

</details>

## 👉 Étapes suivantes

### Arrêter les déploiements

Une fois que la partie se termine (ou que les joueurs partent), votre déploiement peut être arrêté pour réduire les coûts. [Laisser des instances vides ou seulement partiellement remplies peut augmenter inutilement vos coûts !](https://edgegap.com/blog/how-session-fill-rate-affects-your-multiplayer-hosting-costs)

Si vous avez suivi ce guide et construit avec notre extension Docker, vous pouvez simplement appeler la méthode `FGenericPlatformMisc::RequestExit` . Nous avons ajouté un script gérant le processus de votre serveur dans l’image empaquetée, qui effectuera automatiquement un arrêt gracieux du déploiement.

Pour personnaliser la gestion du cycle de vie du serveur, modifiez notre [exemple `script StartServer.sh`](https://github.com/edgegap/edgegap-unreal-buildutils/blob/main/StartServer.sh)  .

{% hint style="info" %}
Vous préférez gérer le cycle de vie depuis Unreal ? Voir [Outils pour développeurs](/docs.edgegap.com-fr/unreal-engine/developer-tools.md#integration-kit) pour le blueprint de l’API d’arrêt automatique.
{% endhint %}

### Variables injectées

Lisez des informations utiles comme l’ID du déploiement, l’adresse IP du serveur, l’emplacement du serveur, et plus encore, en accédant aux variables d’environnement injectées. Chaque déploiement inclut automatiquement :

* [Variables de déploiement](/docs.edgegap.com-fr/learn/orchestration/deployments.md#injected-environment-variables) - fournies automatiquement par Edgegap,
* [Variables de matchmaking](/docs.edgegap.com-fr/learn/matchmaking/matchmaker-in-depth.md#injected-environment-variables) - fournies automatiquement par Edgegap lors de l’utilisation de [Matchmaking](/docs.edgegap.com-fr/learn/matchmaking.md),
* [Variables de version de l’application](/docs.edgegap.com-fr/learn/orchestration/application-and-versions.md#injected-variables) - paires clé-valeur personnalisées configurables par vous.

{% hint style="success" %}
Importez notre [Outils pour développeurs](/docs.edgegap.com-fr/unreal-engine/developer-tools.md#integration-kit) pour **lisez facilement des variables typées à l’aide des Blueprints**.
{% endhint %}

### Profilage des serveurs

Pour comprendre et optimiser les problèmes de performance des serveurs sur Edgegap, explorez [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#container-logs), [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#container-metrics), et plus encore [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#dashboard-monitoring) outils à votre disposition.

Vous pouvez également utiliser les outils de profilage Unreal Engine existants avec Edgegap :

* [Configurez le tracing dans votre serveur Unreal Engine](https://dev.epicgames.com/documentation/en-us/unreal-engine/developer-guide-to-tracing-in-unreal-engine) (événements intégrés et personnalisés) :
  * enregistrez la trace sur le disque du serveur avec `-tracefile`, téléversez-la vers un stockage tiers et analysez-la hors ligne,
  * ou diffusez les données de trace avec [Déploiements](/docs.edgegap.com-fr/learn/orchestration/deployments.md#port-mapping) pour le port interne `1981` via le protocole UDP.
* Analyser [Aperçus mémoire](https://dev.epicgames.com/documentation/en-us/unreal-engine/memory-insights-in-unreal-engine) et [Aperçus réseau](https://dev.epicgames.com/documentation/en-us/unreal-engine/networking-insights-in-unreal-engine) et [#optimize-server-builds](#optimize-server-builds "mention").

### Automatisation des sessions

### Optimiser les builds

**Configurez le fractionnement des ressources pour isoler les ressources réservées au client des ressources du serveur.**

* Explorez [les techniques et recommandations de fractionnement des ressources](https://dev.epicgames.com/documentation/en-us/unreal-engine/preparing-assets-for-chunking-in-unreal-engine) d’Epic.

**Excluez les ressources et plugins qui sont réservés au client et non requis pour l’exécution du serveur.**

* En savoir plus sur [l’exclusion des ressources et plugins au moment du build](https://dev.epicgames.com/community/learning/tutorials/Kp1k/unreal-engine-build-time-asset-and-plugin-exclusion).

**Passez en revue votre stratégie de cuisson du contenu.**

* Envisagez [la cuisson à la volée (COTF)](https://dev.epicgames.com/documentation/en-us/unreal-engine/build-operations-cooking-packaging-deploying-and-running-projects-in-unreal-engine#cookonthefly) pour retarder la cuisson des ressources client et accélérer les builds du serveur.

**Mettez en œuvre le streaming de niveaux pour réduire la charge mémoire à l’exécution.**

* Si votre conception garde les joueurs principalement ensemble dans la même zone de carte, [le streaming de niveaux peut réduire de plus de 60 % l’utilisation mémoire de votre serveur](https://dev.epicgames.com/documentation/en-us/unreal-engine/level-streaming-in-unreal-engine) et améliorer les performances du client !

**N’incluez que ce qui est absolument nécessaire au fonctionnement de votre serveur.**

* Copier des fichiers inutilisés dans vos images entraîne une inflation de l’image, des téléversements plus longs, des vitesses de cache plus lentes et un démarrage global du serveur plus lent. [Consultez les सुझाव d’optimisation des images Docker](https://docs.docker.com/build-cloud/optimization/#dockerignore-files).

<details>

<summary>Exemple <code>fichier .dockerignore</code> pour supprimer les fichiers supplémentaires.</summary>

```docker
# Fichiers objets compilés
*.slo
*.lo
*.o
*.obj

# En-têtes précompilés
*.gch
*.pch

# Bibliothèques dynamiques compilées
*.so
*.dylib
*.dll

# Fichiers de modules Fortran
*.mod

# Bibliothèques statiques compilées
*.lai
*.la
*.a
*.lib

# Exécutables
*.exe
*.out
*.app
*.ipa

# Ces fichiers de projet peuvent être générés par le moteur
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb

# Ressources précompilées
**/SourceArt/**/*.png
**/SourceArt/**/*.tga

# Builds
**/Build/*

# Mettre en liste blanche les fichiers PakBlacklist-<BuildConfiguration>.txt
!**/Build/*/
**/Build/*/**
!**/Build/*/PakBlacklist*.txt

# Ne pas ignorer les fichiers d’icône dans Build
!**/Build/**/*.ico

# Fichiers de configuration générés par l’éditeur
**/Saved/*
**/Intermediate/*
**/DerivedDataCache/*
**/Binaries/*
**/Build/*
**/Releases/*
**/Packaged/*
```

</details>

**Envisagez d’utiliser** [**les builds Docker multi-étapes (lien)**](https://docs.docker.com/build/building/multi-stage/)**.**

* Séparez les grandes dépendances du serveur dans une image distincte pour les réutiliser dans des builds multi-étapes. Docker mettra en cache chaque couche et réutilisera simplement la version précédente, en ignorant le téléversement de cette partie sauf instruction contraire explicite, ce qui vous fera économiser de la bande passante et du temps d’attente jusqu’à la fin du téléversement.
* Si vous ne savez pas pourquoi l’une de vos commandes Dockerfile provoque une erreur, essayez de déboguer localement. Créez une nouvelle étape juste avant que le problème ne se produise (ajoutez une deuxième `FROM` commande), utilisez `--target` pour indiquer au processus de build de s’arrêter à l’étape problématique, puis `docker exec -it {container} /bin/bash` pour entrer dans le terminal interactif à l’intérieur de votre conteneur. Ensuite, vous pouvez utiliser des commandes shell dans votre image de base pour approfondir l’investigation (par ex. `top` sur Ubuntu).

### Personnaliser l’image

Nous prenons également en charge l’ajout de votre propre Dockerfile pour les utilisateurs qui ont besoin de plus de contrôle sur leurs images en raison de l’optimisation de la taille du build, de dépendances superflues ou d’un processus de démarrage plus complexe. Nous allons maintenant partager quelques conseils « faites-le vous-même » et bonnes pratiques.

[^1]: jeton d’accès personnel


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.edgegap.com/docs.edgegap.com-fr/unreal-engine.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
