Hey, I think you're overdue for an update. The changes that were only on the nightly branches were merged into master and released as version 0.3.x.
Also, Docker images are now officially distributed through Gitea for quick deployment: simply following the Quick start guide here on a Linux machine with Docker should get you up and running in a few minutes: [Hidden Content]
Here's a quick list of everything that was done since the last update:
Server:
A lot of unused Korean features were removed, only Gameforge-like features were left (credits: @Tr0n).
Source files were converted to UTF-8 (credits: sdgmt2)
Source code string literals were translated into English (i.e. locale_string.txt files now provide translations from English into other languages, instead of Korean to other languages) (Credits: @Tr0n)
Argon2ID is used for password hashing (Credits: WildEgo)
Used MariaDB connector library instead of MySQL (which in turn removed the dependency for boost and compile times are much better)
Fixed mishandling of public/private IP addresses in P2P code, which fixed inter-core communication in docker deployment.
Logout error messages are now displayed to the player.
Game data is stored in the "gamefiles" directory.
Various (Docker) build system fixes and improvements.
Game configuration can now be done through .env files when using Docker.
Fixed in-game Item Mall authentication.
The db core no longer crashes on startup when a database connection is not possible.
CLion run configurations are now shared in the repository.
Client:
Upgraded client to DirectX 9
Removed unused libraries and files
Removed mobile/SMS system
Added support for Argon2ID hash system
Changed default client language to English
Fixed buffer overflow in DXTCImage
Deployment system:
Added automatic database initialization
Added support for arm64
Added a quick start guide in the readme.
Website (work-in-progress):
Added automatic database migrations in the docker image
Bumped PHP version
Added experimental autopatcher support with webseed capability (for official YMIR autopatcher - updated source code with modern libraries coming soon)
----
That being said, I've played around with running the docker images on an old Raspberry Pi 2, (32-bit armhf architecture), which turned out to be a big failure since the hardware FPU expects floats to be memory-aligned. Since the original code uses #pragma pack(1) directives, this is not achieved and a "Bus Error" signal is thrown when a non-memory-aligned access to a float (usually in a struct) is attempted.
When removing the #pragma pack directives in order to let the compiler to do proper (armhf-compatible) struct packing, the servers did start successfully, but naturally the network protocol structure is borked (from the POV of a Windows/x86-64 machine) and connecting to the server is not possible.
Which leads me into this - one of the next big things to happen to the project is converting the network protocol to protobuf in order to eliminate relying on simply casting network data into structs. Stopping to rely on the server machine's ability to operate on non memory-aligned structs is the right thing to do, and protobuf will probably fixed some other issues, such as unsafe peeking into network buffers/structs, random mismatched header issues and a lot of peace of mind by essentially banning pointer arithmetic in the core networking code.
Another thing coming up is finishing the website, which is currently in Romanian and only the registration functionality works, making a guide on using a local SMTP server / a Gmail account for the website.
Then I can probably can start writing some video tutorials on how to start up a basic server from start to finish, how to develop on the server, and finally fire up a test/demo server for the curious (and to provide an easy client download).
See you soon (as my free time allows),
Exynox