[New Users] Please note that all new users need to be approved before posting. This process can take up to 24 hours. Thank you for your patience.
Check out the v.256 - The Dark Ride: Limbo Patch Notes here!
If this is your first visit, be sure to check out the Forums Code of Conduct: https://forums.maplestory.nexon.net/discussion/29556/code-of-conducts

More ideas to solve Lag or PC heavy load

Roni777Roni777
Reactions: 1,180
Posts: 256
Member, Private Tester
edited March 2019 in Bug Reporting
Bug type:
Lag / PC Heavy Load ( More ideas to solve it)

Brief bug summary:
As Maplestory is a 2D games, but it requires interestingly a very high PC requirement. As i played on a lot of 3D games, my PCs doesn't really gets a heavy load, but interestingly playing Maplestory, my PC barely can keep up. So here is another idea to help Maplestory/Nexon. Hopefully it can help

More details:
I got the basic idea from a friend of mine. And then I combine it with my own opinion and analysis. Though, I am someone who doesn't even have any expertise and computer software. My best knowledge is doing Excel simple calculation. So what i said might be correct but might as well correct. But anyway, wish you the best.

My PC always run Maplestory on a heavy load. And so my friend suggesting me to do this. To Click CTRL+ALT+DELETE and open Task Manager. On the task manager, open details and right click on application that relate to Maplestory, right click and choose affinity. In there you will have options to tick "All Processor", CPU 0, CPU 1, and so on. He claims it helps him reduce the PC workload.

I have tried it several times. I did feel a bit of changes. But I still need more experiment on it. But i think i might as well just mention it to Maplestory.

But this is personal opinion from someone who doesn't have knowledge regarding software, but you have more expert to check it out. As Maplestory started to have heavy load when Intel processor company start introducing dual processor, quad core and so on. From what i read, this is a combination of processes to combine 4 or more processor into one, which to share the task of application so the PC can work faster which result on less workload. There might be a chance that Maplestory game application failed to address this Intel core system into their application resulting on it to read only part of the multiple processor while most of the new PCs now is not increasing on the capability of each processor but instead they multiply / added more processor into 1 system. If this is true, eventhough the PC technology gets higher, Maplestory game application will still read a intel 6 / quad core as a single core which lead to heavy burden on processor.

Hopefully this help to solve the problem or at least giving usefull ideas. Peace

Steps to reproduce:
1. Start Maplestory game
2. press CTRL +ALT+DELETE. Open Task Manager
3. Click details. Right click on Maplestory or try all of them that relate to Maplestory and click Affinity
4. Try combinations of Either ticking only CPU 0, or Combination 2 or 3 of the processor you have there.

Character name:
RedNightW
Character level:
lv 250
Character job:
NightWalker
World name:
Reboot
Date and time of the incident:
Since 3 years ago or probably before

Comments

  • NeospectorNeospector
    Reactions: 9,860
    Posts: 2,146
    Volunteer Forum Moderator
    edited March 2019
    Maplestory was built during a time when single-core was the norm. As a result, the game is single-threaded. Most games today are designed to work on multi-core systems using threading and child processes.

    An important thing to note is that multi-threading isn't done on the PC-level, it's done on the application-level, which essentially means the creators of the game have to program threaded functionality. This is because of how threading works: you take a block of calculations which can be performed separate and simultaneously to the main game thread, perform them, then merge the results back into the main thread. The calculations must be capable of being performed separately from the main thread, because if they aren't, you're left with either null data values in the main thread or stuck waiting for the threads to finish their calculations.
    To simplify things, say you have a program like this:
    public void main() {
        x=1;
        y=2;
        z=3;
        a=x+y;
        b=z*y;
        c=z-x;
        final=a+b+c;
        print(final);
    }
    

    Normally this executes sequentially, starting with x=1 and ending with print(final), for a total of 4 calculations. Threading works by doing this:
    public void main()
    {
        x=1;
        y=2;
        z=3;
        a=thread1(x,y);
        b=thread2(z,y);
        c=thread3(z,x);
        splitAndExecuteThreads();
        waitForThreadsToFinish();
        final=a+b+c;
        print(final);
    }
    
    
    
    public int thread1(int x, int y)
    {
        return x+y;
    }
    
    public int thread2(int z, int y)
    {
        return z*y;
    }
    
    public int thread3(int z,int x)
    {
        return z-x;
    }
    
    public void splitAndExecuteThreads()
    {
        //Some code to split and run threads
    }
    
    public void waitForThreadsToFinish()
    {
        //Idle code, usually a blank loop, that waits for the threads to finish
    }
    

    This is a big oversimplification, but for the purposes of explanation it works.

    When run, threads 1, 2, and 3 are executed at the same time. This means that steps 4, 5, and 6 are combined into a single step, reducing the number of calculations to 2.
    It works a lot better if you have more numbers (like, say, an array of 10000 numbers and you need to find the minimum, which was the assignment my professor had us do for multithreading).

    Now, you might notice the problems:
    • If you don't wait for the threads to finish, a/b/c might be null, resulting in an error
    • If one of your threads relies on a variable in another thread, you need to wait for the second thread to finish before you can work on the first thread
    • Threads can't talk to each other unless there are specific methods used to send messages, so for an event-driven program like a video game you have to set up a method of communicating information between threads
    Which essentially means you can't just split up a game between multiple processors and make it run faster, unfortunately.

    Now, this isn't to say multicores are useless: spinning Maple on a secondary processor might help alleviate some issues since most applications will spin on the main processor. Unfortunately I can't tell you how many issues it might solve (if it solve any), but if it works for you then it might be good to use it. Additionally, as a note, running Maple for the first time on a secondary processor may (or may not, please don't take my word on this) cause an initial spike in problems, because of cache misses, but over time it will improve.
  • Roni777Roni777
    Reactions: 1,180
    Posts: 256
    Member, Private Tester
    edited March 2019
    hmm that is a good detail. Thanks for explaining it in detail from the perspective of people who knows better than me. But i hope Maplestory have the ability to alter their basic core system. because it seems they are moving towards fast pace 2D MMORPG game. If they are going to move towards that, they need to alter so their game application in sync with the latest technology. Otherwise, in the future, this game will stuck on terms of improvement. Unless they are changing direction towards slow pace game with strategy heavily based 2D MMORPG. Coz there is no way processor going back to use single core processor. Doesn't seem likely to be.