- Serveur Privé Lineage2
-
Serveur Privé Lineage2
A ce jour il existe trois types de données afin de lancer un serveur Lineage II: L2J (Java), L2officiel et L2c (C# ou C++). Nous nous pencherons donc sur chacune d'entre elles. Il faut rappeler qu'un serveur privé est autorisé ou non selon la législation du pays hébergeant, ou du moins il n'est pas interdit du fait que la législation n'est pas à jour avec les nouvelles technologies, et que donc la propriété d'un programme reste floue dans les législations européennes.
Sommaire
L2J
Le L2J, ou L2Java, utilise le langage de programmation java, la communauté de développement du L2J est assez homogène et dépend de 2 à 3 grands projets inter connectés. Celles-ci développent le code source du L2J, et le partagent publiquement en raison de son statut d'open source. Les administrateurs de serveurs n'ont plus qu'à télécharger et installer gratuitement l'émulateur sur leur serveur: c'est la raison de l'existence d'un si grand nombre de serveurs privés Lineage2.
Avantages du L2J
L2J a de grands avantages:
- Facilité de modification des données : le java n' étant pas un langage de bas niveau, n'importe qui peut l'apprendre facilement si toutefois il a de bonne notions de développement objet.
- L2J peut fonctionner sur n'importe quelle machine x86 ou x64 sous les OS les plus connus, notamment Windows et Linux.
- Tous les programmes nécessaires à l'utilisation du L2J sont gratuits.
- N'importe qui peut lancer son serveur en local afin de tester ce qu'il désire.
- De plus le L2J est rentré dans le cadre légal des serveurs privés car jouer sur un serveur L2J ne nécessite pas de modifier le client initial. ( Cependant, détourner un client Lineage2 afin de se connecter a un serveur non officiel va a l'encontre de l'EULA ).
Désavantages du L2J
Les serveurs L2J connaissent des limites:
- Un plancher : au delà de 500 joueurs, le serveur peut sous certaines conditions devenir instable, la possibilité d'un crash devient probable.
- Un maximum : au delà de 1200, il devient totalement instable et plante. Un crash entraîne parfois des dégâts dans la base de donnée souvent fatals pouvant obliger l'administrateur, dans les cas extrêmes, à tout effacer.
Depuis la création du projet L2J, il existe un grand débat afin d'expliquer cette instabilité. Une majorité dénoncent la façon dont le serveur a été programmé (mal optimisé): en effet le L2J, du Core aux plus petites fonctionnalités, connait d'innombrables petites irrégularités (code mal agencé, des vérifications inutiles, mauvaise hiérarchie) qui, avec un grand nombre de joueurs, les amplifieraient ce qui rendrait le serveur totalement instable. Cette critique est de moins en moins valable, du fait d'une part de l'amélioration intensive du code source par l'équipe L2J depuis 2007, et d'autre part l'arrivée de processeurs toujours plus puissants, et d'une ram de plus en plus bon marché.Une minorité, pointe du doigt le langage de programmation lui-même et ses ressources. Cet argument est difficilement recevable, java étant principalement utilisé pour des serveurs d'application à très forte charge en entreprise quand php atteins ses limites.
Une lecture rapide du code indique que l'architecture s'organise principalement autour d'un "parser" de trame pour interpréter les échanges client serveur et moins sur les problématiques de multithreading et d'isolation des requêtes pour gérer la montée en charge.
Au final, on a observé une augmentation du plancher du nombre de joueur, il était à 200 joueurs au début et est de 500-600 aujourd'hui. Néanmoins, les grands records de joueurs en ligne n'ont pas augmenté depuis quelques années, peu de serveurs peuvent se vanter d'avoir dépassé les 1000 joueurs sans crash.
Note sur les Serveurs Privés L2J
N'importe qui peut lancer son serveur L2J, ce qui rend la communauté des serveurs privés L2J totalement hétérogène: d'un coté les professionnels qui développent les applications java et repoussent toujours un peu plus les limites du L2J, et de l'autre les amateurs qui se contentent d'apprendre à lancer un serveur, à attirer des joueurs sans savoir comment fonctionne le serveur en lui-même, ce qui fait que l'on observe une grande quantité de serveurs L2J privés, dont 90% d'entre eux sont peu peuplés et très mal gérés.
Certains administrateurs préfèreront modifier le fichier host ce que permettra de pouvoir changer de serveur facilement et sans inconvénients, d'autres au contraire modifieront le fichier l2.exe et l2.ini à l'aide de l2encdec ainsi que divers fichiers system.
Le L2 Officiel
L2Officiel est un dérivé du terme français L2Official ou L2Retail, qui désigne les données SQL et exécutables que NCsoft a développés.
En 2004, NCsoft et son équipe de développeurs travaillent sur un projet: Lineage II. Ce projet était gardé sur un FTP, permettant par hasard à un utilisateur chinois de récupérer les précieuses données Lineage II Prelude.
Bien plus tard en 2006, des rumeurs circulent concernant une possible vente par NCsoft de ses données Chronicle 4 à 15000$ USD, dont PvPX a fait l'acquisition plus tard. Dans le même temps, un développeur coréen de NCsoft donne une version non finie du serveur Lineage II chronicle 4 qui sera diffusées.
Bien que connu parmi le monde, le L2Off n'a pas de site officiel de développement, à part en Russie avec la communauté Storm, pour la simple raison que la légalité d'un serveur type officiel est facilement contestable.
Le Pack Prelude Chronicle 0/1
Le pack pris sur le ftp contenait ceci: des applications faites pour fonctionner sous Windows exclusivement, ces données étaient compilées pour un environnement X86. Ce pack s'accompagnait des applications telles que l'Authentification (notée L2authD), l'application gérant le serveur ( notée L2server ), l'enregistreur d'actions qui est resté pendant longtemps incompris (noté L2LogD ), l'enregistreur de données au sein de la base de donnée SQL, appelé à mauvais escient pendant longtemps le 'server item' ou serveur objets ( noté L2cache ), et enfin le serveur PNJ ( noté L2NPC ). D'autres applications existaient aussi dedans, comme celle qui gérait l'autoreboot des serveurs en cas de Crash (informatique), ou encore un fameux Décompilateur, qui s'occupait de décompiler une syntaxe propre à NCsoft proche de l'Assembleur dans un langage plus lisible appelé NASC, dans un style semblable au C (langage).
Cependant cette version du serveur ne supportait que 2 clients: Chronicle 0: Prelude et Chronicle 1. Le problème s'est alors posé de comment adapter le serveur actuel pour qu'il puisse interagir avec un client C2. La difficulté de la tâche a été assez simple, une modification du l2server.ini pour accepter une protocole version différente et les serveurs dit C1 sont alors faussement passés en C2, mais finalement le server était toujours C1 car les add-ons C2 étaient pour la plupart absents (nouvelles régions absentes, nouveaux NPC absents etc).
Il a fallu attendre la sortie du Chronicle 3, pour que les communautés songent à utiliser d'autres méthodes d'adaptation que par un Éditeur hexadécimal, notamment par l' écriture d'extensions en C++, mcrabben développe ainsi le dernier extender connu pour le pack C0 [1]
Les Extensions x86
Un Extender a été le nom adopté par les communautés pour désigner une DLL. Cette dll est censée changer certains paramètres déjà présents du L2server, voire étendre le code initial, d'où son nom Extender. De nombreux projets sous environnement x86 ont vu le jour. Le plus connu pour le pack Prelude fut celui de Ezme, de Chine qui a réalisé jusqu'en mi 2006 un extender C4 vendus sur internet.
Ainsi, les dll venaient compléter les exploits du L2server, notamment celui de 'Buff exploit', de Packet Flood. Elles pouvaient être écrites en C++ ou en Delphi, ces deux langages étant appropriés pour leurs dynamités.
Le Chronicle 4 Pack
En 2006, un nouveau "leak" apparait dans les forums de développement privé. Tout droit sorti de NCsoft qui n'utilisait plus cette version, un employé de NCsoft l'avait alors transmise à toutes les communautés mondiales. Peu de bugs, complet, ce pack a totalement révolutionné la communauté de Lineage II. Déjà par sa nouvelle architecture, un serveur privé utilisant les données C1 ne peut dépasser 1500 joueurs en ligne sans avoir de gros lags, voir crashs. Dorénavant, l'architecture de l'application du L2server.exe et du L2npc.exe sont en 64bits. La sortie de MSSQL 2005 x64 permet ainsi d'obtenir une optimalité des serveurs privés du point de vue de la stabilité.
Cypher développe et partage dans le même temps avec l'aide de toute la communauté Lineage2 l'AmpeD. Un fichier .dll qui se lie avec le L2server.exe afin de bloquer des mauvais paquets qui pourraient être utilisés par des programmes illégaux afin de tricher. Le système d'AmpeD est assez simple, il s'occupe de gérer la réception et l'émission des packets pour contrer les failles présentes dans le code initial de NCsoft. Ce projet d'AmpeD s'est terminé en novembre 2006 et depuis des version modifiées non officielles circulent entre les communautés.
Fr3d3r de L2CR et SL2 développe le projet 64xDepmA (ampedx64 a l'envers), qui consiste à régler les incohérences du code de NCsoft et à régler de nouveaux exploits comme l'adena dupe, et gère aussi certains packets comme le fait AmpeD. Cette extension est utilisée parallèlement à AmpeD et se complètent. On peut reconnaitre facilement un serveur utilisant cet extension par la présence au moment de la connexion au jeu par la phrase "This Server is protected by 64xDepmA"
De grands défis s'élèvent pour les communautés de développement existantes, comme PostPacific et 99nets, pour adapter l'actuel serveur basé C4 pour accepter un client C5, Interlude, Kamael prochainement. Un autre enjeu est la maîtrise du GameGuard, en effet cette protection de NCsoft contre une majeure partie des programmes de hacking n'est pas fonctionnel sur les serveurs privés, et donc potentiellement dangereux.
Les extensions x64
Depuis fin 2006, Ezme est revenu parmi les communautés avec un nouvel Extender, cette fois-ci en 64bits, afin de pouvoir étendre un serveur initialement C4 vers Interlude. Muni cette fois-ci de la technologie du Bake Ice, Ezme peut désormais maîtriser le GameGuard initialement développé par NCsoft afin de contrer les programmes de triches comme le L2walker, et surtout hlapex. Cependant le Bake Ice sera très vite 'by passed' par les communautés de L2walkers. Le source code du projet d'Ezme a été leaked, on peut y noter une combinaison de l'assembleur et du C++ dans sa manière de rédiger. Cependant ce code ne peut être directement utilisé, car il n'inclut aucune protection contre le hacking comme le faisait AmpeD.
A noter, le Bake Ice est une révision de l'authd fait par NCsoft, mais qui utilise une encryption des packets afin de bloquer les outils les plus élémentaires de hacking et du packet sniffing comme hlapex, l2sphx. Du côté du client on y retrouve un launcher bake_ice qui se lie selon la configuration de ce dernier à l'engine.dll et au L2.exe du Client. Ceci va donc à l'encontre du EULA édité par NCsoft précisant la non altération de son client Lineage II.
Ces dll sont donc beaucoup plus élaborées et prennent plus en compte la stabilité des serveurs en utilisant des langages les plus proches des processeurs avec l'assembleur x64 combiné avec du C++.
Avantages et désavantages du L2off
Les désavantages du L2off sont simples: une incapacité ou une difficulté extrême à faire évoluer le jeu en l'adaptant à de nouveaux chronicles. Mais dans le même temps le retour de l'extender signifie un retour du leadership des serveurs L2 vers le L2off, car depuis maintenant 2006, le L2J domine la scène des serveurs privés Lineage II. L'extrême stabilité liée au 64bits rend le L2server totalement stable et puissant, et depuis un an maintenant qu'il est partagé et étudié, des décompileurs et autres programmes rendent son développement toujours plus simple.
De plus, trouver des hébergeurs qui proposent un environnement Windows x64 comme XP, 2003 ou Vista ainsi que suffisamment de ram est aussi difficile.
Depuis 2007, les développeurs des extenders les plus connus maîtrisent maintenant le C++, MASM x64, pouvant régler les plus gros exploits des serveurs privés. La connaissance du client par les développeurs leur permet aussi de pouvoir réaliser des extensions du L2.exe et de l'engine.dll pour bloquer de mieux en mieux les exploits et les programmes de triche.
L2c
Différents émulateurs Lineage II ont vu le jour, il n'existe pas actuellement de versions fonctionnelles aussi élaborée que le L2J et le L2Off pour le moment.
L2Adena (L2C++)
L2adena est un émulateur pour serveur Lineage 2, écrit en C++ et sous licence GPL[2]. Bigcheese, auteur de la quasi-totalité du code C++ de ce projet, met à profit une grande partie du travail de reverse-engineering de l'équipe L2J tout en cherchant à constituer une base documentaire plus exhaustive sur le protocole de communication client/serveur de Lineage 2[3]. Bigcheese a déclaré que sa motivation pour démarrer un projet si ambitieux est qu'il voyait en le C++ un langage plus à même de convenir aux besoins de performances d'un serveur de MMORPG même avec un nombre important de clients connectés.
Depuis août 2007, le code n'évolue plus[4], Bigcheese a exprimé le besoin de construire un vrai design avant de poursuivre les développements[5]. À ce jour le projet est encore à un stade embryonnaire.
L2C#
Le L2C# est un projet d'écriture d'un émulateur, mais qui n'a pas encore vu le jour, actuellement la communauté PostPacific possède un section dédiée au développement du L2C#. Seul L2paradise a entrepris un sérieux projet d'écriture d'un émulateur en C#.
Voir aussi
Références
- ↑ Project extension C++ en anglais
- ↑ description traduite du FAQ L2Adena
- ↑ documentation du protocole sur le wiki L2Adena
- ↑ liste des commits du repository subversion L2Adena
- ↑ poste forum L2Adena : Complete server redesign
Liens internes
Liens externes
- (en) Lineage2.com : le site officiel.
- (en) RageZone : un site de développement du L2J & L2off et L2adena.
- (en) PostPacific : Le site leader du développement du L2off.
- (en) L2J DataPack : Le site de développement du L2J.
- (fr) Site officiel Européen
- Portail du jeu vidéo
Catégories : Lineage | Jeu en ligne massivement multijoueur
Wikimedia Foundation. 2010.