It's definitely designed for newcomers, but it can get more complicated than it needs to be.
If you remember the wiki pages on sourcing and building Extern from scratch, this is the cleaned and updated 2020 method™.
This tutorial focuses on making changes to both some revisions I have on the internet and the original leaked revisions.
We'll be using vcpkg, but this tutorial also includes a few fixes needed to get a generic resource file to generate.
Introduction
vcpkg is a C++ package manager for Windows, Linux, Mac (and FreeBSD).
It allows us to create any third-party program required by any of our apps and keep them up to date.
It also allows us to easily install anything new that may be needed on our resources.
In Metin2, this program completely replaces the old Extern directory.
The tutorial is compatible for both Windows and FreeBSD, both client and server.
This method also supports adding custom additions or libraries to the vcpkg install root, I'll explain more on the subject later.
Why should you use this method?
Applied changes:
Compatibility and incompatibility
If you remember the wiki pages on sourcing and building Extern from scratch, this is the cleaned and updated 2020 method™.
This tutorial focuses on making changes to both some revisions I have on the internet and the original leaked revisions.
We'll be using vcpkg, but this tutorial also includes a few fixes needed to get a generic resource file to generate.
Introduction
vcpkg is a C++ package manager for Windows, Linux, Mac (and FreeBSD).
It allows us to create any third-party program required by any of our apps and keep them up to date.
It also allows us to easily install anything new that may be needed on our resources.
In Metin2, this program completely replaces the old Extern directory.
The tutorial is compatible for both Windows and FreeBSD, both client and server.
This method also supports adding custom additions or libraries to the vcpkg install root, I'll explain more on the subject later.
Why should you use this method?
- You want a fast and slimmer way to distribute your resources.
- Always keep all third party components of Metin2 up to date.
- You want to achieve static linking (by removing the extra DLL in your client or SO in game). My client source only contains SpeedTreeRT and Granny2 dlls (this can be removed if you use static Granny 2.9 and compile SpeedTreeRT from sources)
Applied changes:
- Change the plugins and libraries to use vcpkg.
- Various files have been updated to use the latest version in vcpkg.
- Replaces the old NANOBEGIN / NANOEND with the latest SDK and fixes some bugs created using Nanomites and debug builds.
- Cleaned Makefile and enabled static library usage (no more .so)
- It fixes some bugs or issues you may encounter if you are using the server under Windows.
Compatibility and incompatibility
- I couldn't run libmariadb with FreeBSD, this may be because I'm compiling with a FreeBSD 64-bit application, in case something bad happens I suggest you mitigate it by dropping https://pkg.freebsd. .org/FreeBSD: (YOUR FREEBSD VERSION): Contains lib files in amd64/latest/All/mariadb-connector-c-3.1.9.txz (vcpkg directory)\installed\x86-freebsd.
- You cannot build 32-bit vcpkg under 64-bit, get a 32-bit build machine. It may be possible to get a multilib to build on FreeBSD, but I'm not aware of any method that can be achieved under vcpkg.
- You need internet on your FreeBSD virtual machine or VPS, it also needs to be updated to a relevant version, any supported FreeBSD version is enough, check at https://www.freebsd.org/ .
- You must use at least Windows 7 SP1 to create the Client (or Server).
- I don't recommend using clang to build your source, I'm having some issues with Crypto++.


