anexoticllama 4 Report post Posted August 26, 2018 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) Quote Share this post Link to post Share on other sites
Davidjones 0 Report post Posted June 10, 2023 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 Quote Share this post Link to post Share on other sites
AlGhoul 66 Report post Posted June 10, 2023 (edited) 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 June 10, 2023 by AlGhoul 1 Quote Kind regards, AG. Share this post Link to post Share on other sites
Mdrst 38 Report post Posted June 15, 2023 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). Quote "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