Unity - Premiers pas
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.
✔️ Préparation
Avant de commencer, assurez-vous de créer un compte gratuit avec Edgegap (aucune carte de crédit requise). Vous pouvez inviter les membres de votre équipe ensuite, même s’ils n’ont pas encore de compte Edgegap.
Configurez quelques éléments essentiels sur votre machine de développement :
⚙️ 1. Connecter le compte
☑️ Connectez-vous et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity liée au plugin d’Edgegap.
✅ Vous pouvez maintenant passer à l’étape suivante.
🔧 2. Construire le serveur de jeu
Que vous utilisiez une machine Windows, Mac ou Linux, vous devrez compiler votre serveur pour l’environnement d’exécution Linux, car la plupart des fournisseurs cloud de nos jours (y compris Edgegap) fonctionnent sous Linux. Ne vous inquiétez pas, aucune connaissance de Linux n’est requise pour réaliser cela avec notre plugin.
☑️ Vérifiez que vous avez installé les outils de build Linux Unity requis.
☑️ Modifiez les paramètres de build pour vous assurer que toutes les scènes de jeu requises sont incluses.
☑️ Facultatif : ajoutez le script spécifique au netcode pour la vérification des ports et l’amorçage de l’environnement à votre scène serveur initiale depuis le menu Edgegap Server Hosting (clic droit / ➕ dans votre fenêtre Hiérarchie).

Les builds de serveur doivent utiliser l’adresse 0.0.0.0 et le port 7777 dans votre transport netcode. Si vous personnalisez votre port, veuillez spécifier le même dans votre Applications et versions une fois que vous Unity.
☑️ Une fois satisfait de votre configuration, cliquez sur Construire le serveur, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera l’apparition d’un nouveau dossier à la racine de votre projet - Builds/EdgegapServer/ServerBuild .
✅ Vous pouvez maintenant passer à l’étape suivante.
🐋 3. Conteneuriser le serveur
Travailler en équipe de développeurs signifie partager votre code. Quand les choses tournent mal, la dernière chose que vous voulez entendre est « ça marche sur ma machine ». Les serveurs de jeu doivent fonctionner de manière fiable sur n'importe quelle machine, car les serveurs d'un jeu à succès tourneront sur des milliers de machines serveur à travers le monde.
Pour aider à rendre votre serveur fiable, nous utilisons Docker - un logiciel de virtualisation garantissant que toutes les dépendances de votre code serveur jusqu'au niveau du système d'exploitation seront toujours exactement les mêmes, peu importe comment ou où le serveur est lancé.
☑️ Commencez en cliquant sur le bouton Valider pour vous assurer que vous avez bien terminé ✔️ Préparation.
☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :
Le chemin de build est le chemin relatif vers l’artefact de build de votre serveur, conservons la valeur par défaut pour le moment.
Conservez les builds dans le dossier de votre projet, Docker n’accepte que des chemins de build relatifs à la racine du projet.
Nom de l’image est un identifiant unique de votre choix, qui étiquette votre build de serveur avant la mise en production.
En général, cela inclura le nom de votre jeu — par exemple « my-game-server ».
Balise 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 par défaut pour les balises, par ex.
2024.01.30-16.23.00-UTC.
Chemin vers le Dockerfile peut être utilisé pour personnaliser la recette de vos images.
Nous recommandons de conserver le paramètre par défaut pour le moment, vous pourrez en savoir plus plus tard dans la section Unity.
Paramètres de build Docker facultatifs peuvent être utilisés pour préciser davantage certaines subtilités à Docker.
Nous recommandons de conserver le paramètre par défaut pour le moment, vous pouvez en savoir plus plus tard dans la documentation Docker.
☑️ Une fois satisfait de votre configuration, cliquez sur Conteneuriser avec Docker, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera un nouvelle image apparaissant sur votre machine locale. Vous pouvez vérifier cela soit dans Docker Desktop, dans l’onglet Images sous Local (par défaut), soit dans la CLI Docker en exécutant docker images .
✅ Vous pouvez maintenant passer à l’étape suivante.
🧪 4. Tester le serveur localement
Essayons de déployer localement (sur votre machine) et de connecter un client de jeu, pour nous assurer que l'image du serveur fonctionne correctement avant de l'uploader et de la déployer (ce qui peut prendre un certain temps).
☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :
Balise de l’image du serveur de l’étape précédente.
Par défaut, il s’agit de la dernière balise que vous avez construite avec le plugin.
Paramètres docker run facultatifs peuvent être fournis pour exposer plusieurs ports, ou pour exécuter votre image sur des machines macOS.
Vous pouvez publier plusieurs ports pour votre conteneur si nécessaire, il suffit d’ajouter le paramètre
-p {port interne}/{protocole}pour chacun, par exemple-p 8080/tcp -p 7777/udppour publier et associer votre port serveur8080à un port externe aléatoire pour la connexion TCP et le port serveur7777à un port externe aléatoire pour la connexion UDP en même temps. Trouvez la configuration du port serveur dans votre Transport ou dans les paramètres spécifiques au netcode.Si vous utilisez une machine avec architecture ARM (macOS M1, M2, M3, etc.), vous devriez voir ce paramètre facultatif inclus dans vos paramètres de build Docker facultatifs :
--platform=linux/amd64.
☑️ Une fois satisfait de votre configuration, cliquez sur Déployer le conteneur local, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity. L’exécution de cette étape entraînera le démarrage d’un nouveau conteneur sur votre machine de développement.
☑️ Il est maintenant temps de connecter votre client de jeu Unity Editor à votre conteneur Docker local pour vérifier que votre image de serveur fonctionne correctement. Trouvez les paramètres client de votre netcode et saisissez :
localhostou0.0.0.0(équivalent dans la plupart des cas) à la place de l’IP du serveur,valeur du port externe aléatoire trouvée dans Docker Desktop / Containers / edgegap-server-test.

☑️ Une fois que vous avez vérifié que vous pouvez vous connecter à votre conteneur de serveur local et jouer sans problème, vous pouvez supprimer le conteneur 🗑️ pour libérer des ressources sur votre machine pour d’autres programmes.
✅ Vous pouvez maintenant passer à l’étape suivante.
☁️ 5. Téléverser vers Edgegap
Il est temps de mettre votre serveur en ligne ! Maintenant que votre image peut héberger des joueurs avec succès, nous pouvons la téléverser sur Edgegap et commencer à l’exécuter n’importe où dans le monde. Dans ce guide, nous utiliserons le registre de conteneurs d’Edgegap (stockage pour les images).
☑️ Vous pouvez configurer les options suivantes (ou conserver les valeurs par défaut) :
Nom de l’application sur Edgegap peut correspondre au nom de votre image ou être personnalisé.
Nous avons choisi de copier le nom de votre image pour le moment.
Image du serveur de l’étape Unity.
Trouvez n’importe quel nom et tag d’image stockés sur votre machine dans Docker Desktop / Images.
☑️ Une fois satisfait de votre configuration, cliquez sur Téléverser l’image et créer la version de l’application, attendez la fin du processus et vérifiez qu’il n’y a aucune nouvelle erreur dans votre console Unity.
☑️ Vous serez redirigé vers notre Tableau de bord, où vous pourrez configurer des paramètres facultatifs. L’exécution de cette étape entraînera la création d’une nouvelle version de l’application, et le balisage et le téléversement de l’artefact de build vers le registre de conteneurs d’Edgegap.
Version de l’application sur Edgegap peut correspondre à votre balise ou être personnalisé.
Les horodatages sont une excellente option pour les noms de version d’application, par ex.
2024.01.30-16.50.20-UTC.Plusieurs versions d’application peuvent pointer vers la même balise d’image, comme
v1.1.0etdev.En savoir plus sur Applications et versions plus tard.
☑️ Vous serez maintenant invité à définir un port pour votre nouvelle version de l’application. Assurez-vous de définir la même valeur de port serveur que dans l’étape Unity depuis vos paramètres de Transport ou spécifiques au netcode.
✅ Vous pouvez maintenant passer à l’étape suivante.
🚀 6. Déployer sur le cloud
Ceci est l'étape finale de ce guide, après laquelle vous disposerez d'un serveur déployé sur le cloud Edgegap, auquel des joueurs du monde entier pourront se connecter.
☑️ Choisissez une application et une version de l'étape précédente à déployer.
☑️ Une fois prêt, cliquez sur Déployer sur le Cloud, attendez d'atteindre Déploiements. L'achèvement de cette étape entraînera le démarrage d'un nouveau déploiement sur votre compte Edgegap.
☑️ Vérifiez qu'il n'y a pas de nouvelles erreurs dans la sortie de la console. Assurez-vous également que vos Déploiements n'affichent aucune erreur et que vos Déploiements n'indiquent pas une utilisation des ressources à 100 % (vCPU ou mémoire), sinon de nouvelles connexions de joueurs peuvent être rejetées, ou votre serveur bloqué dans une boucle de redémarrage. Consultez les étapes de dépannage ci-dessous pour résoudre tout problème.
☑️ Nous allons maintenant effectuer le test final et connecter votre client de jeu Unity Editor à votre déploiement cloud. Saisissez les détails de connexion du client de jeu à partir du déploiement :
Hôte URL pointant vers l’IP du serveur, généralement dans le composant
NetworkManager.Port externe mappé vers le port d’écoute interne du serveur, généralement dans le composant Transport.

Désactiver le VPN lors des tests pour des conditions plus réalistes et recevoir un déploiement à faible latence.
☑️ Une fois que vous avez vérifié que vous pouvez vous connecter à votre déploiement sans problème et que vous avez fini les tests, Arrêtez votre déploiement pour libérer de la capacité dans votre compte pour la prochaine build.
En cas de problème, inspectez les journaux du tableau de bord de votre déploiement.
Si vous ne parvenez pas à identifier le problème, nous traînons dans notre Discord Communautaire et heureux de vous aider.
🙌 Félicitations pour votre premier déploiement sur Edgegap ! Si vous souhaitez en savoir plus, continuez à lire.
👉 Prochaines étapes
Une fois que vous disposez d'une configuration client/serveur fonctionnelle, assurez-vous de sauvegarder une copie de votre projet (en utilisant un logiciel de contrôle de version comme git) afin de toujours pouvoir retracer vos étapes en cas de problème.
Continuez à lire pour en savoir plus sur les sujets liés au cycle de vie des serveurs et à leur découvrabilité.
Arrêter les déploiements
Une fois le match terminé (ou lorsque les joueurs quittent), votre déploiement peut être arrêté afin d’économiser des coûts. Faire tourner des déploiements vides ou seulement partiellement remplis peut augmenter inutilement vos coûts !
Importez notre DeploymentAgent exemple depuis le SDK Unity pour arrêter les serveurs facilement et de manière fiable.
Connectez votre Stockage des points de terminaison pour enregistrer les journaux de déploiement, sinon ils seront supprimés !
Variables injectées
Lisez des informations utiles comme l’ID de 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 - fournies automatiquement par Edgegap,
Variables de matchmaking - fournies automatiquement par Edgegap lors de l’utilisation de Appariement,
Variables de version de l’application - paires clé-valeur personnalisées configurables par vous.
Importez notre DeploymentAgent exemple depuis le SDK Unity pour lisez facilement des variables fortement typées.
Automatisation de session
Lancer vos déploiements manuellement, en collant l’URL et les ports, ne suffira pas pour un jeu en direct.
Automatisez les flux de jeu populaires pour gérer les sessions et la mise à l’échelle à la demande avec l’une ou l’autre des options suivantes :
Manches plus courtes
Parties à la demande
Classement par niveau et/ou Règles personnalisées
Persistant ou en manches
Hubs régionaux sociaux
Affectation automatique et/ou Recherche personnalisée
Backend personnalisé :
Migrer des parties en cours
Optimiser les builds
Ne reconstruisez que les assets qui ont changé depuis le dernier build.
Envisagez d’utiliser les builds incrémentiels de Unity pour accélérer votre temps de build.
Envisagez d’utiliser les builds incrémentiels de Unity pour accélérer votre temps de build.
N’incluez que ce qui est absolument nécessaire au fonctionnement de votre serveur.
Copier des fichiers inutilisés dans vos images entraîne un gonflement 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.
Désactivez le batching statique des maillages pour réduire la taille de l’image.
Compressez les maillages pour réduire la taille de l’image.
La compression des sommets n’a pas d’impact sur la taille de l’image.
Implémentez un chargement différé conditionnel des ressources.
Excluez les ressources réservées au client en désactivant la lecture/écriture CPU pour les textures et les maillages.
Envisagez d’utiliser Unity Addressables pour vos builds client afin d’accélérer les builds et les déploiements en chargeant les ressources juste à temps, ou en omettant le chargement de certaines ressources dans les builds serveur en vérifiant la présence de Variables injectées.
Envisagez d’utiliser builds Docker multi-étapes (lien).
Séparez les grandes dépendances serveur dans une image distincte à 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échargement de cette partie sauf instruction explicite, ce qui vous fera économiser de la bande passante et du temps d’attente pendant la fin de l’envoi.
Si vous ne savez pas pourquoi l’une de vos commandes Dockerfile génère une erreur, essayez de déboguer en local. Créez une nouvelle étape juste avant que le problème ne se produise (ajoutez un second
FROMcommande), utilisez--targetpour indiquer au processus de build de s’arrêter à l’étape problématique, puisdocker exec -it {container} /bin/bashpour entrer dans un terminal interactif à l’intérieur de votre conteneur. Ensuite, vous pouvez utiliser des commandes shell dans votre image de base pour approfondir vos investigations (p. ex.topsur 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 de build, de dépendances superflues ou d’un processus de démarrage plus complexe. Vous pouvez éventuellement fournir un chemin vers votre Dockerfile personnalisé à l’étape Unity. Nous allons maintenant partager quelques conseils « à faire soi-même » et bonnes pratiques.
Assurez-vous toujours de travailler avec une version de serveur fonctionnelle.
Avant de supposer qu’un problème est lié au Dockerfile personnalisé, assurez-vous que votre build de serveur peut être démarré, et que le processus de build dans votre moteur de jeu n’a déclenché aucune exception ni erreur.
Testez toujours en local avant de téléverser.
Tester votre image localement vous fera gagner beaucoup de temps pendant que vous attendez la fin du téléversement. C’est aussi entièrement gratuit ✨ car cela ne nécessite aucune ressource Edgegap.
Lors des tests en local, assurez-vous de définir correctement votre port interne :
Assurez-vous de maîtriser les bases. Chaque Dockerfile a besoin de quelques commandes essentielles :
FROM {image}est votre image de base ; nous utilisons généralement un Linux pris en charge à long terme, mais toute image de base basée sur Linux fera l’affaire. Il s’agit généralement d’images publiques stockées sur Docker Hub. Référence Dockerfile ici. Référence Dockerfile ici.COPY {source} {destination}pour copier votre build de serveur Linux depuis votre machine hôte dans l’image, afin de pouvoir le démarrer plus tard. Référence Dockerfile ici.USER {user}doit suivre un commande useradd (Ubuntu) ou équivalent ; il vaut mieux ne pas tout exécuter en tant querootpour plus de sécurité. Référence Dockerfile ici.CMD {command}sera la dernière ligne, appelant très probablement unStartServer.shou un script de démarrage de quelque sorte afin de vous assurer que votre serveur s’initialise correctement une fois que tout est configuré. Référence Dockerfile ici.N’utilisez PAS
VOLUME- vous ne pourrez pas monter de stockage local de cette façon sur Edgegap ; envisagez plutôt notre fonctionnalité de stockage de point de terminaison et utilisez un bucket S3, voir Stockage de point de terminaison,EXPOSE 7777/UDPn’est pas requis ! Cela ne rendra pas réellement le port interne du serveur disponible depuis l’extérieur du conteneur ; ce n’est qu’une indication pour le développeur et le port doit êtrepublié lors des tests en local avec
docker run <image> -p 7777/udp,ou mappé dans le mappage de ports Edgegap.
Retardez la déclaration des paramètres jusqu’au dernier moment possible. La configurabilité > la composabilité en raison des longs temps de build du serveur. Appliquez cette approche aux commandes du Dockerfile afin de construire et téléverser plus rapidement.
Scénario : vous devez définir des paramètres comme le stade de déploiement, la version, le mode de jeu, la carte, le nombre de joueurs par serveur, la fréquence de sauvegarde, ou similaires.
Mauvaise solution : créer une image séparée pour chaque combinaison de vos paramètres. Vous passerez tout votre temps à reconstruire les images pour très peu d’avantages avec cette approche.
Meilleure solution - remplacez les paramètres de configuration juste à temps :
paramètres de déploiement - fournis juste avant le déploiement - sélecteurs de matchmaking transmis sous forme de variables d’environnement, ou votre système personnalisé de gestion de session transmettant des variables d’environnement au moment du déploiement,
paramètres de version - partagés pour tous les déploiements d’une version d’application - stade de déploiement, tag de l’artefact, secrets et points de terminaison tiers, et similaires ; puis
une seule image - contient et charge toutes les options de configuration au lancement.
N’exécutez PAS de bases de données sur les déploiements Edgegap.
Les déploiements Edgegap ne sont pas destinés à des processus de longue durée et peuvent être arrêtés après une longue période d’exécution sans préavis. Une base de données (même distribuée) fonctionnant de cette manière peut être arrêtée et entraîner une perte irréversible de données. Si vous avez besoin d’une base de données, veuillez envisager un DBaaS tiers.
Envisagez d’utiliser nos Clusters gérés pour héberger des bases de données et des services de longue durée.
Mis à jour
Ce contenu vous a-t-il été utile ?



