March 15, 2025Mar 15 So today I attempted to create a project which logged the sent and received times of the walking packet from an openkore client. By modifying the openkore client, I timed the packet sending and receiving functions to mark the time in which the emulator could perform a quick calculation (in this example the walking algorithm) and send back a response to the client. By making the character move on the client I achieved multiple responses and ergo the average response time it took for the emulator to achieve a successful transmission of packets from client to server (request) and back to client (response). The openkore was a fresh install and I had only modified a few lines of code. The patch for this file is attached in this post, feel free to use it in your own openkore to check the packet reception times in your emulator0001-PacketTimer-Patch.patchDoing this tells me how fast our emulator is and whether what we are doing is the right thing. By looking at the data received from this patch, it seems our emulator is quite close to the eAthena emulators. Keep in mind that Horizon is not at all optimized at this point and we will be doing so only in a few releases into the future. Horizon is a very fast emulator and you can see the results in this patch that we're able to meet the qualifications of a competent emulator in the online gaming industry. We're there with the top emulators in the RO emulation scene and the MMORPG world. We're quite competent even in our less optimized, not bug-tested and unreleased codebase.We're quite there with the top few emulators which achieve the importance of providing a platform based on the "competition" element of online gaming. We want our emulator to maximize competition in online gaming and we're making it possible with rigorous efforts as seen in the results today.We can see that we're just off by 0.001 marks. Which is 1 millisecond of time. We are that much closer to competitive online gaming and we can achieve the difference by working on optimizations on the emulator. Horizon also leverages Hyperthreading (or Multithreading) technology, which means that characters are simultaneously processed on our server compared to the one-by-one processing of them in eAthena based servers. For more clarity, take a look at the diagram below -In eAthena servers, characters are loaded and processed one after the other. This can cause an issue in processing thousands of characters online. In Horizon, characters are logged into maps which are divided amongst the threads of the Game Logic Layer (GLL). In the GLL multiple threads process a group of maps. If two players happen to be in different groups, they are processed differently.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.