boltDéploiements

En savoir plus sur les déploiements et leur cycle de vie - concepts et bonnes pratiques pour une compréhension approfondie.

🗺️ Orchestration

Démarrez de nouveaux serveurs en quelques secondes pour répondre aux besoins en capacité grâce à notre approche cloud native d’edge computing. Nous considérons les serveurs comme du bétail plutôt que comme des animaux de compagniearrow-up-right - en remplaçant entièrement les instances défaillantes au lieu de s’occuper manuellement de chacune d’elles.

circle-info

Votre choix d’orchestration va avoir un impact sur votre coût DevOps, le coût des serveurs et la scalabilité.

circle-check

Pour bien comprendre tous les avantages et inconvénients, comparons différentes méthodes d’orchestration.

Match-Bound

La référence pour les studios modernes offrant l’intégration la plus simple avec le meilleur rapport coût-efficacité.

👍 Avantages

  • Meilleur rapport coût-efficacité - mise à l’échelle en temps réel pour répondre à la demande des joueurs minute par minute.

  • Coût DevOps le plus faible grâce à un hébergement sans région, Edgegap automatise 99 % des tâches.

  • Ping le plus faible grâce à plus de 615 sites dans l’infrastructure cloud publique d’Edgegap.

  • Mise à l’échelle la plus rapide (capacité de pointe) en cas de pic de trafic inattendu.

  • Niveau de sécurité et de prévention de la triche des joueurs le plus élevé (autorité serveur).

  • Impact minimal d’un crash serveur inattendu sur les joueurs, n’affectant qu’un seul match.

👎 Inconvénients

  • L’adoption d’un nouveau modèle mental d’orchestration nécessite au départ un certain effort d’apprentissage.

  • Les serveurs fonctionnant plus de 24 heures seront automatiquement arrêtés.

🧩 Particulièrement adapté pour

  • Les jeux sensibles à la latence - lorsque l’optimisation du netcode ne peut pas surmonter un ping élevé :

    • FPS, jeux de combat, VR et XR (réalité virtuelle et réalité étendue), …

  • Les jeux avec une limite supérieure de durée de match par conception,

    • Battle Royale, PvPvE, jeux de tir coopératifs, MOBA, jeux de sport, ARPG et dungeon crawlers, …

🔎 Découvrabilité

circle-info

Edgegap fait automatiquement évoluer à la hausse/à la baisse tous les 615+ emplacements de serveurs en fonction de l’activité des joueurs dans chaque région. Préparez-vous au succès - montez en charge jusqu’à 14 millions d’utilisateurs concurrents en 60 minutesarrow-up-right.

Veille régionale

Modèle traditionnel pour mondes persistants avec contenu généré par les utilisateurs et jeux MMO sociaux.

👍 Avantages

  • Familier et facile à comprendre, approche à l’ancienne pour les vétérans endurcis.

  • Niveau de sécurité et de prévention de la triche des joueurs le plus élevé (autorité serveur).

  • Coût facilement prévisible basé sur un engagement mensuel.

👎 Inconvénients

  • Coût d’hébergement plus élevé - chaque région nécessite un ou plusieurs serveurs de veille inactifs (capacité de pointe).

  • Coût DevOps plus élevé - mise à l’échelle, opérations et maintenance dupliquées par région.

  • Les régions avec une base de joueurs plus réduite subissent un ping élevé en raison de la connexion à des serveurs éloignés.

🧩 Particulièrement adapté pour

  • Mondes persistants avec contenu généré par les utilisateurs stocké sur le serveur même lorsque les joueurs se déconnectent.

    • MMO, sandbox avec construction de base ou placement d’objets, extraction shooters, ...

  • jeux tolérants à la latence - lorsque la physique en temps réel sous autorité serveur n’est pas requise:

    • jeux mobiles, jeux coopératifs, TCG/CCG, stratégies au tour par tour, …

  • Multijoueur asynchrone, où les crashs serveur ont un impact minimal sur l’expérience des joueurs :

    • courir contre des fantômes, piller une base ennemie, jeux de construction/agriculture basés sur des temporisateurs, …

  • applications avec un processus d’initialisation lourd - lorsque la préparation des serveurs prend plusieurs minutes.

🔎 Découvrabilité

circle-info

Voir Clusters gérés pour l’hébergement autonome de vos microservices et services backend sur Edgegap.

Pair à pair

Réorientez les efforts de développement des serveurs dédiés vers le netcode relais pour les jeux non compétitifs.

Sujets connexes : serveurs d’écoute, autorité côté joueur, traversée NAT.

👍 Avantages

  • Coût d’hébergement le plus faible, nécessitant uniquement des serveurs relais pour résoudre la traversée NAT.

  • Coût DevOps le plus faible - maintenance requise uniquement pour les builds clients et les canaux de distribution.

  • Impact minimal d’un crash serveur inattendu sur les joueurs, n’affectant qu’un seul match.

  • Facile à mettre en œuvre et rapide à prototyper, sans aucun développement backend requis.

👎 Inconvénients

  • Effort de développement netcode pair à pair accru nécessitant des compétences en programmation concurrente.

  • Les pires temps de ping et la plus grande sensibilité aux conditions réseau défavorables (par exemple Internet mobile).

  • Sécurité la plus faible, vulnérable aux attaques de l’homme du milieu et au détournement de session.

  • Risque de perte de session lorsque l’hôte quitte, sauf si vous implémentez une migration d’hôte personnalisée.

🧩 Particulièrement adapté pour

  • Jeux coopératifs et casual - lorsque la triche ne gâche pas le plaisir ni ne casse le jeu,

    • Jeux pour enfants, jeux d’exploration, aventures, …

🔎 Découvrabilité

circle-check

📍 Placement des serveurs

Quelle que soit la méthode d’orchestration choisie, sélectionner le bon emplacement de serveur pour un groupe de joueurs est essentiel pour garantir le meilleur ping possible et une expérience optimale pour les joueurs. Découvrez différentes stratégies de placement des serveurs et leur impact sur vos joueurs.

circle-info

Votre stratégie de placement des serveurs va avoir un impact sur l’expérience de vos joueurs, leur rétention et les avis sur votre jeu.

circle-check
circle-info

Voir Déploiements vers analyser le placement des serveurs en temps réel, à grande échelle.

Score du serveur

La stratégie de score du serveur utilise la méthodologie brevetée d’Edgegap, qui optimise individuellement le placement des serveurs pour chaque match. Effectue une télémétrie non intrusive pour approximer la proximité réseau de chaque joueur par rapport à nos emplacements de serveurs et choisir le serveur qui offre le meilleur :

  • réactivité - fournit le ping moyen le plus faible pour tous les joueurs,

  • équité - fournit un ping équilibré et équitable pour tous les joueurs.

circle-check

Placement non réactif - le serveur est loin, ping élevé pour tous les joueurs :

Placement injuste - ping inégal, un joueur est désavantagé :

Exemple de bon placement - ping réactif et équitable pour tous les joueurs :

circle-info

Cette stratégie est particulièrement efficace pour héberger un groupe de joueurs éloignés les uns des autres (Amérique du Nord vs Europe, ou côte Ouest vs côte Est), ce qui est souvent le cas avec des salons préformés.

Géolocalisation

Alternativement, fournissez les coordonnées de latitude et de longitude des joueurs ou les coordonnées d’un emplacement de serveur préféré au lieu de recourir à la télémétrie automatisée. Cette approche nécessite une implémentation supplémentaire de géolocalisation côté client, reposant entièrement sur la solution du développeur du jeu.

circle-exclamation
circle-check

Verrouillage régional

Les serveurs peuvent être placés à l’aide d’un paramètre régional grossièrement généralisé, soit :

  • choisi automatiquement pour le joueur, en fonction de ses métadonnées (base de données du compte joueur), soit

  • sélectionné par le joueur pendant le matchmaking, permettant un placement avec une latence client-serveur élevée.

triangle-exclamation
circle-check

🟢 Qualité de connexion

Certains jeux (et certains joueurs) sont plus sensibles à la latence ou au lag que d’autres. Bien que les rapports des joueurs soient un excellent indicateur d’incidents ou de bugs de régression à grande échelle, les joueurs peuvent manquer d’une compréhension approfondie des concepts réseau et attribuent rapidement la responsabilité aux studios, au netcode ou aux serveurs.

La cause racine de certains problèmes peut être cachée aux joueurs, donc la coopération entre le studio et le fournisseur d’hébergement peut être cruciale. La priorité d’Edgegap est toujours de fournir le meilleur service possible.

Si vous recevez de nombreux signalements de joueurs, si vous subissez des pannes généralisées ou des problèmes répétés, veuillez nous contacter immédiatement via un ticket d’assistance sur notre plateforme.

Faible latence

La latence du joueur est une combinaison des latences liées au transfert de données entre :

  • dispositifs physiques - le signal physique se déplaçant à travers la topologie du réseau Internetarrow-up-right,

  • hôte à hôte - résultant des mesures de protocole, de transport et de sécurité,

  • processus à processus - résultant de l’encapsulation/désencapsulation et du traitement des données côté client/serveur.

Edgegap réduit la latence physique en plaçant les serveurs plus près de vos joueurs pour des réponses plus rapides et moins de sauts réseau. Avec des emplacements chez 17 fournisseurs cloud et bare metal, vous obtenez le meilleur ping de sa catégorie pour les joueurs partout dans le monde.

La couverture des serveurs et d’Internet dans le monde (pas seulement avec Edgegap) est limitée en raison de facteurs tels que :

  • disponibilité de l’infrastructure - la qualité de la connexion Internet dans une région donnée peut ne pas être suffisante,

  • facteurs naturels - des baies de serveurs très complexes nécessitent surtout un environnement stable.

Haute disponibilité

La disponibilité des serveurs dans différents emplacements à travers le monde varie au fil du temps, changeant plusieurs fois au cours de la journée. Edgegap fait automatiquement évoluer à la hausse/à la baisse les emplacements à la demande, en tenant compte de :

  • trafic de pointe - déploiements effectués dans une période de 15 minutes,

  • exigences en vCPU - davantage de vCPU par déploiement augmente la demande globale pour un emplacement spécifique,

  • offre du fournisseur - certains emplacements éloignés disposent de moins d’options de fournisseurs disponibles,

  • disponibilité des machines - certains emplacements ne proposent que des machines 4 vCPU ou 8 vCPU,

  • demandes du studio pour les tests, l’assurance qualité, l’accès anticipé, les bêtas fermées ou les tournois.

Les requêtes de déploiement de toutes les applications sont combinées pour évaluer la demande d’emplacement. Toutes les organisations ont par défaut la même priorité d’allocation, avec la possibilité d’ajouter des pools de serveurs privés pour les clients entreprise nécessitant du matériel ou des emplacements spécifiques.

circle-check

Résolution des problèmes des joueurs

Les problèmes des joueurs peuvent être liés à des bugs serveur ou à des incidents chez le fournisseur, mais peuvent aussi provenir de tiers tels que les FAI locaux, les services de jeu, des bugs dans des bibliothèques bas niveau, des fournisseurs d’infrastructure ou d’autres sources.

Lors du dépannage des signalements ou incidents des joueurs, tenez compte des facteurs suivants :

  • qualité du matchmaking - les joueurs doivent être proches les uns des autres (même région) pour Déploiements donner les meilleurs résultats :

  • problèmes régionaux :

    • les fournisseurs d’accès Internet (FAI) locaux peuvent être en train de résoudre un incident momentanément,

    • certaines régions (par ex. Chine, Russie) peuvent être restreintes en raison de sanctions localisées,

  • niveau de cache - Edgegap donnera la priorité aux déploiements rapides dans les emplacements mis en cache :

  • délai maximal de déploiement - les déploiements peuvent échouer en raison d’un processus d’initialisation lent et lourd :

    • voir Applications et versions pour augmenter le délai d’attente,

    • retardez les étapes d’initialisation jusqu’à ce qu’elles soient absolument nécessaires,

  • problèmes d’image serveur ou d’intégration.

circle-check
circle-info

Informez les utilisateurs des bugs généralisés, des problèmes temporaires et des pannes afin d’atténuer les sentiments négatifs.

🔄 Cycle de vie du déploiement

Les déploiements Edgegap passent par plusieurs étapes de cycle de vie, indiquées par le statut du déploiement.

1. Démarrer un déploiement

Un déploiement à des fins de test peut être lancé avec :

Un déploiement à des environnement de production réel doit être lancé avec :

circle-check
circle-info

Lors des tests avec API de déploiementarrow-up-right, vous pouvez remplacer le CMD Dockerfile par une commande personnalisée.

2. Déploiement en cours

Une fois un déploiement lancé, notre système effectuera une série d’étapes en rapide succession :

  • Télémétrie - nous mesurons la réactivité réseau depuis les centres de données disponibles vers chaque joueur,

  • Déploiement - nous réservons de la capacité et préparons le lancement de votre conteneur serveur,

  • Démarrage du conteneur - nous lançons le conteneur, installons les dépendances et initialisons,

  • Post-traitement - nous ajoutons le stockage des journaux, la surveillance et finalisons le déploiement.

circle-exclamation

3. Déploiement prêt

Votre conteneur est entièrement initialisé et votre serveur démarre maintenant. Pendant quelques secondes à une minute, votre serveur peut encore être en cours d’initialisation et ne pas répondre aux requêtes des joueurs tant que votre moteur de jeu (ou runtime personnalisé) n’est pas complètement prêt à accepter les connexions des joueurs.

circle-check

4. Erreur de déploiement

Votre déploiement peut passer à l’état Erreur à tout moment, pour des raisons inattendues. Cela est plus susceptible de se produire lors des tests de votre intégration ou des nouveaux builds serveur.

Vous n’êtes pas facturé pour les déploiements en Erreur, qui sont automatiquement arrêtés après 24 heures.

Étapes de dépannage :

circle-check

5. Déploiement arrêté

Nous n’arrêtons jamais vos serveurs sans votre directive, afin d’éviter d’affecter négativement l’expérience de vos joueurs. Votre déploiement peut être arrêté pour les raisons suivantes :

  • Arrêt automatique via DELETE_URL - le déploiement s’est arrêté de lui-même après le départ des joueurs et la fin du match,

  • Arrêt depuis votre backend - votre backend a arrêté ce déploiement à l’aide de l’API Deploymentsarrow-up-right,

  • Durée maximale du jeu - le temps alloué dans votre Applications et versions a expiré,

  • Flottes privées L’hôte exécutant votre déploiement a été supprimé via une action planifiée.

circle-info

Une fois un déploiement arrêté, nous déclenchons une terminaison gracieuse en envoyant SIGTERM à votre processus principal, ce qui permet une courte période de terminaison. Une fois ce délai expiré, un signal SIGKILL est envoyé pour arrêter le déploiement.

👀 Observabilité

Permettez aux serveurs de jeu d’interopérer avec des tiers et d’obtenir des informations opérationnelles.

Découvrabilité

Une fois prêt, un déploiement se voit attribuer une URL (fqdnarrow-up-right) et un port externe pour chaque port interne.

circle-check
circle-info

Le trafic sortant (vers les clients ou le backend) provenant de vos serveurs de jeu n’est jamais bloqué ni filtré.

WebSockets (WS) et WebSockets sécurisés (WSS)

Pour utiliser un netcode basé sur les WebSockets avec Edgegap, vous avez deux options :

  • certificat géré, configuré en 1 minute sans écrire de code :

    • configurez votre Applications et versions vers utilisez WebSocket (WS) et activez la mise à niveau TLS,

    • utilisez l’URL Edgegap pour connecter les clients (par ex. https://5fa53fa00a57.pr.edgegap.net/)

  • certificat autogéré, si vous souhaitez utiliser votre propre domaine personnalisé :

triangle-exclamation

Variables injectées

Les serveurs de jeu ont souvent besoin d’informations supplémentaires, comme l’IP du serveur, les valeurs de port interne ou autres. L’injection de variables d’environnement en lecture seule est une méthode fiable, indépendante du cloud, pour transmettre des paramètres.

circle-check
circle-info

Voir Variables de version de l’application et Variables du Matchmaker en plus des variables de déploiement ci-dessous.

Variables personnalisées

Définissez jusqu’à 20 variables personnalisées pour chaque déploiement, chacune pouvant contenir jusqu’à 4 Ko de données de type chaîne.

circle-exclamation

Accédez aux informations importantes en lisant les variables injectées dans vos serveurs par Edgegap :

Identifiants

  • ARBITRIUM_REQUEST_ID - par ex. f68e011bfb01 .

    • ID de déploiement unique, également appelé ID de requête. Utilisé pour récupérer plus d’informations.

    • Les URL de déploiement ont toujours le format {ARBITRIUM_REQUEST_ID}.pr.edgegap.net.

  • ARBITRIUM_PUBLIC_IP - par ex. 162.254.141.66 .

    • Adresse IP publique de cet hôte, peut être utilisée pour se connecter à la place de l’URL.

  • ARBITRIUM_HOST_ID - par ex. alpha-north-america-70364ef8 .

    • Identifiant unique de la machine hébergeant votre déploiement, partagé avec d’autres déploiements.

  • ARBITRIUM_DEPLOYMENT_TAGS - par ex. tag1,tag2 .

  • ARBITRIUM_PRIVATE_FLEET_ID - par ex. PUBLIC_CLOUD , ou ID de flotte si hébergé sur Flottes privées.

Spécifications des ressources

  • ARBITRIUM_HOST_IN_PRIVATE_FLEET - par ex. false , indiquant si hébergé sur Flottes privées.

  • ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY - par ex. 2000 , fréquence du processeur en MHz.

  • ARBITRIUM_DEPLOYMENT_VCPU_UNITS - par ex. 256, unités vCPU allouées (1024 = 1 vCPU).

  • ARBITRIUM_DEPLOYMENT_MEMORY_MB - par ex. 512, RAM allouée en Mo (1024 = 1 Go).

Gestion du cycle de vie

  • ARBITRIUM_DELETE_URL - par ex. https://api.edgegap.com/v1/self/stop/9f511e17/660.

  • ARBITRIUM_DELETE_TOKEN - par ex. 7df4cd933df87084b34ae80d8abde293.

  • ARBITRIUM_CONTEXT_URL - par ex. https://api.edgegap.com/v1/context/9170f5211e17/17.

    • Appelable uniquement depuis le déploiement, renvoie plus de détails sur le déploiement.

    • Nécessite un unique ARBITRIUM_CONTEXT_TOKEN dans l’en-tête Authorization .

  • ARBITRIUM_CONTEXT_TOKEN - par ex. dfaf50b9333b9ee07b22ed247e4a17e6.

Découvrabilité

  • ARBITRIUM_PORT_GAMEPORT_INTERNAL - par ex. 7777 , port interne pour l’écoute du serveur.

  • ARBITRIUM_PORT_GAMEPORT_EXTERNAL - par ex. 31504 , port externe pour les connexions client.

    • Les valeurs des ports externes sont randomisées pour chaque déploiement à des fins de sécurité.

  • ARBITRIUM_PORT_GAMEPORT_PROTOCOL - par ex. UDP , protocole de transport de votre netcode.

circle-check
  • ARBITRIUM_BEACON_ENABLED - par ex. true, si vous déployez sur Flottes privées avec Balises Ping.

  • ARBITRIUM_HOST_BEACON_PUBLIC_IP - par ex. 139.177.198.69 , IP publique de la balise la plus proche.

  • ARBITRIUM_HOST_BEACON_PORT_UDP_EXTERNAL - par ex. 30199, pour la mesure du ping via UDP.

  • ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNAL - par ex. 30456, pour la mesure du ping via TCP.

Informations structurées (JSON en tant que chaîne)

circle-info

Les variables d’environnement sont stockées sous forme de JSON sérialisés en chaîne, analysez-les à l’aide d’un SDK ou d’une méthode personnalisée.

chevron-rightARBITRIUM_DEPLOYMENT_LOCATION: - Informations détaillées sur l’emplacement du déploiement.hashtag
chevron-rightARBITRIUM_PORTS_MAPPING: - Informations détaillées sur vos ports internes et externes.hashtag

Surveillance du tableau de bord

Notre Le tableau de bordarrow-up-right fournit des utilitaires pour surveiller la scalabilité de votre serveur et assister les opérations.

Analytique

circle-check

🌟 Passez au niveau Paiement à l’utilisationarrow-up-right pour débloquer des métriques et des analyses détaillées des performances du serveur :

  • Aperçus généraux : suivre les versions avec le nombre de serveurs en direct par version + aperçu de l’utilisation des ressources,

  • Aperçus CPU: dépanner les serveurs en ralentissement en raison d’opérations gourmandes en processeur,

  • Aperçus mémoire: atténuer les redémarrages de serveur dus au dépassement de la mémoire allouée,

  • Aperçus réseau : détecter les schémas réseau inefficaces et optimiser le netcode.

Carte de déploiement

Prévisualisez l’emplacement du déploiement, les emplacements disponibles et les emplacements estimés des joueurs sur la carte :

Points d’équilibre du déploiement

circle-check

Prévisualisez la carte thermique des points d’équilibre du déploiement et filtrez par Applications et versions. Les points d’équilibre sont des emplacements approximatifs ayant une proximité réseau égale pour chaque joueur dans un déploiement donné :

circle-exclamation

Journaux de déploiement

circle-check

Les journaux de déploiement affichent des informations sur Déploiements:

Journaux du conteneur

Inspectez les journaux de votre serveur de jeu en cas de problème, ou lors du débogage :

circle-exclamation

Métriques du conteneur

circle-check

Examinez les métriques du conteneur (processeur, mémoire, réseau) pour :

  • identifier les problèmes de connexion courants lorsque Déploiements,

  • détecter les schémas d’implémentation inefficaces provoquant des pics d’utilisation des ressources,

  • repérer l’utilisation inefficace des ressources dans des scénarios particuliers,

  • vérifier les changements dans l’utilisation des ressources de votre serveur pendant l’optimisation,

  • étalonner la consommation de ressources et la durée d’initialisation de votre serveur.

Les métriques historiques affichent des moyennes de valeurs avec une période de 1 minute, disponibles dans le niveau Gratuit.

🌟 Passez au niveau Paiement à l’utilisationarrow-up-right pour débloquer des métriques précises avec des intervalles de 1 seconde.

circle-info

Contactez-nousenvelope avant votre lancement pour demander une assistance d’hébergement en direct pour les lancements à grande échelle.

Contexte et statut

Des informations supplémentaires sur le déploiement peuvent être obtenues au format JSON :

circle-info

L’API de contexte (depuis le déploiement) nécessite un jeton d’API de contexte, tandis que l’API de statut utilise votre jeton Edgegap.

circle-exclamation

Filtrer les déploiements

Pour rechercher rapidement parmi tous les déploiements, vous pouvez utiliser notre tableau de bordarrow-up-right:

Lister les déploiements avec l’APIarrow-up-right et appliquer des filtres avec les intégrations backend :

Attribut de déploiement
Opérateurs
Valeur d’exemple

eq ou neq

"ready" ou "error"

eq

"7e709a0d8efd"

dans l’en-tête ou nin

[ "7e709a0d8efd", "4ba353100b4b" ]

eq ou neq

"tagA"

dans l’en-tête ou nin

[ "tagA", "tagB" ]

eq ou neq

"my-app"

dans l’en-tête ou nin

[ "my-app", "my-other-app" ]

eq ou neq

"1.0.0"

dans l’en-tête ou nin

[ "1.0.0", "prod" ]

eq

true ou false

eq ou neq ou

lt ou lte ou

gt ou gte

5

circle-info

Chaque attribut peut avoir au maximum 1 opérateur de filtre dans une seule requête. Voir Référence de l’API pour en savoir plus.

Triez les résultats par plusieurs champs dans l’ordre où ils apparaissent dans la requête :

Attribut de déploiement
Ordre

Exemples de requêtes de filtre :

chevron-rightLister les déploiements en erreur pour dépanner et supprimer.hashtag

URL encodée :

Requête JSON formatée :

chevron-rightLister Déploiements avec une version d’application obsolète pour confirmer qu’un lancement est terminé.hashtag

URL encodée :

Requête JSON formatée :

circle-check

Webhooks et postbacks

Recevez de simples notifications HTTP dans le backend de votre jeu pour les changements dans Déploiements en spécifiant une URL de webhook dans votre requête API de déploiement. Disponible pour :

  • À l’état prêt : conteneur de déploiement démarré avec succès (le serveur commence son initialisation après cela),

  • En erreur : le déploiement n’a pas pu être démarré et une Déploiements s’est produite,

  • À la terminaison : Déploiements et le serveur de jeu n’est plus joignable.

Les webhooks Ready et Error ne seront jamais déclenchés pour le même déploiement.

chevron-rightExemple de charge utile de webhookhashtag
circle-exclamation
circle-info

Les webhooks observent le cycle de vie du déploiement, mais ne connaissent pas l’état d’initialisation de votre scène/niveau. Pour observer la progression du chargement de votre scène/niveau, implémentez un webhook personnalisé dans votre serveur de jeu.

🚨 Dépannage

Lors du dépannage des déploiements :

  1. vérifiez qu’il n’y a aucune erreur dans votre Déploiements et Déploiements,

  2. exécutez votre serveur localement pour écarter les bugs d’intégration,

  3. consultez les étapes de dépannage sur cette page,

  4. contactez-nous sur Discord de la communautéarrow-up-right et incluez l’ID de votre déploiement.

circle-info

Voir Déploiements pour nos recommandations sur la gestion des retours de la communauté des joueurs.

chevron-rightImpossible de connecter les clients au serveur - Délai de requête dépassé., 请求超时 , ConnectionFailed , ou Échec de la vérification du port.hashtag
  • Tout d’abord, assurez-vous que le déploiement est prêt et qu’il n’y a aucune exception d’exécution ni erreur dans le journal de déploiement. Si votre déploiement s’est arrêté, inspectez les journaux dans notre Le tableau de bordarrow-up-right.

  • Si vous utilisez le netcode Mirror, vous devez avoir "Auto Start Server"arrow-up-right sélectionné dans votre NetworkManager , rebuild, push et redeploy your server.

  • Si vous utilisez le netcode FishNet, vous devez activer "Start on Headless"arrow-up-right dans votre ServerManager, rebuild, push et redeploy your server.

  • Si vous utilisez le netcode Photon Fusion 2, assurez-vous que votre serveur transmet l’IP publique du déploiement, le port externe et le roomCode sur le serveur, ainsi que le même code de salle dans le client dans le "NeworkRunner.StartGame"arrow-up-right paramètre StartGameArgs. L’ID de déploiement (par ex. b63e6003b19f) est un excellent choix car il est mondialement unique et facilement accessible au client par Matchmaker attribution et au Vue approfondie.

  • Ensuite, vérifiez que le paramètre de port dans les paramètres netcode de votre build serveur correspond au port interne de votre Version de l’applicationarrow-up-right. Vous pouvez modifier le mappage des ports en éditant le Version de l’applicationarrow-up-right sans reconstruire. Trouvez votre protocole dans votre intégration netcode.

  • Assurez-vous que votre client de jeu se connecte au port externe indiqué sur la page des détails de votre déploiement ; cette valeur sera toujours randomisée pour des raisons de sécurité.

  • Si vous utilisez le protocole Secure Websocket (WSS) dans votre intégration netcode, assurez-vous que votre Version de l’applicationarrow-up-right configuration de port pour le port WSS a l’option TLS Upgrade activée.

  • Êtes-vous situé en Chine et utilisez-vous Fleets intelligentesarrow-up-right? Votre connexion peut être bloquée par le Grand Firewall. Envisagez d’ajouter à votre flotte un serveur situé en Chine, ou d’utiliser un VPN pour vous connecter.

chevron-rightMon déploiement s’est arrêté/redémarré et je ne peux plus accéder à ses journaux.hashtag
  • En cas de plantage du processus serveur en raison d’une exception, notre système tentera de redémarrer automatiquement le serveur. Envisagez de tester votre serveur localement pour en découvrir la cause première.

  • Nous conservons les journaux uniquement pendant la durée du déploiement ; si vous souhaitez inspecter les journaux après l’arrêt du déploiement, veuillez intégrer un stockage de journaux tiersarrow-up-right.

  • Voir Déploiements pour découvrir toutes les causes de l’arrêt de votre déploiement.

chevron-rightMon déploiement s’est arrêté automatiquement après X minutes.hashtag
  • Les déploiements du niveau Gratuit ont une limite de temps de 60 minutes ; veuillez envisager de mettre à niveau votre compte.

  • Tous les déploiements seront terminés après 24 heures d’exécution conformément à notre politique de nettoyage des serveurs, pour la maintenance de l’infrastructure, et pour é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 avec Persistance.

  • Voir Déploiements pour découvrir toutes les causes de l’arrêt de votre déploiement.

chevron-rightMon déploiement est prêt, mais je ne parviens pas à m’y connecter pendant plusieurs minutes après.hashtag
  • Une fois qu’un déploiement est prêt, l’initialisation de votre moteur de jeu commence. Ce processus peut prendre de quelques secondes à plusieurs 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 durée.

  • Les clients de jeu doivent réessayer la connexion à intervalles de 1 seconde pendant une durée limitée (selon la durée de votre initialisation), après quoi ils reviennent 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.

chevron-rightMon appareil Meta Quest affiche HTTP 0: Impossible de résoudre l’hôte de destination .hashtag
  • Lors de la création de builds d’applications Unity pour la cible Android, votre autorisation d’accès à Internet peut être supprimée automatiquement de l’artefact de build APK client de sortie.

  • Réajoutez les autorisations dans (nécessite de reconstruire le client ensuite) :

    • Paramètres du projet / OpenXR / ⚙️ Support Meta Quest / Forcer la suppression des autorisations Internet (décocher).

    • Paramètres du joueur / Accès Internet (définir sur requis).

chevron-rightQue se passera-t-il si un joueur quitte mon déploiement ?hashtag
  • 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 différentes et fournisseurs d’authentification des joueurs 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 ou Sessionsarrow-up-right.

chevron-rightMon serveur affiche une utilisation CPU de 100 % après être devenu prêt.hashtag
  • Cela peut ne pas être un problème, car les moteurs de jeu ont tendance à effectuer des opérations gourmandes en CPU pendant l’initialisation du serveur. Si l’utilisation du CPU ne baisse pas 2 à 3 minutes après le début du déploiement, vous devrez peut-être optimiser votre serveur ou augmenter les ressources de la version de l’application.

  • Réduire le taux de tick peut avoir un impact sur l’utilisation du CPU, car le serveur effectue moins d’opérations de messagerie.

  • Si vous utilisez le netcode Mirror, vous devez avoir "Auto Start Server"arrow-up-right sélectionné dans votre NetworkManager , rebuild, push et redeploy your server.

  • Si vous utilisez le netcode FishNet, vous devez activer "Start on Headless"arrow-up-right dans votre ServerManager, rebuild, push et redeploy your server.

  • Dans le niveau Gratuit, vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM).

  • Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version d’application. Vous pouvez dupliquer votre version d’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.

chevron-rightMon déploiement redémarre à répétition et affiche l’erreur `OOM kill` .hashtag
  • Ce comportement est causé par un dépassement de la quantité de mémoire allouée. Envisagez d’optimiser l’utilisation de la mémoire avec le pooling d’objets, la compression ou la suppression des objets inutiles dans votre scène.

  • Assurez-vous que votre projet charge la scène par défaut contenant votre NetworkManager et que la scène est incluse dans les paramètres de build de Unity.

  • Dans le niveau Gratuit, vous êtes limité à 1,5 vCPU et 3 Go de mémoire (RAM).

  • Vous pouvez augmenter les ressources allouées lors de la création d’une nouvelle version d’application. Vous pouvez dupliquer votre version d’application dans notre tableau de bord et ajuster ces valeurs selon vos besoins, sans reconstruire votre serveur ni votre image.

chevron-rightParfois, l’utilisation de la mémoire (RAM) de mon serveur augmente brusquement jusqu’à une valeur élevée, est-ce un problème ?hashtag
  • 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 entraînera un `OOM kill` (voir ci-dessus).

chevron-rightLes performances de mon serveur seront-elles affectées par d’autres serveurs exécutés sur la même machine ?hashtag
  • 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.

Mis à jour

Ce contenu vous a-t-il été utile ?