Rapport hebdomadaire #41 – Les serveurs Linux – World War 3 – Official Website
Weekly Report

Rapport hebdomadaire #41 – Les serveurs Linux

10/12/2019

Cette semaine, nous vous apportons des informations sur la façon dont nous prévoyons de passer à des serveurs Linux pour l’hébergement de jeux de World War 3. C’est quelque chose que nous voulions faire depuis longtemps, mais avec des ressources et du temps limités, nous avons dû prioriser d’autres travaux. Nous avons bricolé ce problème depuis longtemps et nous avons enfin quelque chose de suffisamment solide pour vous faire savoir que cela arrive. Il n’y a pas encore de date fixe, mais nous avons joué avec succès sur un serveur Linux.

Certains d’entre vous ne le prendront peut-être pas immédiatement comme une bonne chose – ce qui est compréhensible, c’est pourquoi nous voulons expliquer pourquoi c’est un changement positif pour vous, les joueurs et nous en tant que studio.

Il y a quelques avantages qui découlent du passage de Windows à des serveurs basés sur Linux, mais les deux plus importants sont : de meilleures performances et stabilité et un coût inférieur.

Bien que les serveurs Windows soient très stables et ne soient généralement pas un mauvais choix, en particulier pour les personnes qui ne connaissent pas bien Linux, la surcharge des ressources système est quelque chose dont nous pouvons nous passer. Ce n’est pas une énorme différence, mais cela augmentera certainement la qualité de nos matchs. Le coût est explicite, l’hébergement de serveurs est cher et si nous pouvons réduire le coût et réellement améliorer la qualité de service, donc il n’y a aucune raison de ne pas le faire.

De plus, dans le cas des serveurs hébergés par les joueurs (qui sont prévus pour la version ultérieure), le coût de location d’une machine Linux est également inférieur à celui d’une machine Windows, elle sera donc plus conviviale de cette manière. A l’avenir. Gardez à l’esprit que «planifié» ne signifie pas sûr à 100%, mais nous savons combien cela est important pour la longévité du jeu et la création de communautés, ainsi que pour augmenter la qualité de la modération sur chaque serveur.

C’est suffisant pour l’introduction, contentons-nous de simple fait histoire de faire fonctionner World War 3 sur un serveur Linux. Cela va être un peu plus technique que d’habitude, mais il n’y a aucun moyen de simplifier ce sujet d’une manière qui ait du sens pour les personnes qui ne connaissent rien à l’hébergement de serveurs – nous essaierons cependant. Si vous êtes quelqu’un qui veut plus d’informations sur ce sujet, vous pouvez vous diriger vers nos forums et demander – nous essaierons de répondre le mieux possible.

Configuration

Pour commencer cette tâche, nous avons dû tester de nombreux logiciels et outils qui le rendraient possible et fonctionneraient. Nous avons finalement atterri sur une combinaison qui fonctionnait pour nous et avons commencé le travail.

Compilation croisée

Notre premier plan était d’utiliser la compilation croisée. Cela signifie essentiellement que vous pouvez créer un programme pour une plate-forme (comme Linux), pas réellement le construire sur la plate-forme cible (donc en utilisant Windows). Nous voulions que cela fonctionne, car tout notre fil de développement est basé sur Windows, et utiliser Windows pour créer la version Linux serait une solution idéale. Cette étape a pris beaucoup de temps, en raison de divers problèmes et du problème de base de chaque essai.

Au cours de l’étape de compilation *, nous avons rencontré plusieurs problèmes avec les bibliothèques de moteurs et les plugins contenant des erreurs. Celles-ci étaient parfois vraiment énigmatiques et nécessitaient des solutions intelligentes à contourner et à corriger.

* Compilation – d’une manière très, très simplifiée, c’est juste une étape qui prend le code écrit par les gens et le transforme en quelque chose que l’ordinateur peut comprendre.

Après avoir corrigé toute la bibliothèque et les erreurs de fichiers manquants, nous avons dû entrer dans le code du jeu lui-même, qui utilisait certaines fonctionnalités existant uniquement dans le SDK Windows ou qui n’étaient pas disponibles pour clang, que nous utilisions à l’époque pour cette tâche.

Après avoir retravaillé une partie du code pour fonctionner à la fois sur Windows et Linux, nous avons compilé avec succès le jeu et commencé le processus de cuisson. La cuisson consiste à prendre toutes les données qui se trouvent dans notre projet de jeu, à les empaqueter et à les mettre dans un état optimisé pour les performances et non pour l’édition, et beaucoup plus petit que la taille massive du projet sur lequel nous travaillons quotidiennement. Cette étape s’est bien passée et nous nous sommes préparés à la lancer sur la machine Linux.

Malheureusement, le programme a démarré et s’est arrêté immédiatement avec et « Erreur inconnue ». Le débugage de ce problème s’est avéré être un effort très vain, car le débogage depuis l’intérieur du système d’exploitation Linux contenait toujours des fichiers de chemin d’accès Windows et nous conduisait à des fichiers qui ne sont pas présents sur la machine, car le programme a été construit en utilisant un système différent.

Nous sommes ensuite passés au débogage à distance, qui est, tout simplement, la connexion au processus Linux à l’aide du débogueur Windows et la vérification de ce qui se passe – mais cela a également échoué et après quelques essais et idées supplémentaires, nous avons décidé d’essayer une approche différente – qui pourrait donner des résultats plus rapides.

Compilation primaire

Nous avons configuré une machine Linux pour cela, téléchargé un moteur UE4 propre et construit l’éditeur en utilisant cette configuration. Ce fut un succès, nous sommes donc allés ouvrir le projet World War 3 dans l’éditeur propre et il a bien sûr échoué – puisque notre jeu repose sur des modifications que nous avons apportées au moteur, ce n’était pas une surprise, mais nous a donné de précieuses informations sur ce qui doit être changé. Après avoir trouvé les problèmes et les avoir corrigés, la construction de l’exécutable du serveur pour Linux s’est déroulée sans heurts.

Etat actuel

Actuellement, nous pouvons construire et jouer sur le jeu sous Linux, nous pouvons lancer l’éditeur de projet et jouer au jeu depuis Windows, en nous connectant à un serveur Linux.

Nous avons également transféré nos serveurs maîtres vers Linux, mais c’était une tâche simple, car il a toujours été conçu pour cela et a été testé sur Linux depuis sa refonte il y a environ un an.

Défis actuels

Parce que l’effort de portage a pris un certain temps, nous avons encore quelques choses à faire, principalement la mise à jour de la version Linux vers la version actuelle et la conserver. Notre version Linux a actuellement environ six mois de retard sur la version Live (cela ne signifie pas que nous devons refaire le travail, cela signifie simplement que nous devons le tester après la mise à jour et résoudre les petits problèmes qui apparaissent).

De plus, nous devons tester correctement la différence de performances et la stabilité. Pour cela, nous allons d’abord passer nos serveurs PTE à Linux dans les prochaines semaines, puis, si tout fonctionne bien, nous ferons également le changement sur les serveurs Live. Pour tester correctement cela, nous aurons besoin de temps avec nos joueurs, pour obtenir leurs commentaires et leurs sentiments sur le fonctionnement du jeu et si c’est la bonne direction.

Conclusion

La route a été longue et il reste encore du chemin à parcourir, mais d’après nos tests internes, cela semble être un pas en avant. Nous espérons que vous comprenez pourquoi nous avons été silencieux sur cette question depuis un certain temps. Nous espérons vous voir sur nos tout nouveaux serveurs Linux dans quelques semaines et dans le prochain rapport hebdomadaire lundi !