blog:installer_un_serveur_daoc_sous_linux

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
blog:installer_un_serveur_daoc_sous_linux [2021/05/01 16:08] benblog:installer_un_serveur_daoc_sous_linux [2024/08/13 13:31] (Version actuelle) ben
Ligne 1: Ligne 1:
 +<note warning>Doc plus à jour</note>
 +
 ====== Installer un serveur DAoC sous Linux ====== ====== Installer un serveur DAoC sous Linux ======
  
-Les infos contenues dans cet article fonctionnent avec Ubuntu 20.04. Le moteur de serveur de jeu utilisé est développé en C#. Il faut donc installer un environnement mono suffisamment récent et à jour pour le faire fonctionner. On va voir ici les étapes pour faire fonctionner tout ce bazar. On aura besoin des composants ci-dessous :+Les infos contenues dans cet article ont été testées avec Ubuntu 20.04. Le moteur de serveur de jeu utilisé est développé en C#. Il faut donc installer un environnement mono suffisamment récent et à jour pour le faire fonctionner. On va voir ici les étapes pour faire fonctionner tout ce bazar. On aura besoin des composants ci-dessous :
  
   * base de données : MariaDB   * base de données : MariaDB
-  * framework .NET/C# : [[https://www.mono-project.com/download/stable/#download-lin|mono]]  +  * framework .NET/C# : [[https://www.mono-project.com/download/stable/#download-lin|mono]] 
-  * moteur de jeu : fork de Dawn of Light : [[https://github.com/Los-Ojos/DOLSharp-1127|DOLSharp-1127]] +  * dotnet pour linux : [[https://dotnet.microsoft.com/download/dotnet/5.0|https://dotnet.microsoft.com/download/dotnet/5.0]] 
-  * base de données du jeu (mobs, sorts, etc) : Eve Of Darkness+  * moteur de jeu : Dawn of Light : [[https://github.com/Dawn-of-Light/DOLSharp|DOLSharp]] 
 +  * base de données du jeu (mobs, sorts, etc) : [[https://github.com/Eve-of-Darkness/db-public|Eve Of Darkness]]
  
 === Packages à installer === === Packages à installer ===
 +<code>
  
-  apt install mono-complete mono-devel git unzip mariadb-server nuget+wget https://packages.microsoft.com/config/ubuntu/21.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb 
 +dpkg -i packages-microsoft-prod.deb 
 +apt-get update 
 +apt-get install mono-complete mono-devel git unzip mariadb-server nuget dotnet-sdk-5.0 
 + 
 +</code>
  
 === Création d'un utilisateur dol dédié : === === Création d'un utilisateur dol dédié : ===
Ligne 25: Ligne 34:
 GRANT SELECT , INSERT , UPDATE , CREATE , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE, DROP, DELETE \ GRANT SELECT , INSERT , UPDATE , CREATE , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE, DROP, DELETE \
  ON `dol` . * TO 'dol'@'%' IDENTIFIED BY 'YourPassword';  ON `dol` . * TO 'dol'@'%' IDENTIFIED BY 'YourPassword';
 +
 </code> </code>
  
 === Import des données : === === Import des données : ===
  
-Plusieurs bases de données sont disponibles, certaines plus ou moins à jour ou fidèles par rapport aux serveurs officiels. Ici on part sur la base Eve of Darkness qui est un énième fork mais qui est plutôt fidèle à ce qu'on trouve sur https://camelot.allakhazam.com/. Je détaille comment récupérer et importer les données, c'est pas forcément très intuitif : +Plusieurs bases de données sont disponibles, certaines plus ou moins à jour ou fidèles par rapport aux serveurs officiels. Ici on part sur la base Eve of Darkness qui est un énième fork mais qui est plutôt fidèle à ce qu'on trouve sur [[https://camelot.allakhazam.com/|https://camelot.allakhazam.com/]]. Je détaille comment récupérer et importer les données, c'est pas forcément très intuitif :
 <code> <code>
 +
 git clone https://github.com/Eve-of-Darkness/db-public.git git clone https://github.com/Eve-of-Darkness/db-public.git
 cd db-public cd db-public
 mv src/scripts/config/config.example.yml src/scripts/config/config.yml mv src/scripts/config/config.example.yml src/scripts/config/config.yml
 cd src/scripts/bin/linux/ cd src/scripts/bin/linux/
-./concat +./concat # ou ./concat --update-only en cas de mise à jour 
-mysql -u dol -p dol < ./public-db.sql+mysql -u dol -p dol <./public-db.sql 
 </code> </code>
  
 === Récupération et compilation du moteur de jeu === === Récupération et compilation du moteur de jeu ===
  
-Encore une fois ce n'est pas forcément très bien documenté et on ne cross-compile pas du C# sous Linux tous les jours. On récupère le fork DOLsharp-1127 qui permet de faire fonctionner les clients les plus récents ( > version 1.124)Si vous souhaitez faire fonctionner des clients plus anciens il faut utiliser le dépôt [[https://github.com/Dawn-of-Light/DOLSharp.]] Celui-ci est peut-être parfois plus à jour mais ne supporte correctement que la version 1.109. +Encore une fois ce n'est pas forcément très bien documenté et on ne cross-compile pas du C# sous Linux tous les jours. On récupère DOLsharp. On utilisera le client [[https://files.ndlp.info/DAoC/DAoC_full.client_1.127c.zip|1.127c]].
- +
-Avant de lancer la compilation, on patche pour permettre aux joueurs d'ouvrir une fenêtre de train à n'importe quel endroit dans le jeuC'est un choix personnel non obligatoire. Le champ à modifier dans la table ServerProperty est allow_train_everywhere (=> valeur : True / False).+
  
 +# Compilation
 <code> <code>
-mkdir work/ 
-git clone https://github.com/Los-Ojos/DOLSharp-1127 
-cd DOLSharp-1127 
-sed -i '/SharpZipLib/a <package id="MySql.Data" version="6.10.9" targetFramework="net45" />' DOLServer/packages.config 
-nuget restore DOLServer/packages.config -SolutionDirectory ./ 
  
-sed -i 's/if (client.Account.PrivLevel == (int)ePrivLevel.Player \&\& (trainer == null || trainer.CanTrain(client.Player) == false))/if (\!DOL.GS.ServerProperties.Properties.ALLOW_TRAIN_ANYWHERE \&\& client.Account.PrivLevel == (int)ePrivLevel.Player)/g' GameServer/commands/playercommands/train.cs +mkdir /home/dol/work 
-sed -i "s/if (client.Account.PrivLevel == (int)ePrivLevel.Player)/if (\!DOL.GS.ServerProperties.Properties.ALLOW_TRAIN_ANYWHERE \&\& client.Account.PrivLevel == (int)ePrivLevel.Player)/g" GameServer/packets/Client/168/PlayerTrainRequestHandler.cs +cd /home/dol/work 
-sed -i '/BACKUP_DELETED_CHARACTERS//// <summary>\n/// Allow players to /train without having a trainer present\n/// </summary>\n[ServerProperty("classes", "allow_train_anywhere", "Allow players to use the /train command to open a trainer window anywhere in the world?", true)]\npublic static bool ALLOW_TRAIN_ANYWHERE { get; set; }' GameServer/serverproperty/ServerProperties.cs+git clone https://github.com/Dawn-of-Light/DOLSharp.git 
 +cd DOLSharp 
 +nuget restore -SolutionDirectory ./ 
 + 
 +for i in DOLBase DOLDatabase GameServer DOLServer Tests GameServerScripts DOLConfig 
 +do 
 +mkdir -p /home/dol/work/DOLSharp/build/$i/Release 
 +ln -sf /home/dol/work/DOLSharp/build/$i/project.assets.json /home/dol/work/DOLSharp/build/$i/Release/project.assets.json 
 +done
  
-# Compilation 
 MONO_IOMAP=case msbuild /p:Configuration=Release "Dawn of Light.sln" MONO_IOMAP=case msbuild /p:Configuration=Release "Dawn of Light.sln"
-ln -/home/dol/work/DOLSharp-1127/Release /home/dol/live+ln -sf /home/dol/work/DOLSharp/Release /home/dol/live 
 </code> </code>
  
 On créé un lien symbolique vers le moteur compilé, c'est plus simple. Lors de la première compilation il est normal d'avoir des erreurs. Avant la première exécution du moteur il faut créer un répertoire config avec le fichier serverconfig.xml dont voici le contenu ci-dessous. Les paramètres importants sont : On créé un lien symbolique vers le moteur compilé, c'est plus simple. Lors de la première compilation il est normal d'avoir des erreurs. Avant la première exécution du moteur il faut créer un répertoire config avec le fichier serverconfig.xml dont voici le contenu ci-dessous. Les paramètres importants sont :
  
-//EnableUPNP// qui doit être à False ; +  * //EnableUPNP//  qui doit être à False ; 
-la chaîne //DBConnectionString// qui doit contenir les infos de connexion à la base de données. Le DBType est quant à lui positionné à MySQL (bien qu'on utilise MariaDB).+  la chaîne //DBConnectionString//  qui doit contenir les infos de connexion à la base de données. Le DBType est quant à lui positionné à MySQL.
  
 <code> <code>
Ligne 99: Ligne 112:
  </Server>  </Server>
 </root> </root>
 +
 </code> </code>
  
Ligne 116: Ligne 130:
 UPDATE `dol`.`ServerProperty` SET `Value`='0.75' WHERE `Key`='mana_regen_rate'; UPDATE `dol`.`ServerProperty` SET `Value`='0.75' WHERE `Key`='mana_regen_rate';
 UPDATE `dol`.`ServerProperty` SET `Value`='True' WHERE `Key`='allow_train_everywhere'; UPDATE `dol`.`ServerProperty` SET `Value`='True' WHERE `Key`='allow_train_everywhere';
 +
 </code> </code>
  
Ligne 121: Ligne 136:
  
 <code> <code>
-cd /home/dol+cd /home/dol/live
 mono --debug --gc=sgen --server ./DOLServer.exe mono --debug --gc=sgen --server ./DOLServer.exe
 +
 </code> </code>
  
Ligne 132: Ligne 148:
 [11:04:11,906] base.Start(): True [11:04:11,906] base.Start(): True
 [11:04:11,909] Finish Memory base.Start(): 1537MB [11:04:11,909] Finish Memory base.Start(): 1537MB
-[11:04:12,670] GameServer is now open for connections! +[11:04:12,670] GameServer is now open for connections!> [11:04:21,765] -stats- Mem=1140MB Clients=0 Down=0kb/s (0MB) Up=0kb/s (0MB) In=0pck/s (0K) Out=0pck/s (0K) Pool=199/200(2) IOCP=200/200(2) GH/OH=39/1078 RegionTime1=14775t/s (1133) CPU=0.0% 
-> [11:04:21,765] -stats- Mem=1140MB Clients=0 Down=0kb/s (0MB) Up=0kb/s (0MB) In=0pck/s (0K) Out=0pck/s (0K) Pool=199/200(2) IOCP=200/200(2) GH/OH=39/1078 RegionTime1=14775t/s (1133) CPU=0.0%+
 </code> </code>
  
 === Connexion au serveur === === Connexion au serveur ===
  
-Pour se connecter au serveur créé, il est nécessaire de lancer le jeu via [[https://files.ndlp.info/DAoC/DAoC%20Portal_May2021.7z|Daoc Portal]] après avoir récupéré le client DAoC officiel : [[https://darkageofcamelot.com/sites/daoc/files/downloads/DAoCSetup.exe]]+Pour se connecter au serveur créé, il est nécessaire de lancer le jeu via [[https://files.ndlp.info/DAoC/DAoC%20Portal_May2021.7z|Daoc Portal]] après avoir récupéré le client DAoC officiel : [[https://files.ndlp.info/DAoC/DAoC_full.client_1.127c.zip|https://files.ndlp.info/DAoC/DAoC_full.client_1.127c.zip]]
  
-=> La version de la dll game.dll requise est : 1.127+⇒ La version de la dll game.dll requise est : 1.127
  
 === Ressources utilisées dans cet article === === Ressources utilisées dans cet article ===
  
-http://www.dolserver.net/\\ +[[http://www.dolserver.net/|http://www.dolserver.net/]] \\ 
-https://github.com/Dawn-of-Light/DOLSharp\\ +[[https://github.com/Dawn-of-Light/DOLSharp|https://github.com/Dawn-of-Light/DOLSharp]] \\ 
-https://github.com/Los-Ojos/DOLSharp-1127\\ +[[http://losojos-001-site1.btempurl.com/Index.html|http://losojos-001-site1.btempurl.com/Index.html]] : site down , mirror dispo ici : [[https://daoc.ndlp.info/losojos-001-site1.btempurl.com/Index.html|https://daoc.ndlp.info/losojos-001-site1.btempurl.com/Index.html]] \\ 
-http://losojos-001-site1.btempurl.com/Index : site down , mirror dispo ici : https://daoc.ndlp.info/losojos-001-site1.btempurl.com/\\ +[[https://files.ndlp.info/DAoC/|https://files.ndlp.info/DAoC/]]
-https://files.ndlp.info/DAoC/\\+
  
 Un serveur DAoC est disponible à cette adresse : daoc-gs.ndlp.info:10300 Un serveur DAoC est disponible à cette adresse : daoc-gs.ndlp.info:10300
 +
  
  • blog/installer_un_serveur_daoc_sous_linux.1619885306.txt.gz
  • Dernière modification : 2021/05/01 16:08
  • de ben