Hey Abel, great work on the reverse engineering. However, there's a small but critical logic flaw in your C++ implementation for the 'enablefrustum' flag that will cause massive FPS drops.
I've been reversing the same binary, and comparing your code with the Assembly dump reveals a crucial missing detail: the exclamation mark (!).
In your code:
if (!rTextFileLoader.GetTokenBoolean("enablefrustum", &m_ParticleProperty.m_bEnableFrustum))
Your logic means: If the flag is NOT found, disable Frustum Culling (FALSE).
However, the official Assembly (see my screenshot below) explicitly checks if (v66) without the NOT operator. The official logic is: If the flag IS found, disable it.
The Performance Impact:
Because 99% of old Metin2 .mse files do not contain the enablefrustum string, your code effectively disables Frustum Culling for almost every particle in the game. The GPU will be forced to render thousands of unseen particles (like foot dust or basic attacks) even when they are behind the camera. This overdraw will completely destroy performance in crowded areas like guild wars.
To replicate the official behavior and save your users' FPS, you just need to remove the ! from your condition.
Best regards,
- aki