Example Server Configs
The 2014 and 2021 releases ship a full config set in server-config\ (with ls_query.ini and the gameplay tables), but it was made for a multi-machine service. The 2019 release has none. This page gives a clean example set for one machine, with every server on 127.0.0.1, that works as a starting point for all three. Key names and defaults come from the server code of the 2021 source (checked against 2014 and 2019), and the port layout and values follow an original, unmodified 2021-era config set.
Tested sets per release
Section titled “Tested sets per release”The files on this page are a reference for how the configs work. These sets are the ones actually run on one PC on 2026-11-07, with the database scripts and tools each release needs:
| Release | Download | Ports | Servers listen on | Locale | Details |
|---|---|---|---|---|---|
| 2014 | 2014.zip | 14000 to 14103 | the PC’s LAN address | Korea | Run it locally |
| 2019 | 2019.zip | 19xxx | the PC’s LAN address | Indonesia | Run it locally |
| 2021 | 2021.zip | 21xxx | 127.0.0.1 with LS_BIND_IP |
Korea | Run it locally |
Replace every CHANGE_ME, and the example addresses in the 2014 and 2019 sets, with your own values.
Folder layout
Section titled “Folder layout”Directoryserver/
- global_define.ini shared by all servers
Directoryls_dbagent_game/ ls_dbagent.exe for LosaGame
- ls_dbagent.ini
- ls_config_dba.ini
- ls_query.ini
Directoryls_dbagent_logdb/ ls_dbagent.exe for LosaLogData
- …
Directoryls_dbagent_logserver/ ls_dbagent.exe in log server mode
- …
Directoryls_mainsvr/
- ls_mainsvr.ini
- ls_config_main.ini
Directoryls_billingsvr/
- ls_billingsvr.ini
- ls_config_billingsvr.ini
Directoryconfig/ GoodsList.ini, GoodsName.ini
- …
Directoryls_gamesvr/
- ls_gamesvr.ini
- ls_config_game.ini
Directoryconfig/ gameplay tables, not included
- …
Directoryclientconfig/ not included
- …
Directoryls_relaysvr/
- …
Directoryls_loginsvr/
- …
Directoryls_filewritesvr/
- …
Ports used in this example
Section titled “Ports used in this example”| Server | Port | Used by |
|---|---|---|
ls_mainsvr |
40000 (servers), 40001 (GM tool) | game servers |
ls_dbagent game |
30001 | main server |
ls_dbagent log DB |
30002 | main and billing server |
ls_dbagent log server |
30003 | game servers |
ls_billingsvr |
14011 | game servers |
ls_gamesvr |
14009 (clients), 20001 (servers), 7139 (monitor) | client; relay and login use 20001 |
ls_relaysvr |
55001 (UDP + TCP) | client |
ls_loginsvr |
40005 | client |
ls_filewritesvr |
14030 | client uploads |
| SQL Server | 1433 | DB agents |
A second game server on the same machine takes the next ports: 14010, 20002 and 7140.
Start order
Section titled “Start order”ls_dbagent_game\ls_dbagent.exe -c ls_dbagent.inils_dbagent_logdb\ls_dbagent.exe -c ls_dbagent.inils_dbagent_logserver\ls_dbagent.exe -c ls_dbagent.inils_mainsvr\ls_mainsvr.exe -c ls_mainsvr.inils_billingsvr\ls_billingsvr.exe -c ls_billingsvr.inils_gamesvr\ls_gamesvr.exe -c ls_gamesvr.inils_relaysvr\ls_relaysvr.exe -c ls_relaysvr.iniandls_loginsvr\ls_loginsvr.exe -c ls_loginsvr.ini
Start every server from its own folder and pass the ini as a plain file name. The -c path is resolved against the folder you start from.
Rules that trip people up
Section titled “Rules that trip people up”- Comments must start the line.
Port=9000 ; game portmakes the value9000 ; game port. Put comments on their own line. - Section and key names are not case-sensitive, so
[DBA_Game]and[DBA_game]are the same. - The first copy wins. If a key appears twice, the first one is used.
PrivateIPFirstBytemust match your machine. It is the first number of your private IP:192for192.168.x.x,10for10.x.x.x. The servers only start with one or two IPv4 addresses on the machine. With two, the one starting with this number is the private address. Disable extra adapters (VPN, Hyper-V, VirtualBox) if a server refuses to start.- Defaults differ per server.
PrivateIPFirstBytedefaults to 0 in most servers, 10 in the billing server and 192 in the relay. Always set it. - The DB password is encoded. Run
ls_dbagent.exe -x yourpasswordand put the printed value inPW. A plain-text password does not work. - Lists end at the first gap.
1=,2=,3=… and the server stops reading at the first missing number. The login server list starts at0, the relay list at1. - No spaces in server lists. The login server does not trim
name,ip,port, so a space breaks it.
global_define.ini
Section titled “global_define.ini”Shared by all servers, placed in the parent folder of the server folders.
; LosaDev example - shared address book, placed in the PARENT folder of every server folder.; One machine, everything on 127.0.0.1. Port layout follows the original Korean config.; Lists are numbered from 1 and end at the first missing key. Values are ip:port.; Comments must start the line. Text after a value is NOT treated as a comment.
[Main]1=127.0.0.1:40000
[DBA_Game]1=127.0.0.1:30001
[DBA_Log]1=127.0.0.1:30002
[Log]1=127.0.0.1:30003
[Billing]1=127.0.0.1:14011
; Optional, IP only (no port). Leave it commented out unless you run a Wemade log server.;[Wemade_Log];1=127.0.0.1| Section | Read by | Notes |
|---|---|---|
[Main] |
game server | Main server address. The game server exits if this is wrong. |
[DBA_Game] |
main server | Game DB agent. Fatal if empty. |
[DBA_Log] |
main and billing server | Log DB agent. Fatal if empty. |
[Log] |
main server, passed to game servers | DB agent in log server mode |
[Billing] |
main server, passed to game servers | Billing server. The game server shuts down if empty. |
[Wemade_Log] |
main server | Optional. IP only, no port. |
[ClassPrice] |
main server | LoadTime, default 10 |
[DBA_AUTH] |
billing server | Philippines build only (2019 and 2021) |
The game server gets the billing, DB agent and log server addresses from the main server, so it only needs [main].
DB agents
Section titled “DB agents”The same ls_dbagent.exe runs three times: once for LosaGame, once for LosaLogData, and once as a log server.
; LosaDev example - DB agent for the game database (LosaGame).; Start with: ls_dbagent.exe -c ls_dbagent.ini; PW must be ENCODED. Run "ls_dbagent.exe -x yourpassword" and paste the printed value. Plain text does not work.
[Default]Port=30001LogServerPort=0Log=MLOG
[SQL]IP=127.0.0.1Port=1433Database=LosaGameID=lstggamePW=<output of ls_dbagent.exe -x>; LosaDev example - DB agent for the log database (LosaLogData). Listed as [DBA_Log] in global_define.ini.; Copy ls_config_dba.ini and ls_query.ini from ls_dbagent_game into this folder too.
[Default]Port=30002LogServerPort=0Log=MLOG2
[SQL]IP=127.0.0.1Port=1433Database=LosaLogDataID=lstglogPW=<output of ls_dbagent.exe -x>; LosaDev example - the same ls_dbagent.exe in "log server" mode, listed as [Log] in global_define.ini.; When LogServerPort is not 0, the agent skips SQL completely and listens on LogServerPort instead of Port.; Copy ls_config_dba.ini from ls_dbagent_game into this folder too.; Not confirmed yet: whether the original setup used this mode or a separate log server program for [Log].
[Default]Port=30003LogServerPort=30003Log=MLOG3; LosaDev example - DB agent tuning. The same file works for every DB agent folder.; PrivateIPFirstByte = first number of this machine's private IP (192 for 192.168.x.x, 10 for 10.x.x.x).
[NETWORK]PrivateIPFirstByte=192
[MainLoopCommon]QueryCheckTime=1000
[QueryThread]ThreadCount=16ThreadIndexSeqStyle=0
[Session Buffer]SessionCount=10SendBufferSize=16384RecvBufferSize=16384; LosaDev example - query map for the DB agent.; The 2014 and 2021 source releases ship the full file in server-config\ls_dbagent\ls_query.ini. Use that one.; Format: count=N, then 1..N = "<procedure> <parameter types>" separated by single spaces.; Types: INT8 INT16 INT INT32 INT64 FLOAT DATETIME STR. An unknown type stops the agent from starting.; With count=0 the agent starts, but every query from the game servers will fail.
[QUERY]count=0Main server
Section titled “Main server”; LosaDev example - main server. Start with: ls_mainsvr.exe -c ls_mainsvr.ini; Port is for the other servers (private IP). ManagerToolPort is for the GM tool.; Keep the two ports different: on a machine with one IP both bind to the same address.
[Default]Port=40000ManagerToolPort=40001Log=MLOG; LosaDev example - main server tuning. Values are the defaults from the code unless noted.
[NETWORK]PrivateIPFirstByte=192UseManageToolPrivateIP=0
[Nagle]Nagle_Time=30
; 2019 and 2021 only[MatchingTime]Matching_time=3
; IsUse=1 makes the main server reject clients with a different ClientVersion[ClientVersion]IsUse=0ClientVersion=0
[RecvQueue]FirstQueue=100
[Server Session Buffer]SendBufferSize=16384RecvBufferSize=16384
[Manager Session Buffer]SendBufferSize=16384RecvBufferSize=16384
[GameDB Buffer]SendBufferSize=16384RecvBufferSize=16384
[GameLogDB Buffer]SendBufferSize=16384RecvBufferSize=16384CCU_sync_time=5
[MemoryPool]server_pool=10tool_pool=10matchnode_pool=5000matchuser_pool=10000
[SECURITY]ON=0ONE_SEC_RCV=30In the 2014 source the main server has no [MatchingTime] and no match pools, and CCU_sync_time defaults to 10.
Game server
Section titled “Game server”; LosaDev example - game server. Start with: ls_gamesvr.exe -c ls_gamesvr.ini; CSPORT is the port the CLIENT connects to (TCP and UDP). SSPORT is for the relay and login servers.; ClientMoveIP: leave empty on a LAN. Behind NAT, set it to the address players use.; For a second game server on the same machine use the next ports (14010 / 20002 / 7140).; Needs config\ and clientconfig\ (gameplay tables) next to the exe. They are not part of these examples.
[Default]NAME=Game1SERVERNO=1CSPORT=14009SSPORT=20001MSPORT=7139ClientMoveIP=Log=MLOG; LosaDev example - game server tuning. Values follow the original Korean config where it had one.; [Local] Version selects the region build. 119483910 is the Korean version used by the original config.
[NETWORK]PrivateIPFirstByte=192UseMonitoring=0
[Local]Version=119483910
[TEST]UseTest=0LocalTest=1
; Anti-cheat switches. Keep them off for a development server.[NProtect]use=0
[Xtrap]use=0
[Nagle]Nagle_Time=70Nagle_RefCnt=50
[Server Session]SendBufferSize=65536
[User Session]SendBufferSize=32768
[DBAgent Session]SendBufferSize=65536
[MainServer Session]SendBufferSize=32768
[GameLogDB Session]SendBufferSize=32768
[BillingRelay Session]SendBufferSize=32768
[Packet Recv Queue]FirstQueue=1000ExtendQueue=100
[MemoryPool]user_pool=1500server_pool=16room_pool=1000battleroom_pool=3000shuffleroom_pool=3000ladderteam_pool=3000channel_pool=10000monitoring_pool=10
[SECURITY]ON=0ONE_SEC_RCV=30CSPORT is where the client connects, on both TCP and UDP. SSPORT is what the relay and login servers connect to. MSPORT only opens on 127.0.0.1 when UseMonitoring=1.
[Local] Version=119483910 is the Korean version, which the original config uses for both the game and the billing server.
Billing server
Section titled “Billing server”; LosaDev example - billing server. Start with: ls_billingsvr.exe -c ls_billingsvr.ini; Note the section name [DEFAULT]. PrivateIPFirstByte defaults to 10 here, so set it.; Also needs config\GoodsList.ini and config\GoodsName.ini (samples are in src\ls_billingsvr\config\).
[DEFAULT]NAME=ls_billingsvr_1PrivateIPFirstByte=192PORT=14011MSPORT=7149ManagerToolPort=48801NexonSessionDomainSn=0Log=MLOG
[Test]TestMode=0TestGold=0; LosaDev example - billing server tuning.; Publisher API sections ([Channeling] and the per-country ones) are left out on purpose.; Never share a real ls_config_billingsvr.ini: it holds publisher API keys and secrets.
[NETWORK]UseMonitoring=0
[Local]Version=119483910
[RecvQueue]FirstQueue=100
[Server Session Buffer]SendBufferSize=16384RecvBufferSize=16384
[MemoryPool]server_pool=10monitoring_pool=10BillingInfoPool=5000DataPool=20000ThreadPool=16
[SECURITY]ON=0ONE_SEC_RCV=30
[BillInfoTimeout]MaxAliveTime=300000The billing server does not start without config\GoodsList.ini and config\GoodsName.ini. Samples are in src\ls_billingsvr\config\ in every release.
Relay and login servers
Section titled “Relay and login servers”; LosaDev example - UDP relay. Start with: ls_relaysvr.exe -c ls_relaysvr.ini; Port: comma-separated UDP ports. The first one is also the TCP port.; Game server list numbered from 1: N=name,ip,SSPORT. The list ends at the first missing or malformed line.
[Default]Port=55001Log=MLOG1=Game1,127.0.0.1,20001; LosaDev example - relay tuning. PRIVATEIPFIRSTBYTE defaults to 192 here.
[RELAYSERVERINFO]RECONNECTTIME=3000SERVERFULLCOUNT=1000ROOMMAX=3000USERINFOMAX=5000
[COMMONINFO]WORKERCOUNT=5FIRSTRECVQUEUE=1000PRIVATEIPFIRSTBYTE=192
[MONITORNODEINFO]MAXPOOL=10000USESECURITY=0
[NAGLE]Nagle_Time=30; LosaDev example - login server. Start with: ls_loginsvr.exe -c ls_loginsvr.ini; Game server list numbered from 0 (not 1): N=name,ip,SSPORT.; No spaces inside the values: "0=Game1, 127.0.0.1, 20001" stops the server from starting.
[Default]Port=40005Partition=0Log=MLOG0=Game1,127.0.0.1,20001; LosaDev example - login server tuning.; ls_blacklist.ini and ls_whitelist.ini (same folder) are plain lists of IPs or a.b.c.d/x ranges, one per line.
[COMMONINFO]WORKERCOUNT=5FIRSTRECVQUEUE=1000
; Address and port the login server accepts clients on (the original config sets both)[ACCEPTORINFO]IP=127.0.0.1PORT=40005
[GAMESERVERCONNECTORINFO]RECONNECTTIME=3000SERVERFULLCOUNT=1000REQUESTSERVERINFOTIME=3000
[CLIENTNODEINFO]MAXPOOL=10000GHOSTCLIENTTIME=3000SCANGHOSTCLIENTTIME=2500MAXWAIT=100USESECURITY=1USERINFOMAX=5000
[NAGLE]Nagle_Time=30File write server
Section titled “File write server”; LosaDev example - file write server (user uploads). Start with: ls_filewritesvr.exe -c ls_filewritesvr.ini
[Default]Log=MLOG; LosaDev example - file write server settings (guild marks and custom gear uploads).; Every ExtN/PathN/TempPathN/ErrorPathN set must be filled, numbered from 1 up to Max.; [UserUpload] paths are required even when Use=0. Folders are created automatically.
[NETWORK]IP=127.0.0.1PORT=14030
[WriteFile]Max=2Ext1=jpgPath1=C:\lsupload\upFiles\guildmarkTempPath1=C:\lsupload\FileWriteServer\TempGuildMarkErrorPath1=C:\lsupload\FileWriteServer\ErrorGuildMarkExt2=lscPath2=C:\lsupload\upFiles\gearTempPath2=C:\lsupload\FileWriteServer\TempGearErrorPath2=C:\lsupload\FileWriteServer\ErrorGear
[UserUpload]Use=1Path=C:\lsupload\upFiles\skinTempPath=C:\lsupload\FileWriteServer\TempSkinErrorPath=C:\lsupload\FileWriteServer\ErrorSkin
[Session Buffer]SendBufferSize=16384RecvBufferSize=16384
[MemoryPool]user_pool=3000
[SECURITY]ON=0ONE_SEC_RCV=30Never share these files as they are
Section titled “Never share these files as they are”Real server folders often contain files you must clean before sharing them with anyone:
ls_mainsvr\ls_auth.ini: GM tool accounts and their passwords.ls_billingsvr\ls_config_billingsvr.ini: publisher API keys and client secrets.- Every
ls_dbagentini: the SQL login and its (encoded, but reversible) password.
Not confirmed yet
Section titled “Not confirmed yet”- Whether
[Log]pointed at a DB agent in log server mode or at a separate log server program in the original setup. - The
[Local] Versionvalues for the other region builds. - How the servers behave as Windows services instead of
-cconsole mode.
If you get a server running with these files, please share what you had to change.
