Games/돈스타브 투게더

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

la Nube 2017. 7. 3. 13:26
반응형

2016.04.24 수정 사항
 -
게임 업데이트(빌드 174499) / cluster.ini에 languae_code 추가

 - 동굴 worldgenoverride.lua 내용 일부 변경


2016.04.21 수정 사항
 -
게임 업데이트(빌드 174200) / 동굴 worldgenoverride.lua 내용 변경


2016.04.15 수정 사항
 -
게임 업데이트(빌드 172848) / 동굴 worldgenoverride.lua 내용 변경


2016.03.26 수정 사항

 - 게임 업데이트 / 커맨드라인 -console 제거


2016.02.27 수정 사항

 - 게임 업데이트 / cluster.ini 세부설정 수정


2016.02.21 수정 사항

 - 세이브 슬롯 여러 개 만들기 추가


2016.02.12 수정 사항
 -
서버 구조가 변경됨에 따라 전체적으로 수정


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



데디케이티드 서버(Dedicated Server) 만들기 - 초급자 버전

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

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


다음의 내용은 초급자 버전에서 생략한 내용을 다루고 있으며,

중급자 이상을 위한 것입니다. 따라서 초급자 버전을 통해

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


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


데디케이티드 서버(Dedicated Server) 만들기 - 리눅스 편도 공개합니다.
http://la-nube.tistory.com/117
http://cafe.naver.com/babmukda/77944



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

 



문서 - Klei - DedicatedServer - Cluster_1 의 경로에

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




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

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

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

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







2-1. 서버 클러스터의 cluster.ini 세부설정 이해하기

 


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

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

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


[MISC] 부분의 내용은 다음과 같습니다.


console_enabled = true

콘솔명령어를 사용할 수 있는 를 보여줍니다.

기본값은 true, 즉 사용한다는 것입니다.

특히, 데디케이티드 서버에서는 false로 하면 안 됩니다.


language_code = korean 

데디케이티드 서버의 국적(?)을 보여주는 좋은 예입니다.

기본값은 enlgish, 즉 영어로 되어 있습니다만,

우리는 한국어를 쓰는 한국인이므로 korean으로 변경하였습니다.



[SHARD] 부분의 내용은 다음과 같습니다.

shard_enabled = true
마스터(지상)서버와 케이브(동굴)서버를 서로 연결할 지 묻습니다.
기본값은 true, 즉 연결한다는 것입니다.

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

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

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


cluster_key = supersecretkey

하나의 PC에서 돌리는 경우에는 딱히 필요하지 않습니다.

다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 연결하는 경우에

서로가 맞는지 확인하는 일종의 암구호(?) 같은 역할을 합니다.

2대의 PC의 클러스터 키가 일치해야 서로 연결할 수 있습니다.



[GAMEPLAY] 부분에서 추가할 수 있는 내용은 다음과 같습니다.


vote_kick_enabled = truefalse
데디케이티드 서버에서 어드민이 없는 경우에,
다수결 투표에 의하여 유저를 킥(추방)할 수 있는 기능입니다.
true는 이것을 가능하도록, false는 불가능하게 설정합니다.
기본값은 false 입니다.


[NETWORK] 부분에서 추가할 수 있는 내용은 다음과 같습니다.


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

tick_rate = 15
데디케이티드 서버의 대역폭 사용 정도를 결정합니다.
선택할 수 있는 값은 15, 20, 30, 60 이 있으며, 기본값은 15입니다.
게임개발사는 랜(LAN) 전용에서만 15보다 높은 값을 사용하라고 권고합니다.
랜(LAN) 전용이 아닌 일반적인 네트워크 환경에서는 트래픽 과부하의 원인이 됩니다.

whitelist_slot = 0
서버에 화이트리스트를 위한 자리를 예약하며, 기본값은 0 (예약하지 않음) 입니다.
whitelist_slot 의 최대값은 max_player 이며, 화이트리스트가 아닌 유저들은
max_player 에서 whitelist_slot 을 뺀 숫자만큼만 입장 가능합니다.
화이트리스트는 whitelist.txt 이며, adminlist.txt와 blocklist.txt와 같은 경로에 있어야 합니다.

autosaver_enabled = true 또는 false
현재, 돈스타브 투게더와 데디케이티드 서버의 자동저장 기능입니다.
게임 내에서 날이 바뀔 때마다 자동으로 게임을 저장합니다.

true는 이것을 가능하도록, false는 불가능하게 설정합니다.
기본값은 true 입니다.


offline_cluster = false 또는 true

서버를 오프라인으로 만드는 경우에만 true로, 그 외의 경우에는 false로 해야 합니다.
기본값은 false 입니다.

서버를 오프라인으로 만들면 랜(LAN)에 있는 유저만 접속이 가능하며,

스팀과 관련된 모든 기능이 정지됩니다. 즉, 스킨을 안 줍니다.



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


max_snapshots = 1 또는 2 또는 3 또는 4 또는 5 또는 6
스냅샷을 몇 개로 할 것인가입니다.

기본값은 6 이며, 1~6 사이에서 변경 가능합니다.

스냅샷을 몇 개로 할 것인가입니다.

기본값은 6 이며, 1~6 사이에서 변경 가능합니다.



[STEAM] 부분을 만들어 이곳에 추가할 수 있는 내용은 다음과 같습니다.


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

기본값으로 위에서 부터 0, false, false 입니다.



  

2-2. 각각 서버의 server.ini 세부설정 이해하기

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

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

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


각 서버의 [NETWORK] 부분의 내용은 다음과 같습니다.


server_port = 11000

server_port = 11001

데디케이티드 서버가 사용하는 1개의 필수 포트를 설정합니다.

자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.
기본값으로 마스터(지상)서버는 11000이며, 케이브(동굴)서버는 11001입니다.

서버가 사용하는 포트는 서로 달라야 합니다.



각 서버의 [SHARD] 부분의 내용은 다음과 같습니다.


is_master = true

is_master = false
누가 마스터(지상)서버이며, 누가 케이브(동굴)서버인지를 결정합니다.

마스터(지상)서버는 true이며, 케이브(동굴)서버는 false 입니다.


name = Caves
id = 625509893
 

케이브(동굴)서버의 경우에는 위의 내용이 더 추가되어 있습니다.

케이브(동굴)서버의 이름은 무엇이며, 서버의 번호가 무엇인지 나와 있습니다.


각 서버의 [STEAM] 부분의 내용은 다음과 같습니다.


master_server_port = 27018
authentication_port = 8768

master_server_port = 27019
authentication_port = 8769
스팀에서 추가적으로 사용하는 포트입니다.

기본값으로 마스터(지상)서버는 27018과 8768이며, 케이브(동굴)서버는 27019와 8769입니다.

서버가 사용하는 포트는 서로 달라야 합니다.



 

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




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

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

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

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

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


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

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

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




4. 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 를 참고하기 바랍니다.




5. 케이브(동굴)서버의 worldgenoverride.lua 파일 수정하기

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


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



이제 마스터(지상)서버처럼 케이브(동굴)서버도 세부설정을 할 수 있습니다.

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


return { override_enabled = true,

    preset = "DST_CAVE", --options are "DST_CAVE", "DST_CAVE_PLUS"

    overrides = {

    --MISC
    world_size="default", --options are "small", "medium", "default", "huge"
    branching="default", --options are "never", "least", "default", "most"
    loop="default", --options are "never", "default", "always"
    weather="default", --options are "never", "rare", "default", "often", "always"
    earthquakes="default", --options are "never", "rare", "default", "often", "always"
    touchstone="default", --options are "never", "rare", "default", "often", "always"
    regrowth="default", --options are "veryslow", "slow", "default", "fast", "veryfast"
    boons="default", --options are "never", "rare", "default", "often", "always"
    cavelight="default", --options are "veryslow", "slow", "default", "fast", "veryfast"
    prefabswaps_start="default", --options are "classic", "default", "highly random"
    prefabswaps="default", --options are "default", "none", "few", "normal", "many", "max"


    --RESOURCES --options are "never", "rare", "default", "often", "always"
    grass="default",
    sapling="default",
    marshbush="default",
    reeds="default",
    trees="default",
    flint="default",
    rock="default",
    mushtree="rare",
    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





6. 세이브 슬롯 여러 개 만들기



문서 - Klei - DedicatedServer 의 경로로 이동합니다.





Cluster_1 폴더를 복사-붙여넣기하여 복사본을 만들어 줍니다.





복사본의 이름을 Cluster_2 로 바꾸어 줍니다.





문서 - Klei - DedicatedServer - Cluster_2 - Master 의 경로에 있는

save 폴더를 삭제합니다.


아울러,


문서 - Klei - DedicatedServer - Cluster_2 - Caves 의 경로에 있는

save 폴더도 삭제합니다.





바로가기를 복사-붙여넣기하여 복사본을 만들어 줍니다.





(1) 복사본의 이름을 Cluster_2 MasterCluster_2 Caves 로 바꾸어 줍니다.



(2) 이름을 바꾼 바로가기를 우클릭하여 대상(T)에 나오는 것을 다음과 같이 수정합니다.


Cluster_2 Master에서는

-backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Master

-backup_logs -conf_dir DedicatedServer -cluster Cluster_2 -shard Master

로 수정합니다.


Cluster_2 Caves에서는

-backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Caves

-backup_logs -conf_dir DedicatedServer -cluster Cluster_2 -shard Caves

로 수정합니다.


즉, Cluster_ 다음에 오는 숫자만 바꾸면 됩니다.

Master와 Caves를 헷갈리지 않고 만들어야 합니다.



(3) 문서 - Klei - DedicatedServer - Cluster_2 의 경로에 있는

cluster.ini 파일을 메모장으로 열어 안에 있는 내용을

자신이 원하는 대로 알맞게 수정하면 됩니다.


아울러, Cluster_2 - Master 와 Caves 폴더 안에 있는

worldgenoverride.lua 와 modoverrides.lua 파일도

자신이 원하는 대로 알맞게 수정하면 됩니다.



(4) 만약, 문서 - Klei - DedicatedServer - Cluster_1 의 경로에

adminlist.txt 와 blocklist.txt 파일이 존재한다면,

문서 - Klei - DedicatedServer - Cluster_2 의 경로에 있을

adminlist.txt 와 blocklist.txt 파일과 항상 동기화해야 합니다.



(5) 더 많은 세이브 슬롯을 원한다면

위의 과정을 Cluster_3, Cluster_4, Cluster_5 등에

대하여 똑같은 과정으로 만들면 됩니다.




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


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

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


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

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

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

3. 마스터PC가 공유기나 사설방화벽을 사용하는 경우에는 10889 UDP 포트에 대하여 포트포워딩


마스터PC는 2-1번의 cluster.ini에서 bind_ip = 0.0.0.0 으로 변경합니다.

케이브PC는 2-1번의 cluster.ini에서 master_ip = 마스터PC의 실제 외부IP 로 변경합니다.

반드시 2-1번의 cluster.ini에서 cluster_key = 를 서로 같은 값으로 설정합니다.


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

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


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



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




불법복사는 지적재산을 훔치는 범죄행위입니다.

이 게시물은 다른 카페나 블로그 등 외부로 퍼가는 것을 허용하지 않습니다.
저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 행위는
이용약관 및 관련법률에 의해 처벌을 받을 수 있습니다.

COPYRIGHT ⓒ 2015-2017 바람구름(la Nube) ALL RIGHTS RESERVED.

반응형