-
CAHIER DES CHARGES PROJET : Infrastructure
-
-
L’infrastructure doit être développée a 100% en Java (logique) en utilisant des technologies selon les recommandations du développeur, cependant, une contrainte y est fixée, les serveurs devront être dans des containers Docker, et tout doit pouvoir fonctionner avec la version 1.8.8 de Minecraft. Cette dernière doit être en mesure d’accueillir environ 500 joueurs.
-
Il est prévu pour l’instant d’avoir une machine VPS pour l’infrastructure web, un serveur dédié pour les proxy, database, et serveur à la demande, et un VPS pour les serveurs statiques.
-
-
1- La gestion des serveurs de jeux et proxy
-
Est considéré comme proxy, une application Velocity, équivalent de BungeeCord.
-
Est considéré comme serveur de jeu, une application java Spigot 1.8.8
-
-
Le système doit pouvoir accepter du MultiProxy, c’est-à-dire que plusieurs proxys reçoivent les connexions des joueurs, ils devront pour cela être synchronisés.
-
Le système doit pouvoir s’occuper de gérer les serveurs à la demande, statiques, et les hosts.
-
Les serveurs à la demande sont des serveurs qui se générent automatiquement pour les minijeux. Au départ, un nombre x de serveurs doit être démarrés. Lorsqu’une ou plusieurs parties de jeu sont en cours et qu’elles n’accueillent plus de nouveaux joueurs, alors un nombre de serveurs de jeu correspondant doivent être démarrés pour que le nombre de serveurs disponibles reste constamment égal à x.
-
Les serveurs statiques sont des serveurs démarrés manuellement qui peuvent être ajoutés à l’infrastructure afin de les rendres disponibles aux joueurs.
-
Les serveurs Host sont des serveurs démarrés par des joueurs avec permissions, par ex Youtubers ou Staff, servant principalement à l’organisation d’events. La personne qui démarre un host choisit son template et le serveur est démarré.
-
Le système s’occupe également des files d’attente des joueurs et des Parties pour rejoindre soit une catégorie (par ex un joueur veut rejoindre un serveur rush, on prends celui avec le + de monde et on le connecte, ou alors si une party veut rejoindre un type de serveur, on prend chaque serveur dans l’ordre décroissant du nombre de joueurs connectés, et le premier qui dispose d’assez de place sur la game pour les accueillir, les téléporte.
-
-
2- La gestion des données joueurs
-
Les données concernant les joueurs doivent être stockées en base de donnée, le choix de cette dernière est laissée au développeur, cependant il ne faut pas oublier que les performances doivent êtres satisfaisantes à l’accueil de centaines de joueurs, une mise en cache est donc recommandée.
-
-
Les données stockées doivent être les suivantes : Grade, UniCoins, Sanctions, Compte Boutique, Exp et Level (sur la base du système d’expérience de Minecraft), Les items achetés sur la boutique, ainsi que toutes les données concernant les fonctionnalités évoquées plus tard.
-
Les statistiques en jeu des joueurs doivent également êtres possibles de manière flexible.
-
-
3- La GameAPI
-
La GameAPI est une API destinée à développer des jeux très simplement. Elle contient un système d’équipes, un système de GameState, la boucle de jeu, le lobby d’accueil, ainsi qu’une multitude de class utils (fournies par notre équipe sauf exceptions), un système de boutique (juste savoir de quels items/kits/avantages le joueur dispose, l’achat se fera sur le Hub), système de téléchargements des maps sur un repo de maps privés, et de la gestion de la configuration en fonction des maps, avec un fichier json par map qui sera disponible dans le dossier de la map ce système permettra d’obtenir une configuration adéquate par rapport à la map système de spectator, et système de mode modération, cela afin de développer des jeux de manière très simple et rapide.
-
-
4- Le core.
-
Le core est un plugin qui aura toutes les fonctionnalités de base, à savoir :
-
- Commandes de sanctions
-
- Gestions des permissions
-
- Gestion des grades
-
- Toutes commandes qui semblent utiles au vu du développeur
-
- Commandes de /party
-
- Gestion des amis
-
- Commandes de modération
-
- Système de report et report chat
-
- Gestion des files d’attente coté joueur.
-
-
5- Travail attendu
-
Il est attendu la réalisation de ce qui est décrit ci-dessus sous la forme suivante :
-
- Jar exécutable contenant le système de serveurs à la demande
-
- Jar API ne contenant quasiment que des Abstract/interfaces.
-
- Jar Core contenant les fonctionnalités de celui-ci
-
- Jar ProxyCore contenant tout le code nécessaire au fonctionnement des proxy.
-
- Jar GameAPI contenant cette dernière
-
- Il est également attendu les dossier maven, afin de les héberger sur le serveur maven de l’équipe de développement
-
- Le code source de tout le système