Jump to content

[SRC] Metin2 on LINUX - The Old Metin2 Project


Recommended Posts

  • Active Member

Long time no C!

I'm happy to have found the time to release the 0.4.x version of the project.

Here are the most significant improvements since my last (release) post:

Server:

  • Server image size was slightly reduced by only including the core shared libraries.
  • "Server-side" speed hack and combo hack checks were removed, as their naive nature of trusting client input makes them effectively useless; not to mention that clock skew caused players to be mistakenly be kicked off the server.

    (I have
    This is the hidden content, please
    whether the client-server time synchronisation mechanism (i.e. PACKET_xx_HANDSHAKE) could be removed, but it seems like keeping the client's clock in sync with the server is essential for the current move/attack/skill mechanism (& maybe more). The timekeeping should only be done by the server, ideally. This subject has already been touched upon on M2Dev, and I realised that a less trusting mechanism should be implemented instead of the current one, as discussed in that topic.)

Client:

  • Added source code of and improved client configuration utility (client locale can be configured, added native French & Romanian UI translations, improved visual styling)
  • Cleaned up .sln files and added a build script (usage coming soon, I promise)
  • Reworked EterPack to be a lot more memory-safe and modular. Support for .eix/.epk archives was dropped, the library currently supporting reading files directly from folders and .zip archives
    This is the hidden content, please
    .

    This decision came as it simplifies the development process quite significantly. In Debug & Release mode, the client looks for the Index.dev file, which by default configures the client to read files directly from folders under the pack/ directory, no packing and unpacking necessary. Distribute mode uses the Index file, which is configured to use .zip files.

    For the .zip archives, you can use any compression mechanism supported by libzip, including the modern zstd algorithm (Use 7-Zip ZS to operate with such archives). Archives with no compression may also be used for maximum performance. If you're interested in compression performance, the pack directory (1,98 GiB) compressed with .eix/.epk takes up 1,14 GiB, compressed with the regular zip Deflate algorithm takes up 1,01 GiB, compressed with the faster zstd algorithm takes up 1,06 GiB.
  • Client source code comments and string literals have been converted to UTF-8 (Credits: @Tr0n)
  • Used anisotropic filtering for upscaling/downscaling various interface textures.

This last one is a personal pet peeve of mine, and I'm happy to have solved it. Here are some screenshots to compare:

Login screen (before):
spacer.png

 

Login screen (after) - observe how the character's faces, the text in the footer are no longer pixelated:

spacer.png

Affect icons (before/after):

spacer.pngspacer.png

Minimap texture when zoomed in (before/after):

spacer.pngspacer.png

 

That's it for now, here are some more ideas/things to do for the future:

  • Developement guides/tutorials for building and working on the server & client.
  • Autodiscovery mechanism provided by auth server, which would provide a list of all the channels and their ports, so that we could implement a server manager instead of defining the servers in serverinfo.py
  • Finish up the most critical features in the website.
  • Make the autopatcher source code public once ready.
  • Once all of the above are done, open up a public test server.
Edited by Exynox
  • Metin2 Dev 71
  • kekw 1
  • Eyes 2
  • Flame 1
  • Lmao 1
  • Good 15
  • muscle 5
  • Love 4
  • Love 44
  • 2 weeks later...

Hey,

Just wanted to quickly say I really like what you have done here! This is an amazing project and the intention to preserve the game in a more modern state (technologically speaking) with a cleaner code base is an honorouble cause. Keep it up! I am looking forward to what this project will become in the future.

  • 2 weeks later...

Guys, can you answer on some questions for me.

1.Wich databases i can use with these binary? in deploy it is just blank account,common etc.

2.When i add TMP4's databases sql it run, but too many errors about mob_proto, item proto etc in db logs.

3.After that i can telnet 13000 and other ports, but in client i get false password err. i try generate password in mysql func or Argon2id.

What is my problem?

  • 1 month later...
  • Active+ Member

As the old-metin2 git server is down as of some time, I'm hosting the code although it might deviate quite a bit from the original master and nightly branch that is managed by @ Exynox 

This is the hidden content, please

  • Metin2 Dev 30
  • Good 5
  • Love 16
On 6/23/2025 at 6:30 PM, soforyou said:

As the old-metin2 git server is down as of some time, I'm hosting the code although it might deviate quite a bit from the original master and nightly branch that is managed by @ Exynox 

This is the hidden content, please

 

Thanks, love you 

 

  • Metin2 Dev 2
  • Good 1
  • Love 2
  • Active Member
On 6/23/2025 at 7:30 PM, soforyou said:

As the old-metin2 git server is down as of some time, I'm hosting the code although it might deviate quite a bit from the original master and nightly branch that is managed by @ Exynox 

This is the hidden content, please

Thanks, the main server has been restored!

  • Metin2 Dev 4
  • Love 1
  • Love 5
  • 1 month later...
On 6/30/2025 at 5:42 AM, Exynox said:

Teşekkürler, ana sunucu geri yüklendi!

It's a great project. It was bad for me that I hadn't seen it until now. I recently rewrote the Network Packet with Flatbuffers in zero mainline codes (It took +20 working days.) If I had seen these files before, I would have proceeded from this. After thoroughly testing all packages, I would like to contribute to this project.

Edited by weto3184
  • muscle 4
  • 3 weeks later...

I have a problem with the client.... I am trying to compile it for about 10 hours non stop , google , installing , moving files , editing , playing around , and I am really unable to do so , is there any chance someone that managed to sucessfully compile the client can reach out to me on the website's discord server ?

  • 1 month later...
  • 1 month later...

Thanks for this amazing work!

 

Maybe you should mention, that TMP4 Account SQL uses old MD5 Password Hash but you moved to argon2 Hash.

TMP4 account Table, Password is varchar 45 u need at least varchar 128 for good Hash - and as i said, have to hash the password with argon2 not md5.

 

If i overread this Info, sorry 🙂

  • 1 month later...

Hi Can someone explain how to load the files? I tried it my self to rewrite the files to linux + docker system. The most works with fliege v3 files but everytime i use the warpring or use the teleporter -> kick i cand finde the error.

I want try this files but it shows
 

"Hidden Content

Give reaction to this post to see the hidden content"

  • 1 month later...
  • 3 weeks later...
  • Active+ Member
10 minutes ago, North said:

Both sources are down I wanted to try this out 😢 

Unfortunately I  don't  have the original clone otherwise I would put it up as my current git instance is for my private project, I  might have an old version and  if you wish I can  add it, tho it'll probably break if I start hosting a copy again

  • 5 weeks later...
On 3/18/2026 at 12:12 PM, North said:

Both sources are down I wanted to try this out 😢 

What do you mean down there? I can download files normally via git. (windows)
Anyway, if for some unknown reason it doesn't work for you, I uploaded everything to mega (it's the original downloaded (mirror git)-> packed .rar (with highest compress of course) -> upload, nothing changed)

This is the hidden content, please

  • Metin2 Dev 6
  • Love 1
  • 3 weeks later...
On 12/10/2023 at 12:24 AM, Exynox said:

Hi there,

Your favourite mad-lad is back! As I hinted over a year ago, I had a port of the Kraizy serverfiles in the works, with the goal of having the Metin2 Server run on Linux. Progress was slow, as 10 years passed since the Kraizy days, and now we all have education and jobs to deal with, and any free time I had was promptly allocated to sleep with the same passionate love Google Chrome eats any free RAM on a 1km radius.

Jokes aside, I still had this project on the back of my mind and still managed to bring it to a state where I feel I can release to you, guys. So I raise you The Old Metin2 Project, a more sensible attempt at continuing the work of others before us and having modern-ish serverfiles which run on modern technology, while still preserving the 2014 (or earlier) gameplay.

What needs to be said right away:

  • This project is freely available for everyone to use, modify, and pretty much everything you'd like.
  • You are invited to contribute any ideas, changes and improvements to the project on the git server. I don't have too much time but I'm willing to work on it as much as I can.
  • The project is currently VERY experimental and should not be used in order to host private servers for now.
  • Not many known bugfixes were applied to the project, and it is vulnerable to a lot of known attacks, another reason for it being unfit for production.

Improvements

  • The binaries run on 64-bit x86-64/arm64 Linux with the network stack being partially rewritten in Libevent.
  • CMake build system mainly based on vcpkg. Docker-friendly architectural approach.
  • HackShield and other proprietary binaries were successfully yeeted, the project only has open-source dependencies.
  • Included gamefiles from TMP4's server files.
  • Modern logging system.
  • Other updates and small refactorings.

The project's home

The project is currently hosted on a private Gitea instance. More instructions are available in their respective README.md files.

  • Server:
    This is the hidden content, please
  • Client:
    This is the hidden content, please
  • Deployment files:
    This is the hidden content, please
  • AIO: (Last update by ASIKOO: 2024-03-03 19:29:00) 
    This is the hidden content, please

I might require people to sign up in order to access the source in order to avoid trouble with Gameforge and other IP holders.

Future plans

  • A Laravel website + item-shop + patch server based on my older work is also in the cards, yet I need to translate everything to English so that y'all don't jump on me.
    spacer.png
  • Refactoring the configuration code so that we could easily configure the gamecores from Docker-friendly environment variables (and .env files!).
  • General refactoring of the old C++ code: memory safety, string formatting, UTF-8
  • Adding all the known bugfixes
  • Maybe releasing an alternate version with some quality-of-life systems

Ending notes

I am looking for any help in organizing, contributing and growing the project! I'll try to help you guys as much as I can, but time is tight, so my dream is for this to become a community effort. 

 This project wouldn't have been possible without the help and work of these amazing people:

  • My good friend @ Sonitex, who morally helped me and also provided me with some special sauce.
  • @ TMP4's serverfiles - it's a great resource and he deserves all the kürtőskalács we can get him:
  • @ arves100's great guide on using vcpkg for Metin2 library management:
  • @ Vanilla, who I'd argue was a pioneer in improving the gamecore and inspired me to start this.
  • A lot of other members of this community whose posts provided me with a lot of crucial information.

 

Yours,

Exynox

Hi, I'm having a problem with this server. I have two computers: one hosts a Debian 13 server and the other serves as a client running Win10. On the host, I think I've done everything correctly, as instructed, but I can't register on the website and create an account. I'd be grateful if someone could help me with this or write a step-by-step guide on how to get it working the way I want. Thank you in advance, and I appreciate the work put into this project!

  • 2 weeks later...
  • 3 months later...
On 09/12/2023 at 20:24, Exynox said:

Olá,

Seu maluco favorito está de volta! Como mencionei há mais de um ano , eu estava trabalhando em uma adaptação dos arquivos do servidor Kraizy, com o objetivo de rodar o servidor Metin2 no Linux. O progresso foi lento, já que se passaram 10 anos desde os tempos do Kraizy, e agora todos nós temos estudos e empregos para conciliar, e qualquer tempo livre que eu tinha era prontamente dedicado a dormir com a mesma paixão com que o Google Chrome consome toda a RAM livre em um raio de 1 km.

Brincadeiras à parte, eu ainda tinha esse projeto em mente e consegui levá-lo a um ponto em que me sinto pronto para lançá-lo para vocês. Então, apresento a vocês o Projeto Old Metin2, uma tentativa mais sensata de dar continuidade ao trabalho de outros que vieram antes de nós, com arquivos de servidor modernos que rodam em tecnologia atual, preservando ao mesmo tempo a jogabilidade de 2014 (ou anterior).

O que precisa ser dito imediatamente:

  • Este projeto está disponível gratuitamente para todos usarem, modificarem e fazerem praticamente tudo o que quiserem.
  • Você está convidado a contribuir com ideias, alterações e melhorias para o projeto no servidor Git. Não tenho muito tempo, mas estou disposto a trabalhar nele o máximo que puder.
  • O projeto encontra-se atualmente em fase MUITO experimental e não deve ser utilizado para hospedar servidores privados por enquanto.
  • Poucas correções de bugs conhecidos foram aplicadas ao projeto, e ele é vulnerável a muitos ataques conhecidos, outro motivo pelo qual não é adequado para produção.

Melhorias

  • Os binários são executados em Linux x86-64/arm64 de 64 bits, com a pilha de rede parcialmente reescrita em Libevent.
  • Sistema de compilação CMake baseado principalmente em vcpkg. Abordagem arquitetônica amigável ao Docker.
  • O HackShield e outros binários proprietários foram removidos com sucesso; o projeto possui apenas dependências de código aberto.
  • Arquivos de jogo incluídos, extraídos dos arquivos do servidor TMP4.
  • Sistema de registro moderno.
  • Outras atualizações e pequenas refatorações.

A casa do projeto

O projeto está atualmente hospedado em uma instância privada do Gitea. Mais instruções estão disponíveis em seus respectivos arquivos README.md.

  • Servidor:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • Cliente:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • Arquivos de implantação:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • AIO: (Última atualização por ASIKOO: 03/03/2024 19:29:00 ) 

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.

Pode ser que eu exija que as pessoas se cadastrem para acessar o código-fonte, a fim de evitar problemas com a Gameforge e outros detentores de direitos autorais.

Planos futuros

  • Um site em Laravel + loja de itens + servidor de patches baseado em meus trabalhos anteriores também está nos planos, mas preciso traduzir tudo para o inglês para que vocês não me critiquem.
    espaçador.png
  • Refatoramos o código de configuração para que pudéssemos configurar facilmente os núcleos do jogo a partir de variáveis de ambiente compatíveis com o Docker (e arquivos .env!).
  • Refatoração geral do código C++ antigo: segurança de memória, formatação de strings, UTF-8
  • Adicionando todas as correções de bugs conhecidas.
  • Talvez lançar uma versão alternativa com alguns sistemas de melhoria de usabilidade.

Notas finais

Estou buscando ajuda para organizar, contribuir e expandir o projeto! Tentarei ajudar vocês o máximo possível, mas o tempo é curto, então meu sonho é que isso se torne um esforço coletivo. 

 Este projeto não teria sido possível sem a ajuda e o trabalho destas pessoas incríveis:

  • Meu bom amigo@ Sonitex , que me ajudou moralmente e também me forneceu um molho especial.
  • @ TMP4's serverfiles - é um ótimo recurso e ele merece todos os kürtőskalács que pudermos dar a ele:
  • @ arves100Excelente guia sobre como usar o vcpkg para gerenciamento de bibliotecas Metin2:
  • @ Vanilla , que eu diria que foi um pioneiro na melhoria da essência do jogo e me inspirou a começar isto.
  • Muitos outros membros desta comunidade, cujas postagens me forneceram informações cruciais.

 

Seu,

Exynox

Hmmm

On 09/12/2023 at 20:24, Exynox said:

Olá,

Seu maluco favorito está de volta! Como mencionei há mais de um ano , eu estava trabalhando em uma adaptação dos arquivos do servidor Kraizy, com o objetivo de rodar o servidor Metin2 no Linux. O progresso foi lento, já que se passaram 10 anos desde os tempos do Kraizy, e agora todos nós temos estudos e empregos para conciliar, e qualquer tempo livre que eu tinha era prontamente dedicado a dormir com a mesma paixão com que o Google Chrome consome toda a RAM livre em um raio de 1 km.

Brincadeiras à parte, eu ainda tinha esse projeto em mente e consegui levá-lo a um ponto em que me sinto pronto para lançá-lo para vocês. Então, apresento a vocês o Projeto Old Metin2, uma tentativa mais sensata de dar continuidade ao trabalho de outros que vieram antes de nós, com arquivos de servidor modernos que rodam em tecnologia atual, preservando ao mesmo tempo a jogabilidade de 2014 (ou anterior).

O que precisa ser dito imediatamente:

  • Este projeto está disponível gratuitamente para todos usarem, modificarem e fazerem praticamente tudo o que quiserem.
  • Você está convidado a contribuir com ideias, alterações e melhorias para o projeto no servidor Git. Não tenho muito tempo, mas estou disposto a trabalhar nele o máximo que puder.
  • O projeto encontra-se atualmente em fase MUITO experimental e não deve ser utilizado para hospedar servidores privados por enquanto.
  • Poucas correções de bugs conhecidos foram aplicadas ao projeto, e ele é vulnerável a muitos ataques conhecidos, outro motivo pelo qual não é adequado para produção.

Melhorias

  • Os binários são executados em Linux x86-64/arm64 de 64 bits, com a pilha de rede parcialmente reescrita em Libevent.
  • Sistema de compilação CMake baseado principalmente em vcpkg. Abordagem arquitetônica amigável ao Docker.
  • O HackShield e outros binários proprietários foram removidos com sucesso; o projeto possui apenas dependências de código aberto.
  • Arquivos de jogo incluídos, extraídos dos arquivos do servidor TMP4.
  • Sistema de registro moderno.
  • Outras atualizações e pequenas refatorações.

A casa do projeto

O projeto está atualmente hospedado em uma instância privada do Gitea. Mais instruções estão disponíveis em seus respectivos arquivos README.md.

  • Servidor:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • Cliente:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • Arquivos de implantação:

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.
  • AIO: (Última atualização por ASIKOO: 03/03/2024 19:29:00 ) 

    Conteúdo oculto

    • Reaja a esta publicação para ver o conteúdo oculto.

Pode ser que eu exija que as pessoas se cadastrem para acessar o código-fonte, a fim de evitar problemas com a Gameforge e outros detentores de direitos autorais.

Planos futuros

  • Um site em Laravel + loja de itens + servidor de patches baseado em meus trabalhos anteriores também está nos planos, mas preciso traduzir tudo para o inglês para que vocês não me critiquem.
    espaçador.png
  • Refatoramos o código de configuração para que pudéssemos configurar facilmente os núcleos do jogo a partir de variáveis de ambiente compatíveis com o Docker (e arquivos .env!).
  • Refatoração geral do código C++ antigo: segurança de memória, formatação de strings, UTF-8
  • Adicionando todas as correções de bugs conhecidas.
  • Talvez lançar uma versão alternativa com alguns sistemas de melhoria de usabilidade.

Notas finais

Estou buscando ajuda para organizar, contribuir e expandir o projeto! Tentarei ajudar vocês o máximo possível, mas o tempo é curto, então meu sonho é que isso se torne um esforço coletivo. 

 Este projeto não teria sido possível sem a ajuda e o trabalho destas pessoas incríveis:

  • Meu bom amigo@ Sonitex , que me ajudou moralmente e também me forneceu um molho especial.
  • @ TMP4's serverfiles - é um ótimo recurso e ele merece todos os kürtőskalács que pudermos dar a ele:
  • @ arves100Excelente guia sobre como usar o vcpkg para gerenciamento de bibliotecas Metin2:
  • @ Vanilla , que eu diria que foi um pioneiro na melhoria da essência do jogo e me inspirou a começar isto.
  • Muitos outros membros desta comunidade, cujas postagens me forneceram informações cruciais.

 

Seu,

Exynox

 

Just now, vanaldo said:

Hmmm

 

Spoiler

🙂

 

On 12/9/2023 at 8:24 PM, Exynox said:

Hi there,

Your favourite mad-lad is back! As I hinted over a year ago, I had a port of the Kraizy serverfiles in the works, with the goal of having the Metin2 Server run on Linux. Progress was slow, as 10 years passed since the Kraizy days, and now we all have education and jobs to deal with, and any free time I had was promptly allocated to sleep with the same passionate love Google Chrome eats any free RAM on a 1km radius.

Jokes aside, I still had this project on the back of my mind and still managed to bring it to a state where I feel I can release to you, guys. So I raise you The Old Metin2 Project, a more sensible attempt at continuing the work of others before us and having modern-ish serverfiles which run on modern technology, while still preserving the 2014 (or earlier) gameplay.

What needs to be said right away:

  • This project is freely available for everyone to use, modify, and pretty much everything you'd like.
  • You are invited to contribute any ideas, changes and improvements to the project on the git server. I don't have too much time but I'm willing to work on it as much as I can.
  • The project is currently VERY experimental and should not be used in order to host private servers for now.
  • Not many known bugfixes were applied to the project, and it is vulnerable to a lot of known attacks, another reason for it being unfit for production.

Improvements

  • The binaries run on 64-bit x86-64/arm64 Linux with the network stack being partially rewritten in Libevent.
  • CMake build system mainly based on vcpkg. Docker-friendly architectural approach.
  • HackShield and other proprietary binaries were successfully yeeted, the project only has open-source dependencies.
  • Included gamefiles from TMP4's server files.
  • Modern logging system.
  • Other updates and small refactorings.

The project's home

The project is currently hosted on a private Gitea instance. More instructions are available in their respective README.md files.

  • Server:

    Hidden Content

    • Give reaction to this post to see the hidden content.
  • Client:

    Hidden Content

    • Give reaction to this post to see the hidden content.
  • Deployment files:

    Hidden Content

    • Give reaction to this post to see the hidden content.
  • AIO: (Last update by ASIKOO: 2024-03-03 19:29:00) 

    Hidden Content

    • Give reaction to this post to see the hidden content.

I might require people to sign up in order to access the source in order to avoid trouble with Gameforge and other IP holders.

Future plans

  • A Laravel website + item-shop + patch server based on my older work is also in the cards, yet I need to translate everything to English so that y'all don't jump on me.
    spacer.png
  • Refactoring the configuration code so that we could easily configure the gamecores from Docker-friendly environment variables (and .env files!).
  • General refactoring of the old C++ code: memory safety, string formatting, UTF-8
  • Adding all the known bugfixes
  • Maybe releasing an alternate version with some quality-of-life systems

Ending notes

I am looking for any help in organizing, contributing and growing the project! I'll try to help you guys as much as I can, but time is tight, so my dream is for this to become a community effort. 

 This project wouldn't have been possible without the help and work of these amazing people:

  • My good friend @ Sonitex, who morally helped me and also provided me with some special sauce.
  • @ TMP4's serverfiles - it's a great resource and he deserves all the kürtőskalács we can get him:
  • @ arves100's great guide on using vcpkg for Metin2 library management:
  • @ Vanilla, who I'd argue was a pioneer in improving the gamecore and inspired me to start this.
  • A lot of other members of this community whose posts provided me with a lot of crucial information.

 

Yours,

Exynox

😁

Don't use any images from : imgur, turkmmop, freakgamers, inforge, hizliresim... Or your content will be deleted without notice...
Use : https://metin2.download/media/add/

Please use https://metin2.download/ when uploading files smaller than 100MB, otherwise the approval will take longer due to manual upload.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.