From aac465776047e585a8b832481b1d7521080a741f Mon Sep 17 00:00:00 2001 From: Mind Rapist Date: Thu, 5 Feb 2026 00:36:20 +0200 Subject: [PATCH] MR-9: Instructions in README --- README.md | 766 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 765 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33966c1..842292c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ -# Server Repository +# M2Dev Server This repository contains the core server files and configurations. It includes fixes for database performance, quest logic, and crucial setup scripts. +**For installation and configuration, see [instructions](#installationconfiguration) below.** + --- ## 📋 Changelog @@ -35,3 +37,765 @@ This repository contains the core server files and configurations. It includes f * Added all translations strings for all languages (some translations may be incomplete, look for English-translated strings in translate_XX.lua/locale_string_XX.lua) * **Dead/Wounded Soldier NPCs added:** Added Dead/Wounded Soldier NPCs in Fireland and Snow Mountain as well as the Wounded Soldier NPC in Nemere's Watchtower (stage 6) * **Dungeon Entry Men updated:** Updated the Dungeon Entry Men's rotations and added correctly rotated Barricade NPCs around them, outside Nemere's Watchtower and Purgatory dungeon entrances + +
+
+ +--- + +
+
+ +# Installation/Configuration +If everything is done right in the setup and build of the [Server Source](https://github.com/d1str4ught/m2dev-server-src), this process should be quick and easy! If you haven't yet setup your Server Source, **now is the chance to do so as it is a required step to continue!** + +Below you will find a comprehensive guide on how to configure all the necessary components from scratch. + +This guide is made using a **Windows** environment as the main environment and showcases both **Windows** and **FreeBSD** (virtual machine) implementation. If you are not using Windows, please feel free to **adapt these instructions for your operating system**. + +This guide also uses the latest versions for all software demonstrated as of its creation date at February 4, 2026. + +© All copyrights reserved to the owners/developers of any third party software demonstrated in this guide other than this project/group of projects. + +
+ +### 📋 Order of projects configuration +If one or more of the previous items is not yet configured please come back to this section after you complete their configuration steps. + +> - ✅ [M2Dev Server Source](https://github.com/d1str4ught/m2dev-server-src) +> - ▶️ [M2Dev Server](https://github.com/d1str4ught/m2dev-server)    [**YOU ARE HERE**] +> - ⏳ [M2Dev Client Source](https://github.com/d1str4ught/m2dev-client-src) +> - ⏳ [M2Dev Client](https://github.com/d1str4ught/m2dev-client)    [**ALSO CONTAINS ADDITIONAL INFORMATION FOR POST-INSTALLATION STEPS**] + +
+ +### 🔀 Available options +The source and the server project can be ran in either a **FreeBSD** or a **Windows** environment. Other Linux flavors are not fully supported and may not be fully compatible yet. + +This tutorial will be showing how to install in both FreeBSD and Windows environments. + +
+ +## ![FreeBSD](https://metin2.download/picture/36rMX2LFRT3U8qlPNQ81nsPZ7F4yg4c3/.png) **FreeBSD** + +### ⬇️ Obtaining the Serverfiles + +First things first, find a folder of your choosing where you will be cloning the Serverfiles project (server). In your terminal, `cd` into that location and download the project using `git`. + +
+ + Here's how + + +
+ + > + >
+ > + > + > This example will use `/usr/home/game` as the working directory. + > + > Execute these commands: + > + > ``` + > mkdir /usr/home/game + > cd /usr/home/game + > git clone https://github.com/d1str4ught/m2dev-server.git . + > ``` + > Mind the `.` in the end of the last command. + > + > With the `.`, the project will be cloned right in `/usr/home/game`, while without it, it will be cloned as `/usr/home/game/m2dev-server`. + > + > This is just a preference, either way is fine. + > + >
+ > + > ### ✅ You have successfully obtained the Serverfiles project! + > + >
+ > +
+ +
+ +### 🛻 Getting everything in the right place + +Before getting into the actual configuration of the files, it is very important that you get your **compiled binaries** into the right places. + +**If you haven't compiled the Server Source yet, you should pause here, compile everything and come back to this point**! + +
+ + After your builds are done + + +
+ + > + >
+ > + > What you need to do is distribute the built binaries in their respective locations within the **Server** project and assign full system permissions (`0777`). You will find the built binaries in the `server-src/build` folder: + > - game + > - db + > - qc + > + > First, `cd` into that directory and then execute these commands (**replace the directories with your own structure!!!**): + > + > ``` + > cd /usr/home/src/build/bin + > + > cp ./game /usr/home/game/share/bin/game + > chmod 777 /usr/home/game/share/bin/game + > + > cp ./db /usr/home/game/share/bin/db + > chmod 777 /usr/home/game/share/bin/db + > + > cp ./qc /usr/home/game/share/locale/english/quest/qc + > chmod 777 /usr/home/game/share/locale/english/quest/qc + > ``` + > **Note**: For `qc`, replace `english` with your locale if you have changed it. + > + >
+ > + > #### You should now have the following files in their respective directories with full system permissions assigned: + > - `/usr/home/game/share/bin/game` + > - `/usr/home/game/share/bin/db` + > - `/usr/home/game/share/locale/english/quest/qc` + > + >
+ > + > ### ✅ You have distributed your built binaries to their destination directories! + > + >
+ > +
+ +
+ +### 🛠️ Building the quests + +This step is gonna be extremely easy and most of you are very familiar with it. + +
+ + Here's what to do + + +
+ + > + >
+ > + > First, `cd` into the destination directory of your `qc` built binary: + > ``` + > cd /usr/home/game/share/locale/english/quest + > ``` + > + > Next, run the `make.py` file to execute the `qc` and build all your quests: + > + > ``` + > python make.py + > ``` + > + > **WARNING**: You need to **first `cd` into the quests folder** before executing the `make.py` script! + > Commands like: + > ``` + > python /usr/home/game/share/locale/english/quest/make.py + > ``` + > **will result in errors!** + > + > This happens because when you `cd` in a folder you are changing the `cwd` (current working directory). If your `cwd` is not the `quest` folder, the `make.py` script will not be able to find your quests and hence, an error will appear. + > + >
+ > + > After `qc` has done its job, your terminal should be looking like this: + > + > ![](https://metin2.download/picture/gwaw4iO2uCpl4No6C1w3ewvuu4FqsqwA/.png) + > + >
+ > + > ### ✅ You have successfully built the quests! + > + >
+ > +
+ +
+ +### 📊 Importing the databases and tables + +If you've configured your database correctly in the Server Source part and you can successfully connect to your root account with your terminal or/end your database management software (Navicat), then this process is gonna be very easy. + +
+ + The process + + +
+ + > + >
+ > + > There's 5 different databases that you need to import into your MariaDB/MySQL Server: + > - `account` + > - `common` + > - `hotbackup` (empty database, needs to simply exist) + > - `log` + > - `player` + > + >
+ > + > You have 2 options to import these databases and their tables + > + > #### **1. Terminal** + > First, you need to create the 5 databases before importing their tables and data. + > + > In your terminal type these commands: + > + > ``` + > CREATE DATABASE account; + > CREATE DATABASE common; + > CREATE DATABASE player; + > CREATE DATABASE log; + > CREATE DATABASE hotbackup; + > exit; + > ``` + > + >
+ > + > Next, in your `/usr/home/game/sql` (or wherever you installed the serverfiles) you have some `*.sql` files (`account.sql`, `common.sql`, etc...). + > + > You can use these files to import everything with a simple command. + > + > First `cd` into the `/sql` folder: + > + > ``` + > cd /usr/home/game/sql + > ``` + > + > and then: + > + > ``` + > mysql -u root -p account < account.sql + > mysql -u root -p common < common.sql + > mysql -u root -p log < log.sql + > mysql -u root -p player < player.sql + > ``` + > + >
+ > + > If you open up your MariaDB connection in Navicat, your tables should be now visible! + > + > ![](https://metin2.download/picture/Qnbap61LLK49vi7PJ7uW9kEN42bJq3i1/.png) + > + >
+ > + > #### **2. Navicat (database management software)** + > + > In Navicat, double click your connection to open it. Next, select **New Database...** + > + > ![](https://metin2.download/picture/PCIQDqd3x2q5wdCLg9cFQ0XT0UL77e0b/.png) + > + > A dialog will popup, there enter the name of your database name (e.g., `account`) in **Database Name** and make sure that **Character Set** is set to `utf8mb4` for all cases. + > + > ![](https://metin2.download/picture/1UFgAAZjanT10IW2pTRawj7VrIH61Es4/.png) + > + > Do that for all 5 databases: + > - `account` + > - `common` + > - `hotbackup` + > - `log` + > - `player` + > + >
+ > + > Next, double click in a database to open it. It should turn green. Once it's open, right click on it and select **Execute SQL File...** + > + > ![](https://metin2.download/picture/77faDy05FMqLx9qR2qY9pdHlu0RcgwTu/.png) + > + > A dialog will popup, leave all checkboxes to the default values and click the **...** button to browse through your file system (**the `sql` files need to be downloaded from the VM to your physical drive**) and select the file. Once selected, click **Start** and wait for the process to finish. + > + > ![](https://metin2.download/picture/8yP6ukLyCZJhC9r9v7VSUsd955hGygXM/.png) + > + > Once this pops up, you can click **Close**. + > + > ![](https://metin2.download/picture/mF72tgh77NDiZ200Do8dtZxTeinJ4U29/.png) + > + >
+ > + > Make sure you repeat this process for all created databases (you can skip `hotbackup`) + > + >
+ > + > If you right click and hit **Refresh** in the empty space, you should be seeing all your tables. + > + > ![](https://metin2.download/picture/UC18416z08wb2lL4F9EmUHbcY3jo2HI7/.png) + > + > ![](https://metin2.download/picture/Qnbap61LLK49vi7PJ7uW9kEN42bJq3i1/.png) + > + >
+ > + > ### ✅ You have successfully imported all the game databases and tables! + > + >
+ > +
+ +
+ +### ⚙️ Configuring the server + +If you've done everything right so far, you are ready to turn on the server for the first time. + +
+ + One-step configuration + + +
+ + > + >
+ > + > Simply `cd` to your serverfiles' root directory (e.g., `/usr/home/game` and execute the `install.py` file) + > + > ``` + > cd /usr/home/game + > python install.py + > ``` + > + > You should be seeing this: + > + > ![](https://metin2.download/picture/aO3V8cd0fT9PCS3842DU3wopjRZ9K0m6/.png) + > + >
+ > + > ### ✅ You have successfully installed the serverfiles! + > + >
+ > +
+ +
+ +### 🎮 Starting the server for the first time + +All you need is one command in the terminal. + +
+ +
+ + The command + + +
+ + > + >
+ > + > Simply `cd` to your serverfiles' root directory (e.g., `/usr/home/game` and execute the `start.py` file) + > + > ``` + > cd /usr/home/game + > python start.py + > ``` + > + > Next, select how many channels you would like to start and hit ENTER. + > + > You should be seeing this: + > + > ![](https://metin2.download/picture/AZywompHqZ8OgNgY99Z7S0YOU0k98h0P/.png) + > + >
+ > + > ### ✅ You have successfully started the server! + > + >
+ > +
+ +
+
+ +--- + +
+
+ +## ![Windows](https://metin2.download/picture/kHdjS3dGuooT62j9qmhNCJyZhP69Vq89/.png) **Windows** + +This process will be almost identical to the **FreeBSD** method, only a few little things change here. + +
+ +### 🧱 Software Prerequisites + +
+ + Please make sure that you have installed the following software in your machine before continuing: + + +
+ + >
+ > + > - ![Python](https://metin2.download/picture/PQiBu5Na1ld90rixm0tVgstMxR43OpIn/.png)  **Python**:  The software used to execute python scripts. It is **recommended to ADD TO PATH** at the end of the installation. [Download](https://www.python.org/downloads/) + > + >
+ > + +
+ +
+ +### ⬇️ Obtaining the Serverfiles + +First things first, find a folder of your choosing where you will be cloning the Serverfiles project (server). + +
+ + Here's how + + +
+ + > + >
+ > + > + > Create a new folder in a location of your choosing and open up a command prompt into that folder (or `cd` there). + > + > The, execute this command: + > + > ``` + > git clone https://github.com/d1str4ught/m2dev-server.git + > ``` + > + >
+ > + > ### ✅ You have successfully obtained the Serverfiles project! + > + >
+ > +
+ +
+ +### 🛻 Getting everything in the right place + +Before getting into the actual configuration of the files, it is very important that you get your **compiled binaries** into the right places. + +**If you haven't compiled the Server Source yet, you should pause here, compile everything and come back to this point**! + +
+ + After your builds are done + + +
+ + > + >
+ > + > What you need to do is distribute the built binaries in their respective locations within the **Server** project. You will find the built binaries in the `server-src\build` folder: + > - game.exe + > - db.exe + > - qc.exe + > + > Simply copy them from the `build` folder and into their respective destinations: + > + > - `m2dev-server\share\bin\game.exe` + > + > - `m2dev-server\share\bin\db.exe` + > + > - `m2dev-server\share\locale\english\quest\qc.exe` + > + > **Note**: For `qc`, replace `english` with your locale if you have changed it. + > + >
+ > + > ### ✅ You have distributed your built binaries to their destination directories! + > + >
+ > +
+ +
+ +### 🛠️ Building the quests + +This step is gonna be extremely easy and most of you are very familiar with it. + +
+ + Here's what to do + + +
+ + > + >
+ > + > First, open up a command prompt (or `cd`) into the destination directory of your `qc` built binary. + > + > Next, run the `make.py` file to execute the `qc` and build all your quests: + > + > ``` + > python make.py + > ``` + > + > **WARNING**: You need to **first `cd` into the quests folder** before executing the `make.py` script! + > Commands like: + > ``` + > python C:\m2dev-server\share\locale\english\quest\make.py + > ``` + > **will result in errors!** + > + > This happens because when you `cd` in a folder you are changing the `cwd` (current working directory). If your `cwd` is not the `quest` folder, the `make.py` script will not be able to find your quests and hence, an error will appear. + > + >
+ > + > After `qc` has done its job, your terminal should be looking like this: + > + > ![](https://metin2.download/picture/tks6EXQr8N169RPA3wNatr3dO771mw9g/.png) + > + >
+ > + > ### ✅ You have successfully built the quests! + > + >
+ > +
+ +
+ +### 📊 Importing the databases and tables + +If you've configured your database correctly in the Server Source part and you can successfully connect to your root account with your terminal or/end your database management software (Navicat), then this process is gonna be very easy. + +
+ + The process + + +
+ + > + >
+ > + > There's 5 different databases that you need to import into your MariaDB/MySQL Server: + > - `account` + > - `common` + > - `hotbackup` (empty database, needs to simply exist) + > - `log` + > - `player` + > + >
+ > + > You have 2 options to import these databases and their tables + > + > #### **1. Command Prompt** + > First, you need to create the 5 databases before importing their tables and data. + > + > In your command prompt type these commands: + > + > ``` + > CREATE DATABASE account; + > CREATE DATABASE common; + > CREATE DATABASE player; + > CREATE DATABASE log; + > CREATE DATABASE hotbackup; + > exit; + > ``` + > + >
+ > + > Next, in your `m2dev-server\game\sql` (or wherever you installed the serverfiles) you have some `*.sql` files (`account.sql`, `common.sql`, etc...). + > + > You can use these files to import everything with a simple command. + > + > First, open up a command prompt inside or `cd` into the `\sql` folder and then: + > + > ``` + > 'C:\Program Files\MariaDB 12.1\bin\mariadb.exe' -u root -p account < account.sql + > 'C:\Program Files\MariaDB 12.1\bin\mariadb.exe' -u root -p common < common.sql + > 'C:\Program Files\MariaDB 12.1\bin\mariadb.exe' -u root -p log < log.sql + > 'C:\Program Files\MariaDB 12.1\bin\mariadb.exe' -u root -p player < player.sql + > ``` + > **Make sure you use your own installation path.** + > + >
+ > + > If you open up your MariaDB connection in Navicat, your tables should be now visible! + > + > ![](https://metin2.download/picture/Qnbap61LLK49vi7PJ7uW9kEN42bJq3i1/.png) + > + >
+ > + > #### **2. Navicat (database management software)** + > + > In Navicat, double click your connection to open it. Next, select **New Database...** + > + > ![](https://metin2.download/picture/PCIQDqd3x2q5wdCLg9cFQ0XT0UL77e0b/.png) + > + > A dialog will popup, there enter the name of your database name (e.g., `account`) in **Database Name** and make sure that **Character Set** is set to `utf8mb4` for all cases. + > + > ![](https://metin2.download/picture/1UFgAAZjanT10IW2pTRawj7VrIH61Es4/.png) + > + > Do that for all 5 databases: + > - `account` + > - `common` + > - `hotbackup` + > - `log` + > - `player` + > + >
+ > + > Next, double click in a database to open it. It should turn green. Once it's open, right click on it and select **Execute SQL File...** + > + > ![](https://metin2.download/picture/77faDy05FMqLx9qR2qY9pdHlu0RcgwTu/.png) + > + > A dialog will popup, leave all checkboxes to the default values and click the **...** button to browse through your file system (**the `sql` files need to be downloaded from the VM to your physical drive**) and select the file. Once selected, click **Start** and wait for the process to finish. + > + > ![](https://metin2.download/picture/8yP6ukLyCZJhC9r9v7VSUsd955hGygXM/.png) + > + > Once this pops up, you can click **Close**. + > + > ![](https://metin2.download/picture/mF72tgh77NDiZ200Do8dtZxTeinJ4U29/.png) + > + >
+ > + > Make sure you repeat this process for all created databases (you can skip `hotbackup`) + > + >
+ > + > If you right click and hit **Refresh** in the empty space, you should be seeing all your tables. + > + > ![](https://metin2.download/picture/UC18416z08wb2lL4F9EmUHbcY3jo2HI7/.png) + > + > ![](https://metin2.download/picture/Qnbap61LLK49vi7PJ7uW9kEN42bJq3i1/.png) + > + >
+ > + > ### ✅ You have successfully imported all the game databases and tables! + > + >
+ > +
+ +
+ +### ⚙️ Configuring the server + +If you've done everything right so far, you are ready to turn on the server for the first time. + +
+ + One-step configuration + + +
+ + > + >
+ > + > Simply `cd` to your serverfiles' root directory (e.g., `/usr/home/game` and execute the `install.py` file) + > + > ``` + > cd /usr/home/game + > python install.py + > ``` + > + > You should be seeing this: + > + > ![](https://metin2.download/picture/FUw4UHgCtw3jWhXMt1R4eQiP35lyYExm/.png) + > + >
+ > + > ### ✅ You have successfully installed the serverfiles! + > + >
+ > +
+ +
+ +### 🎮 Starting the server for the first time + +All you need is one command in the terminal. + +
+ +
+ + The command + + +
+ + > + >
+ > + > Simply `cd` to your serverfiles' root directory (e.g., `/usr/home/game` and execute the `start.py` file) + > + > ``` + > cd /usr/home/game + > python start.py + > ``` + > + > Next, select how many channels you would like to start and hit ENTER. + > + > You should be seeing this: + > + > ![](https://metin2.download/picture/UI3buNyVBo5vTtT21Y9BQG2EIc56DRYX/.png) + > + >
+ > + > ### ✅ You have successfully started the server! + > + >
+ > +
+ +
+
+ +--- + +## Basic server management scripts +Below is a little list of what the scripts inside the root folder of the project do. The names are pretty self-explanatory but here they are anyway: + + - `start.py` starts the selected number of channels + - `stop.py` stops all channel instances and the database + - `install.py` installs the channels and links the folders inside `share` to each channel core + - `clear.py` clears all logs from every channel core (`pid.json`, `syserr.log`, `syslog.log`, any `.core` files as well as the `log` folder) + - `channels.py` dependency of `install.py`, running it doesn't do anything + - `perms.py` (Linux only) assigns full permissions to the binaries (`game`, `db` and `qc`) + +
+
+ +--- + +
+
+ +## Recap +After finishing this part, you should now have knowledge of: + + - The base structure of the serverfiles + - Creating and populaing MariaDB databases and tables through `sql` scripts using the terminal/command line or Navicat's interface + - Building the quests + - Managing the server (starting/stopping/clearing/installing) + +
+ +## 🔥 Your server is now live! + +
+ +## Next steps +After following either the **FreeBSD** method or the **Windows** method, you should be ready to proceed to cloning, building and distributing the [Client Source project](https://github.com/d1str4ught/m2dev-client-src) + +⭐ **NEW**: We are now on Discord, feel free to [check us out](https://discord.gg/ETnBChu2Ca)! \ No newline at end of file