Skip to content

MindRapist/m2dev-server

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

94 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

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 below.


๐Ÿ“‹ Changelog

๐Ÿ› Bug Fixes

  • Dragon stone antiflags: Dragon stone items with grade between Rough and Rare are no longer tradable, droppable or sellable (consistency with the official).
  • Dragonsoul Qualification: Minimum level hardcoded in the checks for qualification.
  • Item Proto: Some affect item values adjusted, minor translation improvements





Installation/Configuration

If everything is done right in the setup and build of the Server Source, 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.


๐Ÿ”€ 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 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:


โœ… 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!


2. Navicat (database management software)

In Navicat, double click your connection to open it. Next, select New Database...

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.

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...

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.

Once this pops up, you can click Close.


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.


โœ… 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:


โœ… 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:


โœ… You have successfully started the server!







Windows 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ย ย Python:ย ย The software used to execute python scripts. It is recommended to ADD TO PATH at the end of the installation. Download


โฌ‡๏ธ 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:


โœ… 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!


2. Navicat (database management software)

In Navicat, double click your connection to open it. Next, select New Database...

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.

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...

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.

Once this pops up, you can click Close.


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.


โœ… 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:


โœ… 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:


โœ… 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

โญ NEW: We are now on Discord, feel free to check us out!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Lua 99.9%
  • Other 0.1%