Skip to content

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.

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.

  • 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/
      • …
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.

  1. ls_dbagent_game\ls_dbagent.exe -c ls_dbagent.ini
  2. ls_dbagent_logdb\ls_dbagent.exe -c ls_dbagent.ini
  3. ls_dbagent_logserver\ls_dbagent.exe -c ls_dbagent.ini
  4. ls_mainsvr\ls_mainsvr.exe -c ls_mainsvr.ini
  5. ls_billingsvr\ls_billingsvr.exe -c ls_billingsvr.ini
  6. ls_gamesvr\ls_gamesvr.exe -c ls_gamesvr.ini
  7. ls_relaysvr\ls_relaysvr.exe -c ls_relaysvr.ini and ls_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.

  • Comments must start the line. Port=9000 ; game port makes the value 9000 ; 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.
  • PrivateIPFirstByte must match your machine. It is the first number of your private IP: 192 for 192.168.x.x, 10 for 10.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. PrivateIPFirstByte defaults 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 yourpassword and put the printed value in PW. 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 at 0, the relay list at 1.
  • No spaces in server lists. The login server does not trim name,ip,port, so a space breaks it.

Shared by all servers, placed in the parent folder of the server folders.

server/global_define.ini
; 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].

The same ls_dbagent.exe runs three times: once for LosaGame, once for LosaLogData, and once as a log server.

ls_dbagent_game/ls_dbagent.ini
; 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=30001
LogServerPort=0
Log=MLOG
[SQL]
IP=127.0.0.1
Port=1433
Database=LosaGame
ID=lstggame
PW=<output of ls_dbagent.exe -x>
ls_dbagent_logdb/ls_dbagent.ini
; 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=30002
LogServerPort=0
Log=MLOG2
[SQL]
IP=127.0.0.1
Port=1433
Database=LosaLogData
ID=lstglog
PW=<output of ls_dbagent.exe -x>
ls_dbagent_logserver/ls_dbagent.ini
; 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=30003
LogServerPort=30003
Log=MLOG3
ls_config_dba.ini (copy into every DB agent folder)
; 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=16
ThreadIndexSeqStyle=0
[Session Buffer]
SessionCount=10
SendBufferSize=16384
RecvBufferSize=16384
ls_query.ini
; 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=0
ls_mainsvr/ls_mainsvr.ini
; 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=40000
ManagerToolPort=40001
Log=MLOG
ls_mainsvr/ls_config_main.ini
; LosaDev example - main server tuning. Values are the defaults from the code unless noted.
[NETWORK]
PrivateIPFirstByte=192
UseManageToolPrivateIP=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=0
ClientVersion=0
[RecvQueue]
FirstQueue=100
[Server Session Buffer]
SendBufferSize=16384
RecvBufferSize=16384
[Manager Session Buffer]
SendBufferSize=16384
RecvBufferSize=16384
[GameDB Buffer]
SendBufferSize=16384
RecvBufferSize=16384
[GameLogDB Buffer]
SendBufferSize=16384
RecvBufferSize=16384
CCU_sync_time=5
[MemoryPool]
server_pool=10
tool_pool=10
matchnode_pool=5000
matchuser_pool=10000
[SECURITY]
ON=0
ONE_SEC_RCV=30

In the 2014 source the main server has no [MatchingTime] and no match pools, and CCU_sync_time defaults to 10.

ls_gamesvr/ls_gamesvr.ini
; 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=Game1
SERVERNO=1
CSPORT=14009
SSPORT=20001
MSPORT=7139
ClientMoveIP=
Log=MLOG
ls_gamesvr/ls_config_game.ini
; 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=192
UseMonitoring=0
[Local]
Version=119483910
[TEST]
UseTest=0
LocalTest=1
; Anti-cheat switches. Keep them off for a development server.
[NProtect]
use=0
[Xtrap]
use=0
[Nagle]
Nagle_Time=70
Nagle_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=1000
ExtendQueue=100
[MemoryPool]
user_pool=1500
server_pool=16
room_pool=1000
battleroom_pool=3000
shuffleroom_pool=3000
ladderteam_pool=3000
channel_pool=10000
monitoring_pool=10
[SECURITY]
ON=0
ONE_SEC_RCV=30

CSPORT 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.

ls_billingsvr/ls_billingsvr.ini
; 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_1
PrivateIPFirstByte=192
PORT=14011
MSPORT=7149
ManagerToolPort=48801
NexonSessionDomainSn=0
Log=MLOG
[Test]
TestMode=0
TestGold=0
ls_billingsvr/ls_config_billingsvr.ini
; 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=16384
RecvBufferSize=16384
[MemoryPool]
server_pool=10
monitoring_pool=10
BillingInfoPool=5000
DataPool=20000
ThreadPool=16
[SECURITY]
ON=0
ONE_SEC_RCV=30
[BillInfoTimeout]
MaxAliveTime=300000

The billing server does not start without config\GoodsList.ini and config\GoodsName.ini. Samples are in src\ls_billingsvr\config\ in every release.

ls_relaysvr/ls_relaysvr.ini
; 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=55001
Log=MLOG
1=Game1,127.0.0.1,20001
ls_relaysvr/ls_config_relay.ini
; LosaDev example - relay tuning. PRIVATEIPFIRSTBYTE defaults to 192 here.
[RELAYSERVERINFO]
RECONNECTTIME=3000
SERVERFULLCOUNT=1000
ROOMMAX=3000
USERINFOMAX=5000
[COMMONINFO]
WORKERCOUNT=5
FIRSTRECVQUEUE=1000
PRIVATEIPFIRSTBYTE=192
[MONITORNODEINFO]
MAXPOOL=10000
USESECURITY=0
[NAGLE]
Nagle_Time=30
ls_loginsvr/ls_loginsvr.ini
; 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=40005
Partition=0
Log=MLOG
0=Game1,127.0.0.1,20001
ls_loginsvr/ls_config_login.ini
; 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=5
FIRSTRECVQUEUE=1000
; Address and port the login server accepts clients on (the original config sets both)
[ACCEPTORINFO]
IP=127.0.0.1
PORT=40005
[GAMESERVERCONNECTORINFO]
RECONNECTTIME=3000
SERVERFULLCOUNT=1000
REQUESTSERVERINFOTIME=3000
[CLIENTNODEINFO]
MAXPOOL=10000
GHOSTCLIENTTIME=3000
SCANGHOSTCLIENTTIME=2500
MAXWAIT=100
USESECURITY=1
USERINFOMAX=5000
[NAGLE]
Nagle_Time=30
ls_filewritesvr/ls_filewritesvr.ini
; LosaDev example - file write server (user uploads). Start with: ls_filewritesvr.exe -c ls_filewritesvr.ini
[Default]
Log=MLOG
ls_filewritesvr/FileWriteServerInfo.ini
; 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.1
PORT=14030
[WriteFile]
Max=2
Ext1=jpg
Path1=C:\lsupload\upFiles\guildmark
TempPath1=C:\lsupload\FileWriteServer\TempGuildMark
ErrorPath1=C:\lsupload\FileWriteServer\ErrorGuildMark
Ext2=lsc
Path2=C:\lsupload\upFiles\gear
TempPath2=C:\lsupload\FileWriteServer\TempGear
ErrorPath2=C:\lsupload\FileWriteServer\ErrorGear
[UserUpload]
Use=1
Path=C:\lsupload\upFiles\skin
TempPath=C:\lsupload\FileWriteServer\TempSkin
ErrorPath=C:\lsupload\FileWriteServer\ErrorSkin
[Session Buffer]
SendBufferSize=16384
RecvBufferSize=16384
[MemoryPool]
user_pool=3000
[SECURITY]
ON=0
ONE_SEC_RCV=30

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_dbagent ini: the SQL login and its (encoded, but reversible) password.
  • Whether [Log] pointed at a DB agent in log server mode or at a separate log server program in the original setup.
  • The [Local] Version values for the other region builds.
  • How the servers behave as Windows services instead of -c console mode.

If you get a server running with these files, please share what you had to change.