Games/돈스타브 투게더

[구버전] 데디케이티드 서버(Dedicated Server) 만들기 - 중급자 버전

la Nube 2017. 7. 3. 12:28
반응형

2015.11.25 수정 사항
 -
worldgenoverride.lua 파일 수정


다음의 내용은 http://la-nube.tistory.com/111 및 http://cafe.naver.com/babmukda/67002 에서

생략한 내용을 다루고 있으며, 중급자 이상을 위한 것입니다.


데디케이티드 서버(Dedicated Server) 만들기를 통해

서버를 성공적으로 구축한 경우에만 따라하시기 바랍니다.

http://la-nube.tistory.com/111

http://cafe.naver.com/babmukda/67002

7번을 제외하고는 1번~6번 중에 필요한 부분만 적용해도 괜찮습니다.
예를 들어, 1번 내용만 써도 상관없으며, 2번과 4번만 사용해도 괜찮습니다.


1. 바로가기를 이용하여 서버 실행하기




스팀 라이브러리 → 도구 → Don't Starve Together Dedicated Server 우클릭 → 속성 → 로컬 파일 탭 → 로컬 컨텐츠 폴더 보기 ... 를 클릭합니다.





로컬 컨텐츠 폴더가 나올 것입니다. 그 중 bin 폴더로 들어갑니다.




dontstarve_dedicated_server_nullrenderer.exe의 바로가기를 바탕화면에 만들어 줍니다.
(우클릭 - 보내기 - 바탕화면에 바로가기 만들기)

바로가기 2개를 만들어 이름을 DST_Overworld나 DST_Caves 등으로 바꾸어 줍니다.



 


지상서버로 연결할 바로가기를 우클릭 - 속성으로 들어가 대상(T)에 다음과 같이 시작옵션을 부여합니다. 

"~~dontstarve_dedicated_server_nullrenderer.exe" 다음에 한 칸을 띄우고,
-backup_logs -console -conf_dir DoNotStarveTogether_EasyConfigOverworld 를 넣어 줍니다.




동굴서버로 연결할 바로가기를 우클릭 - 속성으로 들어가 대상(T)에 다음과 같이 시작옵션을 부여합니다.

"~~dontstarve_dedicated_server_nullrenderer.exe" 다음에 한 칸을 띄우고,
-backup_logs -console -conf_dir DoNotStarveTogether_EasyConfigCaves 를 넣어 줍니다.



 

2. 어드민 리스트와 블락 리스트 관리하기
 



문서\Klei\DoNotStarveTogether_EasyConfigOverworld\save 의 경로에
adminlist.txt 파일과 blocklist.txt 파일이 있습니다.
만약, 없는 경우에는 메모장으로 새로 만들면 됩니다.




저의 어드민 리스트를 살펴보겠습니다.
리스트에는 KU_ 로 시작하는 돈스타브 고유코드를 넣어야 합니다.

돈스타브 고유코드는 로그 기록을 확인하여 닉네임과 일치하는 것을 찾으시면 편합니다.
또는, 게임 내에서 백스페이스를 눌러 오른쪽 하단에 나오는 User ID를 입력하시면 됩니다. 
(돈스타브 고유코드는 알파벳 대문자, 소문자, 숫자, 특수기호 등이 섞여 있기 때문에
로그 기록에서 닉네임과 일치하는 것을 찾아 직접 복사 후 붙여넣기를 권장합니다.)

각 어드민의 구분은 엔터로 하면 됩니다.

블락 리스트도 역시 같은 방법으로 넣으면 됩니다.
데디케이티드 서버를 돌리는 중에, 어드민 리스트나 블락 리스트를 수정하는 경우에는
서버를 재시작하여야만 수정한 내용이 적용되니 유의하세요.




이제, 동굴서버에도 어드민 리스트와 블락리스트를 적용하기 위해
위에서 만든 파일을 복사-붙여넣기 해야 합니다.

문서\Klei\DoNotStarveTogether_EasyConfigOverworld\save 에 있는
adminlist.txt 파일과 blocklist.txt 파일을
문서\Klei\DoNotStarveTogether_EasyConfigCaves\save 의 경로

복사-붙여넣기 합니다.







3-1. 지상서버의 settings.ini 세부 설정 더 추가하기


지상서버의 [network] 부분에서 거의 필수로 해야 하는 설정은 다음과 같습니다.

tick_rate = 10
데디케이티드 서버의 대역폭과 CPU 사용 정도를 결정합니다.
선택할 수 있는 값은 10, 15, 30, 60 이 있습니다.

서버 성능을 올리기 위해 제일 낮은 10으로 설정합니다.



(경고) 다음의 내용들은 이미 기본값으로 설정되어 있으므로,

반드시 필요한 경우에만 추가해야 합니다.

불필요한 경우, 예기치 못한 오류가 발생할 수 있습니다.


지상서버의 [MISC] 부분에서 추가할 수 있는 내용은 다음과 같습니다.


max_snapshots = 1 또는 2 또는 3 또는 4 또는 5
스냅샷을 몇 개로 할 것인가입니다.
기본값은 5 이며, 1~5 사이에서 변경 가능합니다.


지상서버의 [network] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

server_save_slot = 1
데디케이티드 서버의 세이브가 어느 슬롯에 저장될 지를 결정합니다.
선택할 수 있는 값은 1, 2, 3, 4, 5 가 있으며, 기본값은 1 입니다.

whitelist_slot = 0
서버에 화이트리스트를 위한 자리를 예약하며, 기본값은 0 (예약하지 않음) 입니다.
whitelist_slot 의 최대값은 max_player 이며, 화이트리스트가 아닌 유저들은
max_player 에서 whitelist_slot 을 뺀 숫자만큼만 입장 가능합니다.
화이트리스트는 whitelist.txt 이며, adminlist.txt와 blocklist.txt와 같은 경로에 있어야 합니다.
 
enable_vote_kick = truefalse
데디케이티드 서버에서 어드민이 없는 경우에,
다수결 투표에 의하여 유저를 킥(추방)할 수 있는 기능입니다.
true는 이것을 가능하도록, false는 불가능하게 설정합니다.

enable_autosaver = true 또는 false
현재, 돈스타브 투게더와 데디케이티드 서버의 자동저장 기능입니다.
게임 내에서 날이 바뀔 때마다 자동으로 게임을 저장합니다.
true는 이것을 가능하도록, false는 불가능하게 설정합니다.
기본값은 true 입니다.

connection_timeout = 8000
서버 연결에서 응답 없는 유저와의 연결을 일정 시간이 지나면 종료합니다.
기본값은 8000으로 설정되어 있으며, 이것은 8000ms를 의미합니다.
1ms는 0.001초이므로, 8000ms는 8초입니다.

pause_when_empty = false 또는 true
데디케이티드 서버에 아무도 없는 경우에도 시간이 흐르도록 하는 것이 false 이며,
아무도 없는 경우에는 시간을 정지하도록 하는 것이 true 입니다.
기본값은 false 입니다.

enable_snapshots = true 또는 false
데디케이티드 서버에서 스냅샷 기능을 설정합니다.
http://cafe.naver.com/babmukda/67219 의 내용을 참고하세요.
기본값은 true 입니다.
 
server_port = 10999
데디케이티드 서버가 사용하는 1개의 필수 포트를 설정합니다.
자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.
기본값은 10999 입니다.

steam_group_id =
steam_group_only = false 또는 true
http://forums.kleientertainment.com/topic/55994-server-admin-associate-your-server-with-a-steam-group/ 에 나오는 스팀 그룹 관련 내용입니다. 해당사항이 없다면 그냥 놔두면 됩니다.
기본값은 위는 빈칸, 아래는 false 입니다.
 

지상서버의 [account] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

lan_only_server = false 또는 true
랜(LAN) 전용으로 서버를 여는 경우에만 true로, 그 외의 경우에는 false로 해야 합니다.
기본값은 false 입니다.


지상서버의 [shard] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

master_port = 10888
지상서버와 동굴서버를 연결하는 포트입니다.
하나의 PC에서 돌리는 경우에는 불필요합니다.
다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 서로 연결하는 경우에는
지상서버를 여는 PC에서 10888 포트에 대하여 포트포워딩이 필요합니다.
공유기나 사설방화벽이 없다면 불필요합니다.
자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.

bind_ip = 127.0.0.1
또는 0.0.0.0
하나의 PC에서 돌리는 경우에 127.0.0.1 로 기본 설정되어 있습니다.
​다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 연결하는 경우에는
위 설정에서 127.0.0.1 을 0.0.0.0 으로 변경해야 합니다.



3-2. 동굴서버의 settings.ini 세부 설정 더 추가하기


동굴서버의 [network] 부분에서 거의 필수로 해야 하는 설정은 다음과 같습니다.

tick_rate = 10

데디케이티드 서버의 대역폭과 CPU 사용 정도를 결정합니다.
선택할 수 있는 값은 10, 15, 30, 60 이 있습니다.

서버 성능을 올리기 위해 제일 낮은 10으로 설정합니다.



(경고) 다음의 내용들은 이미 기본값으로 설정되어 있으므로,

반드시 필요한 경우에만 추가해야 합니다.

불필요한 경우, 예기치 못한 오류가 발생할 수 있습니다.



동굴서버의 [MISC] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

max_snapshots = 1 또는 2 또는 3 또는 4 또는 5
스냅샷을 몇 개로 할 것인가입니다.
기본값은 5 이며, 1~5 사이에서 변경 가능합니다.


동굴서버의 [network] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

server_save_slot = 1
데디케이티드 서버의 세이브가 어느 슬롯에 저장될 지를 결정합니다.
선택할 수 있는 값은 1, 2, 3, 4, 5 가 있으며, 기본값은 1 입니다.

whitelist_slot = 0
서버에 화이트리스트를 위한 자리를 예약하며, 기본값은 0 (예약하지 않음) 입니다.
whitelist_slot 의 최대값은 max_player 이며, 화이트리스트가 아닌 유저들은
max_player 에서 whitelist_slot 을 뺀 숫자만큼만 입장 가능합니다.
화이트리스트는 whitelist.txt 이며, adminlist.txt와 blocklist.txt와 같은 경로에 있어야 합니다.
 
enable_vote_kick = truefalse
데디케이티드 서버에서 어드민이 없는 경우에,
다수결 투표에 의하여 유저를 킥(추방)할 수 있는 기능입니다.
true는 이것을 가능하도록, false는 불가능하게 설정합니다.

enable_autosaver = true 또는 false
현재, 돈스타브 투게더와 데디케이티드 서버의 자동저장 기능입니다.
게임 내에서 날이 바뀔 때마다 자동으로 게임을 저장합니다.
true는 이것을 가능하도록, false는 불가능하게 설정합니다.
기본값은 true 입니다.

connection_timeout = 8000
서버 연결에서 응답 없는 유저와의 연결을 일정 시간이 지나면 종료합니다.
기본값은 8000으로 설정되어 있으며, 이것은 8000ms를 의미합니다.
1ms는 0.001초이므로, 8000ms는 8초입니다.

enable_snapshots = true 또는 false
데디케이티드 서버에서 스냅샷 기능을 설정합니다.
http://cafe.naver.com/babmukda/67219 의 내용을 참고하세요.
기본값은 true 입니다.
 
server_port = 11000
데디케이티드 서버가 사용하는 1개의 필수 포트를 설정합니다.
자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.
기본값은 11000 입니다.


동굴서버의 [account] 부분에서 추가할 수 있는 내용은 다음과 같습니다.

lan_only_server = false 또는 true
랜(LAN) 전용으로 서버를 여는 경우에만 true로, 그 외의 경우에는 false로 해야 합니다.
기본값은 false 입니다.



동굴서버의 [shard] 부분에서 추가할 수 있는 내용은 다음과 같습니다.


master_port = 10888
지상서버와 동굴서버를 연결하는 포트입니다.
하나의 PC에서 돌리는 경우에는 불필요합니다.
다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 서로 연결하는 경우에는

지상서버를 여는 PC에서 지정한 포트번호를 입력해야 합니다.

자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.


master_ip = 127.0.0.1 또는 외부IP
하나의 PC에서 돌리는 경우에 127.0.0.1 로 기본 설정되어 있습니다.
다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 연결하는 경우에는
지상서버를 여는 PC의 실제 외부IP를 입력하여야 합니다.




4. 포트포워딩 (공유기 또는 사설방화벽을 사용하는 경우에만)


공유기나 사설방화벽을 사용하지 않으면,
다음의 내용은 전혀 필요하지 않습니다.

데디케이티드 서버는 들어오는 연결의 포트가 닫혀 있다면,
자동으로 스팀P2P 방식으로 연결이 전환됩니다.
다만, 스팀P2P 방식은 연결이 불안정한 단점이 있습니다.

그래서 중급자 버전에서는 스팀P2P 방식보다는
포트포워딩을 통해 직접 연결하는 방식을 선호합니다.

공유기나 사설방화벽을 사용하는 경우에는
10999 UDP 포트, 11000 UDP 포트에 대하여
포트포워딩이나 파워 DMZ와 같은 조치를 해줍니다.

포트포워딩이나 파워 DMZ와 관련해서는
네이버 또는 구글 검색으로 알아보기 바랍니다.


다만, 공유기 사용자의 경우에는 자신이 만든 데디케이티드 서버로 들어가기 위해서는

서버목록의 Online이 아닌 LAN에서 입장하여야 합니다.

공유기가 없다면, 서버목록의 Online에서 바로 입장이 가능합니다.




5. modoverrides.lua에 모드 세부설정 넣기

초급자 버전에서 모드를 제대로 적용하였다면, 다음의 예시처럼 되어 있을 것입니다.
modoverrides.lua 파일을 메모장으로 열어 보았습니다.

return {

    --Wormhole Marks
    ["workshop-362175979"] = { enabled = true },

    --Health Info
    ["workshop-375859599"] = { enabled = true },

    --Global Player Icons
    ["workshop-373991022"] = { enabled = true }

}

여기서 위 3개의 모드 중에 Health Info 모드는 모드 자체에 세부설정이 있는 모드입니다.
이 모드의 세부설정을 수정하고 싶다면 다음과 같이 하면 됩니다.




스팀 라이브러리 → 도구 → Don't Starve Together Dedicated Server 우클릭 → 속성 → 로컬 파일 탭 → 로컬 컨텐츠 폴더 보기 ... 를 클릭합니다.





로컬 컨텐츠 폴더가 나올 것입니다. 그 중 mods 폴더로 들어갑니다.





해당하는 모드를 찾은 다음에 modinfo.lua 파일을 메모장으로 열어 줍니다.





여기서는 Health Info 모드의 modinfo.lua 파일을 열어 보겠습니다.

configuration_options = 으로 시작하는 부분이 바로 모드의 세부설정이 됩니다.




configuration_options =
{
    {
        name = "show_type",
        label = "Show Type",
        options =
        {
            {description = "Value", data = 0},
            {description = "Percentage", data = 1},
            {description = "Both", data = 2},
        },
        default = 0,
    },
    {
        name = "divider",
        label = "Divier Type",
        options =
        {
            {description = "100/100", data = 0},
            {description = "-100/100-", data = 1},
            {description = "[100/100]", data = 2},
            {description = "(100/100)", data = 3},
            {description = "{100/100}", data = 4},
            {description = "<100/100>", data = 5},
        },
        default = 5,
    }
}


위의 세부설정 중에 필요한 것은 name 과 data 입니다.

name 과 data 를 사용하여 modoverrides.lua 파일을 다시 만들어 보겠습니다.




return {

    --Wormhole Marks
    ["workshop-362175979"] = { enabled = true },

    --Health Info
    ["workshop-375859599"] = { enabled = true,

        configuration_options =
        {

        show_type = 2,

        divider = 4

        }

 },

    --Global Player Icons
    ["workshop-373991022"] = { enabled = true }

}


위와 같이 세부설정을 주면 됩니다.

name = data,

name = data,

name = data

의 형식으로 만들어서 넣어주면 됩니다.


이때 name 에서 주의해야 할 사항은 따옴표(" ")는 넣지 않아야 합니다.

그리고 대소문자를 반드시 구분해야 합니다. 그대로 복사해서 쓰는 것이 편합니다.


data 에서는 아래의 default = 0 과 같이 나온 것을 참고해서 같은 형식으로 넣어야 합니다.

data 는 숫자 외에 문자의 형태를 가질 수도 있으며, 따옴표(" ")가 있다면 같이 넣어야 합니다.

즉, default = "true" 로 되어 있다면, name = "true" 의 형식으로 넣어야 합니다.


다 만든 modoverrides.lua 파일은 지상서버뿐만 아니라, 동굴서버에도 동일한 것으로 넣어야 합니다.


항상 그러하듯 반점(,)과 괄호를 빼먹거나 더 넣거나 그러면 모드가 아예 적용되지 않습니다.




더 복잡한 예시는 다음과 같습니다. 다음은 심플 프로텍션 모드의 세부설정의 예시입니다.


    --Simple Protection
    ["workshop-360823660"] = { enabled = false,
        configuration_options =
        {
        --Starting day
        starting_day = 10,

        --Minimum days (1 day = players don't need to wait to use everything, 2 days = players need to wait 1 day to use something.. etc.)
        min_days = 3,

        --Container protection (chests, chester, icebox..)
        container_protection = "false",

        --Crock pot protection (use and harvest)
        stewer_protection = "false",

        --Backpack protection
        backpack_protection = "false",

        --Ghost break/light on fire/other stuff protection
        ghost_protection = "true",

        --Willow fire starting protection
        willow_love = "false",

        --Fireproof bushes
        bushes_protection = "false",

        --Undigable bushes (for fresh players)
        bushes_dig_protection = "false",

        --Disable fire spread
        fire_spread_protection = "false"


        }


    },



모드와 관련하여 자세한 내용은 Espion 님이 작성한
http://cafe.naver.com/babmukda/83439 를 참고하기 바랍니다.




6. 동굴서버의 worldgenoverride.lua 파일 수정하기

초급자 버전에서 제대로 따라하였다면, 다음의 예시처럼 되어 있을 것입니다.
worldgenoverride.lua 파일을 메모장으로 열어 보았습니다.


return { override_enabled = true, preset="DST_CAVE" }



이제 지상서버처럼 동굴서버도 세부설정을 할 수 있습니다.

다음과 같이 수정하면 됩니다.


return { override_enabled = true, preset="DST_CAVE",

    misc={
        earthquakes="default", --options are "never", "rare", "default", "often", "always"

        regrowth="default", --options are "veryslow", "slow", "default", "fast", "veryfast"

        cavelight="default" --options are "veryslow", "slow", "default", "fast", "veryfast"

    },

    resources={ --options are "never", "rare", "default", "often", "always"
        grass="default",
        sapling="default",
        marshbush="default",
        reeds="default",
        trees="default",
        flint="default",
        rock="default",
        mushtree="default",
        fern="default",
        flower_cave="default",
        wormlights="default"
    },

    unprepared={ --options are "never", "rare", "default", "often", "always"
        berrybush="default",
        mushroom="default",
        banana="default",
        lichen="default"
    },

    animals={ --options are "never", "rare", "default", "often", "always"

        cave_ponds="default",

        slurper="default",
        bunnymen="default",
        slurtles="default",
        rocky="default",
        monkey="default"
    },

    monsters={ --options are "never", "rare", "default", "often", "always"
        cave_spiders="default",
        tentacles="default",
        chess="default",
        liefs="default",
        bats="default",
        fissure="default",
        worms="default"
    }
}

지상서버의 worldgenoverride.lua 파일과는 내용이 다르니 주의하기 바랍니다.

그리고 동굴에 존재하지 않는 설정을 넣는 경우에 심각한 오류가 발생할 수 있습니다.


동굴서버에서만 사용 가능한 worldgenoverride.lua 파일을 첨부파일로 올립니다.


worldgenoverride.lua




7. [고급자 버전] 2대의 PC에서 지상과 동굴서버를 각각 열어 서로 연결하기


중급자 버전까지 데디케이티드 서버에 대한 이해가 완벽한 상태에서 진행해야 합니다.

따라서 여기서부터는 이미 다 안다는 가정 하에 많은 내용을 생략하겠습니다.


2대의 PC에서 각각의 서버를 열어 서로 연결하기 위해서는 다음의 준비물이 필요합니다.

1. 지상서버를 여는 PC (이하 지상PC)

2. 동굴서버를 여는 PC (이하 동굴PC)

3. 지상PC가 공유기나 사설방화벽을 사용하는 경우에는 10888 UDP 포트에 대하여 포트포워딩

4. 지상PC와 동굴PC 모두 위의 1번을 적용하여 바로가기를 만든 상태일 것


지상PC는 3번의 지상서버 settings.ini에서 bind_ip = 0.0.0.0 으로 변경합니다.

동굴PC는 4번의 동굴서버 settings.ini에서 master_ip = 지상PC의 실제 외부IP 로 변경합니다.

지상PC와 동굴PC는 각각의 settings.ini에서 master_port = 10888 로 지정합니다.


지상PC의 실제 외부IP는 다음 사이트를 이용하여 알아내면 됩니다.

http://ipip.kr/   http://whatsmyuseragent.com


그 외에 지상서버와 동굴서버 간에 동일해야 하는 부분과 달라야 하는 부분을 명확하게 한 다음에 각각의 바로가기를 통해 서버를 열면 됩니다.





2015년 11월 20일에 테스트한 부분입니다. ws77 님의 동굴서버와의 연결에 성공하였습니다.




※ 첨부파일에 명령어 부분을 따로 올립니다. 참고하시기 바랍니다.


윈도 명령어.txt


반응형