Skip to content

Créer un serveur

Tsht edited this page Feb 25, 2021 · 8 revisions

Avant propos

Ce guide est une ébauche sur comment lancer une session de jeu EmptyEpsilon, à beaucoup de joueur et dans les meilleures conditions possibles. Il existe au moins 5 façons de lancer une partie d'EmptyEpsilon.

La terminologie

  • Un serveur EmptyEpsilon est une instance d'EmptyEpsilon fonctionnant en tant que serveur. Il faut lancer l'executable (disponible sur de multiples plate formes comme Windows, Linux, Android, etc.) et choisir de créer un serveur. Le serveur EmptyEpsilon est le seul poste permettant de faire des tweaks et permettant d'avoir des boutons "GM" utilisables. C'est un programme développé en C++ avec une interface graphique qui demande un peu de ressources.
    C'est lui qui se charge d'envoyer certaines données de jeux aux clients (position des vaisseaux etc.) et qui execute une bonne partie des scripts lua (scripts permettant de définir des scénarios et comportement des vaisseaux), pour plus d'informations voir la documentation sur https://github.com/daid/EmptyEpsilon/wiki)
  • Un proxy est une instance d'EmptyEpsilon lancée en mode proxy. Son fonctionnement est de se connecter au serveur Empty Epsilon puis de prendre en charge la réplication des commandes et des données entre le serveur et les clients. Il doit être possible d'avoir plusieurs proxies qui se répartissent la charge réseau.
    Le proxy nécessite que le port 36555 soit disponible en écoute sur le serveur.
    Il n'y a aucune interface graphique et il demande peu de ressources.
    Il faut un serveur EmptyEpsilon en plus.
  • Un reverse proxy est une instance d'EmptyEpsilon lancée en mode reverse proxy. Son fonctionnement est identique à celui d'un proxy à l'exception qu'il attend la connexion d'un serveur EmptyEpsilon en mode reverse proxy. Le serveur EmptyEpsilon se connecte au reverse proxy (sur le port 35666), alors que pour un proxy c'est le proxy qui se connecte au serveur (sur le port 35666).
    Il faut un serveur EmptyEpsilon en plus.
  • Un serveur "headless" est un mode de fonctionnement du serveur EmptyEpsilon sans interface graphique. Dans ce cas, on peut envoyer des commandes via http sur le serveur headless, mais il n'existe aucune interface "user friendly" en html.
  • Un client est une instance d'EmptyEpsilon qui se connecte en tant que client. Il est possible d'avoir une interface Game Master simplifiée (pas de tweaks, ni de boutons GM).
    Il est possible d'avoir des clients avec des fichiers de scripts qui ne sont pas identiques à ceux du serveur dans certains cas précis, mais cela ne sera pas approfondi dans ce guide. Nous supposerons être dans le cas général : les fichiers de scripts sont les mêmes sur le serveur et sur les clients.

Les clients et le serveur doivent obligatoirement avoir le même niveau de code.
Sauf écriture particulière des scripts, les clients et le serveur doivent obligatoirement avoir les mêmes scripts.

Résumé des cinq façons

Pour les façons 2, 3, 4 et 5 je parlerai de lancer une session en utilisant un cloud AWS, mais il doit tout autant être possible d'utiliser un serveur privé.
Cependant, seul le cloud AWS a été testé (à ma connaissance) par la communauté EmptyEpsilon (sur USN https://discord.gg/KHBQeEU)
De plus cela doit demander une adaptation des scripts qu'on peut trouver ici : http://noseynick.org/artemis/aws/

  1. Utilisation d'un serveur chez soi, et utilisation d'un VPN privé comme Hamachi ou ZeroTier
    Avantage
    Simple à mettre en oeuvre
    Desavantage
    La personne hébergeant le serveur doit avoir une bonne connexion.
    Hamachi est limité à 32 participants.
    Les clients doivent installer le client VPN.

  2. Instance du serveur sur un serveur privé ou un cloud comme AWS Utilisé par certaines personnes d'USN
    Il s'agit de lancer le serveur directement sur le cloud.
    On accède ensuite au server via un remote desktop tel que TightVNC.
    Les clients utilisent l'IP du cloud.
    Avantage
    Fonctionne bien, un intermédiaire en moins par rapport au proxy ou reverse proxy
    Supporte la charge
    Desavantage
    Coût (testé uniquement sur un serveur c5.large, cela revient à peut-être 50 centimes par session de 4h)
    Interface graphique en VNC, le temps de réponse n'est pas immédiat et dépend de la qualité de connexion du game master

  3. Instance du serveur sur un serveur privé ou cloud, mais en mode "headless" C'est la même chose que le 2 pour le déploiement, mais cela demande beaucoup moins de ressources.
    Cependant, il n'y a aucune interface. Le serveur attend des commandes http.
    Avantage
    En l'état, aucun.
    Desavantage
    Inutilisable sans une interface écrite en html ;)

  4. Serveur chez soi, proxy sur AWS
    Utilisé par certaines personnes d'USN
    On lance le serveur EmptyEpsilon chez soi, on redirige les ports de son routeur sur le PC sur lequel on fait tourner le serveur.
    Puis on lance EmptyEpsilon en mode proxy sur le cloud avec une ligne de commande spéciale qui se connecte au serveur.
    Il y a donc un serveur, un proxy et les clients. Le proxy est responsable de la bande passante utilisés
    Les clients utilisent l'IP du cloud.
    Avantage
    Utilisable avec un cloud AWS gratuit (t2.micro)
    Le proxy n'a pas besoin d'avoir les scripts de jeu, ni d'être la même version d'executable que le serveur ou les clients.
    Desavantage
    Il faut configurer le port forwarding
    Il y a un intermédiaire, donc une possibilité de plus que quelque chose fonctionne mal

  5. Serveur chez soi, reverse proxy sur AWS Testé mais ne fonctionne pas à cause de "mauvais clients" qui déconnectent le reverse proxy.
    On lance le reverse proxy, puis on lance le serveur Empty Epsilon chez soi en specifiant en ligne de commande l'adresse du reverse proxy.
    Les clients utilisent l'IP du cloud.
    Avantage
    Utilisable avec un cloud AWS gratuit (t2.micro)
    Le reverse proxy n'a pas besoin d'avoir les scripts de jeu, ni d'être la même version d'executable que le serveur ou les clients.
    Desavantage
    Ne marche pas si on tombe sur un client "défectueux" (il y a clairement un bug dans le code du reverse proxy)
    Il y a un intermédiaire, donc une possibilité de plus que quelque chose fonctionne mal

En détail, lancer une session de jeu

à faire