Latest v5.2

Everything you need.
Nothing to add.

Client, server, every line of source, the 2014 locale and 15 languages. Yours forever.

5+ years in development · 32-bit & 64-bit · DirectX 9Ex
In game

See it running.

5+
Years in development
x64
And 32-bit, both maintained
15
Languages in the box
Updates and support, free forever
Pick your build

One payment. Yours forever.

No subscription. No tiers. No upgrade fee.

All of it. Included.

Nothing to buy twice.

One price, and nothing else to buy afterwards.

Built modern

Rebuilt on a
current toolchain.

32-bit & 64-bit

Both maintained. The 64-bit build ran live for three years before it went on sale.

C++20 everywhere

clang 22 on FreeBSD, MSVC v145 on Windows. Same sources, no edits.

DirectX 9Ex

Half the memory, proper device-loss handling, zero hand-patched libraries.

Before you write a line

I will set up your working environment.

Not a PDF you follow alone. Everything installed and configured on your PC, while you watch.

GitHub Visual Studio 2026 WinSCP PuTTY Notepad++ Navicat
AnyDesk

Your only job is to download AnyDesk. I install and configure everything myself, and we do not stop until your server is online. If you want, we do it on a voice call so you can watch and ask anything you like. Entirely up to you.

Where it runs

Three possible installations.

Local VM, FreeBSD server, Windows. One of them, or all three, whenever you need them.

VirtualBox + FreeBSD

Local VM

FreeBSD inside VirtualBox on your own PC. The safest place to break things, and it costs nothing to run.

FreeBSD

VPS or dedicated

A real FreeBSD machine. I tell you which one to rent, then install and prepare it for Metin2 myself.

Windows

Windows Server

The best place to dig into the code. Building and debugging are simply easier here.

One does not exclude the other. The same code compiles on Windows and on FreeBSD, and the repository is already laid out for it, so you move between them without toggling anything strange.

A test VPS costs five or six euro a month. I tell you which one to take, and after you buy I install it and prepare it for Metin2 myself. And if anything ever goes wrong (a format, a new host, a fresh start) you ask and I do it again. It is always free.

The repository

Built for the workflow.

One shared Extern. Update a library once and the whole tree follows.

repository/
Top level of the repository: Databases, Extern, Locale-Server, Python, Srcs-Client, Srcs-Server, Tools, WServer and the documentation files.

One Extern, three consumers

Srcs-Client, Srcs-Server and Tools all point at the same Extern. Bump a dependency in one place and every project picks it up. No copies to keep in sync, no build that works in one folder and breaks in the next.

  • Srcs-Servercommon, game, db and the libs. One tree that builds on FreeBSD and on Windows.
  • Srcs-ClientAll 16 client projects, C++20 on MSVC v145.
  • WServerWindows server projects, each with its own working directory.
  • DatabasesThe SQL you import, 2014 English skill_proto included.
  • ToolsDumpProto, DumpSQLProto and the owner panel.
  • WORK-ON-*.mdEvery numbered fix, macro and setting, written down.

You will be set up on GitHub and taught how to work with it, so pulling a patch never costs you the work you built on top. Keeping your revision current becomes a habit, not a project.

The server

Serverfiles.

One folder on the machine, one panel to drive it. Adding a channel or a whole core is a copy away.

/usr/game/
The /usr/game directory on the server: auth, backups, ch1, ch2, ch99, db, logs and share folders, plus backup.py, owner_panel.sh and panel.py.

Everything where you expect it

  • authThe auth core, on its own, with its own logs.
  • dbThe database core.
  • shareThe data every core reads from, in one place instead of copied per channel.
  • backupsWritten by backup.py on the schedule you set.
  • ScaleAdding a channel, or an entire extra core, is a copy and a config line. Nothing is wired to a fixed count.
  • panel.pyThe owner panel. That is the next screenshot.
./owner_panel.sh
The owner panel menu: start server, stop server, clear logs, instant stop in test mode, compile all quests, backup and exit, with batch commands supported.
stopping the server
Shutdown log: each process is named and waited on by PID until it closes, inactive cores are reported, and the panel prints Server stopped when the last one is down.
  • BatchChain commands with a space. 2 3 1 stops the server, clears the logs and starts it again.
  • Safe stopIt watches every process go down and tells you if a core was already dead. No more ps x before a restart.
  • QuestsCompiles every quest, finding your locale folder on its own whatever you called it.
The database

A database stripped to the bone.

Whole tables gone, and most of the fields inside the ones that stayed. Delete a system and there is nothing left for it to store.

SHOW DATABASES
Database list: account, common, information_schema, log, mysql, performance_schema, player, sys.

Four of them are yours. The other four are MySQL's own.

No auction, no monarch, no castle, no siege, no lotto, no highscore. The code went, and its tables and columns went with it.

accountlogins
The account database contains a single table, named account.
One table. That is the whole account database.
playerthe game
The player database tables, from affect and banword through to skill_proto.
The game itself. Nothing a deleted system left behind.
commongm & locale
The common database contains three tables: gmhost, gmlist and locale.
Three, and a channel needs nothing else before a player logs in.
loghistory
The log database tables, from acce and bootlog through to speed_hack.
Gold, refines, cube, hacks, quest rewards, logins.
client/
The client folder players receive: BGM, lib, logs, mark, pack, screenshot and upload folders, metin2client.exe, config.exe, two DirectX DLLs and the cfg files.
The client

Static launcher.

Since v5.2 the proprietary runtimes are compiled into the launcher itself.

  • StaticDevIL replaced by stb, Miles Sound System replaced by SoundLib, built on miniaudio. No third-party image or audio runtime left to distribute beside the client.
  • DirectXThe only DLLs still in the folder are the DirectX wrappers, kept for players who never installed the old runtimes.
  • UnpackRebuilt from scratch. The 60+ patch folders of the 2014 client are gone; every asset now lives in its own scope: icons in icon, pc in pc, pc2 in pc2.
  • 1 GBSmall, intuitive, and you can actually find what you are looking for.
Under the hood

Systems, ready to switch on.

Every one behind its own macro.

Still building

Latest releases.

Each one lands on your revision as a clean diff. Free, forever. You never pay for a version twice.

The log starts at 4.x. The early years are not on this page: the work happened, the writing down did not. The number is not arbitrary either: 4.x is where the count of rewrites and fixes had taken the base by the time it was stable, in 2024. Everything from that point on is here, in full.

The receipts

Read the documentation.

The same files that come with the base, in full. Open a section and read it end to end, or search it.

Every fix is tracked, and the numbering starts at 1 and goes up. Not at 100, not at 200, not at 300. Some people reserve the leading digit to mark which project a fix belongs to, so their lists open at a big number and read as if there is more in them. Mine start at one. Count them end to end. That is the real number.

Straight answers

Before you ask.

Stop planning. Start building.

Pick your build and be online today.

No tickets, no queue. Join the Discord and message me directly, or ask for me there and I will come to you. When I am at the desk you usually have an answer in minutes, and I am with customers every single day.