Games/돈스타브 투게더

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

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

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

 - 4번의 worldgenoverride.lua 내용 일부 변경


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


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


2016.03.26 수정 사항
 -
게임 업데이트 / 9번 바로가기 만들기 중 -console 제거
 


2016.02.27 수정 사항
 -
게임 업데이트 / 초급자 버전에서 tick_rate 제거
 


2016.02.13 수정 사항
 -
서버 폴더 분리
/ 특히, 1번과 9번을 수정함


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


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


2015.11.19 수정 사항
 - 동굴 정식 지원,
worldgenoverride.lua 파일 수정



데디케이티드 서버(Dedicated Server) 만들기 - 중급자 버전도 공개합니다.

http://la-nube.tistory.com/116
http://cafe.naver.com/babmukda/77630

중급자 버전에는 다음의 사항이 추가됩니다.
 - 어드민 리스트와 블락 리스트 관리하기
 - 서버 클러스터, 마스터(지상)서버, 케이브(동굴)서버의 세부설정 이해하기
 - 포트포워딩 (공유기 또는 사설방화벽을 사용하는 경우에만)
 - modoverride.lua에 모드 세부설정 넣기
 - 동굴서버의 worldgenoverride.lua 파일 수정하기

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

 - [고급자 버전] 2대의 PC에서 서버 서로 연결하기



데디케이티드 서버(Dedicated Server) 만들기 - 리눅스 편도 공개합니다.

http://la-nube.tistory.com/117
http://cafe.naver.com/babmukda/77944 




1. 서버 토큰 만들기




먼저, 데디케이티드 서버를 돌리기 위해서는 '서버 토큰'이라는 것이 필요합니다.

첨부파일에 있는 DedicatedServer폴더YYMMDD.rar 파일을

다운로드한 다음, 압축을 해제합니다.(YYMMDD = 연,월,일)


DedicatedServer폴더160227.rar

DedicatedServer폴더160415.rar

DedicatedServer폴더160421.rar

DedicatedServer폴더160424.rar



압축을 해제하여 나온 것을 다음의 경로에 복사-붙여넣기 합니다.

경로 : 문서 - Klei

위 스크린샷처럼 되어 있어야 합니다.





돈스타브 투게더를 실행한 다음, Play!를 누릅니다.





오른쪽 하단에 있는 Acct Info를 클릭합니다.





스팀 오버레이에서 인터넷 창이 열리면서 로그인 정보를 확인합니다.

Generate Server Token을 클릭합니다.

생성된 알파벳과 숫자 조합을 문서 - Klei - DedicatedServer - Cluster_1 의 경로에 있는

cluster_token 텍스트 파일에 복사-붙여넣기 합니다.




문서 - Klei - DedicatedServer - Cluster_1 의 경로에 있는
cluster_token 이라는 이름의 텍스트 문서가 맞는지 다시 한번 확인해주세요.



2. 서버 설치하기

"스팀 - 라이브러리 - 도구" 에 있는 Don't Starve Together Dedicated Server 를 설치합니다.






스팀 라이브러리 도구에서 설치하는 데디케이티드 서버는
항상 돈스타브 투게더와 함께 업데이트되기 때문에 편합니다.



3. 서버 클러스터 세부 설정하기 


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

cluster.ini 파일을 메모장을 열어 줍니다.




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


game_mode = survival 또는 wilderness 또는 endless
서바이벌, 윌더니스, 엔드리스를 선택하는 것입니다.
셋 중 하나를 넣어주면 됩니다. 모두 소문자입니다.


max_players = 6
서버 클러스터의 최대 인원을 의미합니다. 숫자만으로 입력합니다.

pvp = false 또는 true

false는 pvp 서버가 아니며, true는 pvp 서버로 만드는 것입니다.

기본값은 false 입니다.


pause_when_empty = false 또는 true
데디케이티드 서버에 아무도 없는 경우에도 시간이 흐르도록 하는 것이 false 이며,

아무도 없는 경우에는 시간을 정지하도록 하는 것이 true 입니다.

기본값은 false 입니다.



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

cluster_name =
서버 클러스터의 이름입니다. 영어로 작성하면 됩니다.

cluster_description =
서버 클러스터의 설명 부분입니다. 영어로 작성하되, 빈칸으로 놔둬도 괜찮습니다.

cluster_intention = cooperative 또는 social 또는 competitive 또는 madness

서버 클러스터의 플레이 스타일에 대한 내용입니다.

cooperative 로 기본 설정되어 있지만, 다른 종류로 바꿀 수 있습니다.


cluster_password =
서버 클러스터의 비밀번호 설정 부분입니다. 빈칸으로 두면 공개 서버가 됩니다.


그 외 [MISC][SHARD]는 건드리지 않습니다.



4. 마스터(지상)서버를 위한 맵/월드 설정하기




문서 - Klei - DedicatedServer - Cluster_1 - Master 의 경로에 있는
worldgenoverride.lua 파일을 메모장으로 엽니다.




자신만의 서버 맵/월드를 만드세요~

 
(주의) 맵/월드가 한번 설정되어 일단 서버를 한번 실행하게 되면,
맵/월드 설정을 중간에 바꾸더라도 적용이 되지 않습니다.
새로운 맵/월드 설정은 새로운 맵/월드에서만 가능합니다.

따라서 슬롯을 지우고 새롭게 서버를 열거나,
아니면 서바이벌 모드에서 모두 유령이 되어 맵이 리젠되거나
어드민이 콘솔을 사용하여 강제로 맵을 리젠해야 적용됩니다.
Remote: c_regenerateworld()

 
케이브(동굴)서버의 worldgenoverride.lua는마스터(지상)서버의 worldgenoverride.lua와
서로 내용이 다르므로 절대 건드리지 않습니다.



5. 서버에 모드 추가하기

스팀 라이브러리 → 도구 Don't Starve Together Dedicated Server 우클릭

속성 로컬 파일 로컬 컨텐츠 폴더 보기 mods 폴더에 있는

dedicated_server_mods_setup.lua 파일을 메모장으로 열어 줍니다.




lua 파일의 하단부에 ServerModSetup("숫자") 의 형식으로 모드를 추가합니다.
참고로 --를 넣은 부분은 서버에게 그 줄은 읽지 말라고 하는 명령어입니다.
자신이 무슨 모드를 넣었는지 알기 쉽게 하기 위해 일부러 넣은 것입니다.

첨부파일에 저의 dedicated_server_mods_setup.lua 파일을 올립니다.
참고하여 자신만의 모드 서버를 만들어 보세요~


다만, 서버에 적용하지 않고 개인적으로 적용해야 하는 모드인
Always On Top 모드나 Minimap 모드, 한글패치 모드, 제스쳐 모드 등을
서버에서 적용하는 경우에는 서버 프로그램을 다운시킬 수 있습니다.



ServerModSetup("숫자") 부분의 숫자는 스팀 창작마당에서 해당 모드를 찾아보면
인터넷 주소에 373991022 와 같이 숫자로 나오는 부분이 있습니다.
Global Player Icons 모드에는 373991022 라는 고유의 번호가 부여되어 있습니다.


 
6. 마스터(지상)서버에 모드 적용하기

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

modoverrides.lua 파일을 메모장으로 열어 줍니다.



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

    --Global Positions
    ["workshop-378160973"] = { enabled = true },

--Coordinate
["workshop-373480109"] = { enabled = true }
}

위의 예와 같이 작성하여야 합니다.
"enabled = " 에서 true로 된 경우에는 서버에서 해당 모드를 적용하고,
false로 된 경우에는 서버에서 해당 모드를 적용하지 않습니다.

참고로 --를 넣은 부분은 서버에게 그 줄은 읽지 말라고 하는 명령어입니다.
자신이 무슨 모드를 넣었는지 알기 쉽게 하기 위해 일부러 넣은 것입니다.

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


 

7. 케이브(동굴)서버에 모드 적용하기




문서 - Klei - DedicatedServer - Cluster_1 - Master 에서 만든 modoverrides.lua 파일을
문서 - Klei - DedicatedServer - Cluster_1 - Caves 의 경로에 복사-붙여넣기 합니다.



8. 스팀P2P 방식 (공유기 또는 사설방화벽을 사용하는 경우에만)


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

초급자 버전에서는 포트포워딩이 어렵기 때문에,
스팀P2P 방식에 의한 연결을 선호합니다.

스팀P2P 방식에 의한 연결은 자동으로 이루어지므로,
초급자 버전에서는 따로 건드려야 할 부분이 없습니다.

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

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

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




9. 바로가기 만들기


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





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




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

바로가기 2개를 만들어 이름을 Cluster_1 MasterCluster_1 Caves로 바꾸어 줍니다.




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

"~~dontstarve_dedicated_server_nullrenderer.exe" 다음에 한 칸을 띄우고,
-backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Master 를 넣어 줍니다.

위와 같이 넣어야 하는 부분을 첨부파일에 올려놨으니 복사하여 쓰세요.


바로가기_만들기.txt





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

"~~dontstarve_dedicated_server_nullrenderer.exe" 다음에 한 칸을 띄우고,
-backup_logs -conf_dir DedicatedServer -cluster Cluster_1 -shard Caves 를 넣어 줍니다.

위와 같이 넣어야 하는 부분을 첨부파일에 올려놨으니 복사하여 쓰세요.




10. 서버 실행하기


위에서 만든 바로가기 중 Cluster_1 Master를 먼저 클릭하여 실행합니다.

그리고 동시에 Cluster_1 Caves를 클릭하여 실행합니다.

마스터(지상)서버와 케이브(동굴)서버가 서로 연결되었습니다.


서버 프로그램 2개가 동시에 켜져 있는 상태에서 이제 다음과 같이 게임을 하면 됩니다.

투게더 게임을 실행하여 서버목록에서 자신의 서버를 찾아 입장합니다.


서버를 종료할 때는 콘솔 명령어 c_shutdown() 을 입력하여 종료합니다.




11. 서버에서 콘솔 사용하기 (1)

방금 제가 실행한 서버로 들어왔습니다.

Tab 키를 눌러 보면, [Host]라고 되어 있는 부분을 볼 수 있습니다.

데디케이티드 서버의 호스트는 제가 아니라 서버 프로그램입니다.
그래서 가끔 서버 인원이 가득차면 서버를 연 제가 못 들어가는 경우도 있습니다ㅠㅠ


이제 콘솔 명령어를 사용하여 맵을 재생성해야 합니다.
콘솔 창에 c_regenerateworld() 를 입력해야 합니다.




콘솔을 사용하는 경우에는 콘솔 창 왼쪽에 Remote: 라고 파란색 글씨로 뜨는 것을 확인해야 합니다.
만약 보이지 않는다면, Ctrl 키(컨트롤 키)를 한 번 눌러줍니다.


 
11-1. 서버에서 콘솔 사용하기 (2)


이미 시작 옵션 설정을 통해 서버 창에서 콘솔 기능을 사용할 수 있도록 만들어 두었으므로,
위의 서버 창에 c_shutdown() 와 같은 콘솔 명령어를 칠 수 있게 되었습니다.

자주 쓰는 콘솔 명령어는 다음과 같습니다.
수동 저장 : c_save()
서버 종료 : c_shutdown()
서버를 단순 리셋(주로 오류를 해결하기 위해) : c_reset()
지상과 동굴 모두 동시에 월드 재생성  : c_regenerateworld()
지상과 동굴 둘 중 하나만 월드 재생성 : c_regenerateshard()


 

-------------------------------------------------------------------------------


<그>

1. 투게더의 서버목록을 눌러 월드 설정을 확인하면 기본 상태로 보입니다.
→ worldgenoverride.lua의 내용을 바꾸었음에도 바뀌지 않은 것처럼 보입니다.
→ 설정이 제대로 되었다면 문제가 없습니다. 월드 생성 당시의 log.txt에서 확인할 수 있습니다.

2. 스팀에서 친구 초대나 게임 참여하기를 통해 데디케이티드 서버로 입장할 수 없습니다.
→ 투게더의 서버목록



-------------------------------------------------------------------------------

<한글 방제 지원에 대하여>

2016년 2월 22일 기준으로 테스트 결과를 공지합니다.

1. 영어방제 + 인코딩 ANSI
정상적으로 열림.

2. 한글방제 + 인코딩 ANSI
cluster.ini에서 방제를 읽어내지 못해 서버가 안 열림.
[Error] Master Server Broadcast Error: NO_NAME

3. 한글방제 + 인코딩 유니코드 또는 유니코드(big endian)
cluster.ini 파일은 읽으나 내용 자체를 읽지 못하여
초기설정 "16인 + 서바이벌"에 방제 이름도
[Host]'s World 로 강제 고정됨.

4. 한글방제 + 인코딩 UTF-8
한글방제를 불러올 수 있으나, 그외 설정을 읽지 못함.
초기설정 "16인 + 서바이벌"로 강제 고정됨.

(결론)
데디케이티드 서버에서는 한글방제를 정상적으로 지원하지 못함
.


 
-------------------------------------------------------------------------------

모드의 수, 맵 크기, 오브젝트의 수, 최대 인원 등과 서버 성능의 상관 관계
1. 모드의 수가 많아지면 서버 성능은 당연히 나빠집니다. (Bad Host)
2. 맵의 크기가 클수록 서버 성능은 당연히 나빠집니다. (Bad Host)
3. 오브젝트의 수, 즉 맵에 존재하는 모든 아이템이나 몬스터, 나무, 풀, 비, 번개, 운석 등등이 많을수록 서버 성능은 당연히 나빠집니다. (Bad Host)
4. 서버에 많은 인원이 들어오면 날이 지남에 따라 서버 성능이 계속하여 나빠집니다. (Bad Host)

참고로 지금은 잠시 쉬고 있는 Don't Starve Korea Public Server는
서버용 CPU 4.00Ghz (오버클록시 4.50Ghz) 를 사용하여 돌렸습니다.
이때 모드를 최소화하고, 맵 크기를 줄이고, 오브젝트의 수도 최소로 줄인 결과
Good Host를 계속하여 유지할 수 있는 최대인원은 25인이었습니다.

인텔 i7 CPU를 사용하는 유저들이 서버 인원이 10명만 되도
Bad Host가 되어 랙이 생긴다는 클레이 포럼의 글도 심심찮게 볼 수 있습니다.

이는 데디케이티드 서버가 싱글코어만을 쓰기 때문입니다.
따라서 현존하는 클록이 가장 높은 CPU를 가져와도 30인 이상으로 Good Host를 만들기는 어렵습니다ㅠ
64인 서버를 Good Host로 계속하여 유지하기 위해서는 CPU 클록이 20.00GHz는 되어야 하겠죠 ㅠㅠ

자신의 PC 사양에 맞도록 하여 서버를 돌리는 것이 랙을 줄이는 방법이 될 것입니다.



불법복사는 지적재산을 훔치는 범죄행위입니다.
이 게시물은 다른 카페나 블로그 등 외부로 퍼가는 것을 허용하지 않습니다.
저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 행위는
이용약관 및 관련법률에 의해 처벌을 받을 수 있습니다.
COPYRIGHT ⓒ 2015-2017 la Nube(바람구름) ALL RIGHTS RESERVED.


반응형