Jump to content
Sign in to follow this  
anexoticllama

Maps per GameServer instance

Recommended Posts

As far as I understand, it is good practice to run multiple instances of GameServer, each with their own set of maps, to allow for better utilization of multiple cpu threads. My question, then, is in what way would you suggest I divide maps up? I'm currently using base 1.38 files, so the list is:

 

- Garner

- Magic Sea

- Deep Blue

- FC (1/2/3)

- DS

- DW (1/2)

- LT

- CA

- Abba

- Treasure Gulf

- Bar

- Mirages

- Others? (Church, xmas, guild war, others I'm forgetting)

Share this post


Link to post
Share on other sites

I read, that because garner was a big map, it should run alone. I've been doing some trial and error configuration and loaded it with max 6 more instances, like demonic world and such, in my case im doing the contrary, how many instances can i load at the same time with only one window of game server

Share this post


Link to post
Share on other sites

The 3 major maps should not be run with one another in one instance, while you can do so, it's not recommended.
Running multiple GameServers allows scaling but it comes with it's cost, the infamous Dupe bug and that happens due to unsynchronized writes to the inventory/bank/temp bag(s) between two GameServers Example: Moving from 'garner' (Argent City) that runs on GameServer "A" to 'magicsea' (Shaitan City) that runs on GameSever "B" involves moving character's data to the new GameServer A -> B ; So you'll need a good AntiDupe. LUA solutions mitigate this but it can never prevent it entirely, A sudden restart/crash might result in duplicated items or roll backs.

Edited by AlGhoul
  • Like 1

Kind regards, AG.

Share this post


Link to post
Share on other sites

Since the game logic is single-threaded, dividing the maps into separated processes can help balancing the load, but as AlGhoul said, there are dupe issues.
A feasible fix is porting the server side to a 64-bit architecture and instead of having a loop iterating over all maps, you would simply spawn a thread to run each one in parallel (AFAIK there are few resources being shared between maps during a tick, so no synchronization nightmares here).
 


"Beware of bugs in the above code; I have only proved it correct, not tried it."

- Donald E. Knuth

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...