Removing the 30 FPS Cap in 12Sky2: A Reverse Engineering Inquiry

09/25/2025 10:52 mcnhwkn#1
I'm genuinely frustrated with the 30 FPS cap in 12Sky2. It significantly detracts from the gaming experience, and I'm determined to find a way to remove this limitation.

I'm a developer, but I haven't done this type of reverse engineering before, and I'm looking for some guidance from the community.

My main challenge is locating where this specific limitation is stored. I suspect it's hardcoded somewhere, but I've been unable to pinpoint the exact location.

-Could this information be within a DLL file like GXDCompress.dll?

-Is it more likely to be embedded directly within the main executable (.exe) file?

If I knew the file and the general offset, I could likely use a hex editor like HxD to modify the value.

The fact that some private servers have managed to bypass this issue confirms that it's possible. I'm keen to learn and try to solve this myself for the official or a specific server.

Any experienced reverse engineers or anyone familiar with the 12Sky2 file structure who could offer a hint or a starting point would be greatly appreciated
09/25/2025 15:34 fantatik#2
Hey there,

Here a brief explanation of what you asking for:

To edit the FPS, you need to modify the loop timer the time the game waits for each fixed loop. Which is 30fps, or converted to float 0.033f.

To calculate the fps time, you use this formula (1.0f / FpsAmount), so 1.0f / 30 = 0.033f.

* The gxdcompress.dll is just a library linked to the executable that handles the zlib compression.
* The executable is what you looking for but there are several things to take in count to do the process:
1. If the executable is packed, you wont be allowed to perform edits in hexadecimal without unpacking it.
2. If the executable is protected by something like an antihack (NProtect or similar) you might trigger it with edits or else it might use the 30 fps to send packets for heartbeat, is something to take in count.
3. Breaking the terms of service due to using 3rd party software or editing your game executable can get you banned.

I think ive covered most of it, hope that helpsl

Good lucks!
09/25/2025 15:40 maorii#3
you're not a developer. if you were you could develop this xD
09/25/2025 16:41 mcnhwkn#4
Quote:
Originally Posted by fantatik View Post
Hey there,

Here a brief explanation of what you asking for:

To edit the FPS, you need to modify the loop timer the time the game waits for each fixed loop. Which is 30fps, or converted to float 0.033f.

To calculate the fps time, you use this formula (1.0f / FpsAmount), so 1.0f / 30 = 0.033f.

* The gxdcompress.dll is just a library linked to the executable that handles the zlib compression.
* The executable is what you looking for but there are several things to take in count to do the process:
1. If the executable is packed, you wont be allowed to perform edits in hexadecimal without unpacking it.
2. If the executable is protected by something like an antihack (NProtect or similar) you might trigger it with edits or else it might use the 30 fps to send packets for heartbeat, is something to take in count.
3. Breaking the terms of service due to using 3rd party software or editing your game executable can get you banned.

I think ive covered most of it, hope that helpsl

Good lucks!
Thanks for your answers, i have some questions;

Is the packet sending time directly proportional to FPS? Wouldn't it be better to have a dedicated timer based on the system clock, rather than what you call "heartbeat"? How did they unlock this FPS in some of the private server projects for 12sky2?
09/25/2025 16:49 fantatik#5
Quote:
Originally Posted by mcnhwkn View Post
Thanks for your answers, i have some questions;

Is the packet sending time directly proportional to FPS? Wouldn't it be better to have a dedicated timer based on the system clock, rather than what you call "heartbeat"? How did they unlock this FPS in some of the private server projects for 12sky2?
That depends on how they do it, Im just suposing.
We were the first server who unlocked the FPS back in VSky 2.0-2.9 which I never had the source of, I did everything with RE like I just posted above, just edit the gameloop timer.

But if you plan to do it for a non private server, which is what looks like, then is gonna be way more complicated u gotta be careful. In the case is for a private server, then idk what you need RE for, sources are public at this point in time.
09/25/2025 17:32 zahter31#6
I cant answer this question. But surely answers are wrong. You can unlock fps and adjust to 120. That means nothing because all systems are produced for 30 fps. Ok answering :) i made 120 fps new animations and this means 4x more frames for a motion. So when i adjust game fps to 120 this means something better.
09/25/2025 17:42 mcnhwkn#7
Quote:
Originally Posted by fantatik View Post
That depends on how they do it, Im just suposing.
We were the first server who unlocked the FPS back in VSky 2.0-2.9 which I never had the source of, I did everything with RE like I just posted above, just edit the gameloop timer.

But if you plan to do it for a non private server, which is what looks like, then is gonna be way more complicated u gotta be careful. In the case is for a private server, then idk what you need RE for, sources are public at this point in time.
so u managed to break the fps limit using somethin kinda like cheat engine's speedhack. how does spd hck; it basically hooks the core timing/clock functions and lies to the system that time is moving way faster than it shoud be, so it's manipulatin' time. ya this method works, but like u said, it's gonna affect the overall speed of the whole game n might cause issues

Quote:
Originally Posted by zahter31 View Post
I cant answer this question. But surely answers are wrong. You can unlock fps and adjust to 120. That means nothing because all systems are produced for 30 fps. Ok answering :) i made 120 fps new animations and this means 4x more frames for a motion. So when i adjust game fps to 120 this means something better.
yeah i think u got what i meant, and your solution seems much more likely to be the right one. I mean, the animations render at 30 fps but those aren't relly the issue for me. even when u rotate the camera 360 degrees, 30 fps looks awful. I feel like if we could've gotten past this limit, the camera movements would be way smoother
09/25/2025 17:53 zahter31#8
If u want to hook fps value with dll it is appmain. In any exe easy to find. If u have source it is in appmain again. But as i said game wont be smoother. Only faster animatings. For speed hack it wont work. If u hack motion frame control function and attack skill frame to 1 and make a 1 frame anim that will effect. But running a to b plays anim until you go to b. So if u hack running anim frame value u ll run faster but arrive in same time to b.
09/25/2025 18:00 fantatik#9
Quote:
Originally Posted by mcnhwkn View Post
so u managed to break the fps limit using somethin kinda like cheat engine's speedhack. how does spd hck; it basically hooks the core timing/clock functions and lies to the system that time is moving way faster than it shoud be, so it's manipulatin' time. ya this method works, but like u said, it's gonna affect the overall speed of the whole game n might cause issues
Not really a speedhack, thats not how that works if u separate the timeline.

Anyways, the info is there in my first answer, now is up to you. Good lucks
09/25/2025 18:34 zahter31#10
One more thing. Interpolation is not same for 30 fps and 120 fps. You should fill the frames for smoothing anims. But in ur case just use application main loop fps value.
09/25/2025 18:36 mcnhwkn#11
Quote:
Originally Posted by zahter31 View Post
If u want to hook fps value with dll it is appmain. In any exe easy to find. If u have source it is in appmain again. But as i said game wont be smoother. Only faster animatings. For speed hack it wont work. If u hack motion frame control function and attack skill frame to 1 and make a 1 frame anim that will effect. But running a to b plays anim until you go to b. So if u hack running anim frame value u ll run faster but arrive in same time to b.
my intention wasn't to speed hack or anything, just tryin to get a completely smoother game experience, but yeah what u said about it breakin the game's main structure makes sense. can't really play it like that

what i'm wonderin' now is; some servers claim they boost the FPS limit way higher... i haven't set up or even tried those servers, but do they actually give a smoother game experience?
09/25/2025 22:12 mcnhwkn#12
Quote:
Originally Posted by Avinee View Post
Sounds like you're talking about official which i assume is genius orc, give it a go:
FPS addy - 00813188, set this to like 0.01 and enjoy buttery smoothness. :)

Also surprisingly I've not been kicked by nProtect yet... so i guess this works lol
Right, now someone's talkin' ;) So how exactly do we do this? Which file, what tool?
09/25/2025 23:23 zahter31#13
Quote:
Originally Posted by Avinee View Post
I can't release how to achieve that as my methods will likely be patched by nProtect, that's something you have to figure out yourself i'm afraid, i am curious to see if an injected dll will work though (Probably not as nProtect is a kernel level anti-cheat), if it does work i'll release it along with the source as i don't care if that gets blocked.
Gxd dll works with that because they do not protect their client. Ur secret method is not cared by bega. Genius has no source.
Unpack themida. Use disassembler. Find functions. Take values. This is the way that u can tell him. Method is deeper. If u have knowledge u can f.k all bega clients so hard. As i remember u can use uce in their client but for effective changes u need to bypass hearthbeat. I dont care about bega for a long time.

real difference between 30 and 60 fps, sample game was 30 fps limited.
09/26/2025 12:45 mcnhwkn#14
Quote:
Originally Posted by zahter31 View Post
Gxd dll works with that because they do not protect their client. Ur secret method is not cared by bega. Genius has no source.
Unpack themida. Use disassembler. Find functions. Take values. This is the way that u can tell him. Method is deeper. If u have knowledge u can f.k all bega clients so hard. As i remember u can use uce in their client but for effective changes u need to bypass hearthbeat. I dont care about bega for a long time.

[Only registered and activated users can see links. Click Here To Register...]
real difference between 30 and 60 fps, sample game was 30 fps limited.
nah, that's not the kinda fps boost i want. That's just cramming more frames into a second by reducing the game's frame delay, which is pretty much the same thing as using speedhack in Cheat Engine (and when i say speedhack, i don't mean making the character run fast, CE's speedhack speeds up everything in the application or game). What I want is a real fps increase, but honestly, it doesn't look like that's possible right now