Games/돈스타브 투게더

[구버전] 데디케이티드 서버(Dedicated Server) 만들기 - 2015.10.10 수정

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

2015.10.10 수정 사항

 - settings.ini 중 랜 전용 서버에 대한 내용을 수정하고 첨부파일도 수정함.

2015.08.29. 수정 사항
 - 게임 업데이트로 변경된 settings.ini 파일 관련 내용을 수정하고 첨부파일도 수정함.


2015.07.25. 수정 사항
 - 돈스타브 투게더 UI 관련 업데이트에 맞춰 worldgenoverride.lua 파일을 전면 수정함.


1. 데디케이티드 서버 설치하기



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




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



2. 데디케이티드 서버 시작 옵션 설정하기 (1)


데디케이티드 서버를 돌리다보면, 로그 파일을 확인해야 할때가 많습니다.
하지만, 현재 데디케이티드 서버를 열고 닫거나 투게더를 실행하고 닫을 때마다
로그 파일이 백업되지 않고 사라져버려서 로그 파일 확인이 어려울 때가 많습니다.

스팀 - 라이브러리 - 도구 에서 Don't Starve Together Dedicated Server를
마우스 우클릭한 다음에 속성을 눌러줍니다.

일반 탭에서 시작 옵션 설정을 클릭한 다음에,
-backup_logs -console -conf_dir DedicatedServer 를 입력하여 확인을 누릅니다.



이제 데디케이티드 서버를 열고 닫을 때마다
내 문서\Klei\DedicatedServer\backup 의 경로로
이전의 chat_log.txt 파일과 log.txt 파일이 백업되어 이곳으로 옮겨집니다.
99개까지 백업되며, 99개가 넘어가면 오래된 파일이 삭제됩니다.

특히, 이 로그 파일에는 채팅 기록뿐만 아니라, 닉네임과 돈스타브 고유코드가 함께 기록되기 때문에
어드민 리스트나 블락 리스트를 관리할 때 많은 도움이 됩니다.


2-1. 데디케이티드 서버 시작 옵션 설정하기 (2)


또한, 다른 게임 서버들처럼 콘솔 명령어를 서버 창에 직접 입력해야 하는 경우도 있습니다.
그리고 별도의 시작 옵션 설정을 하지 않는다면, 위의 데디케이티드 서버는
돈스타브 투게더와 폴더를 공유하기 때문에 여러 문제가 발생할 수 있습니다.

스팀 - 라이브러리 - 도구 에서 Don't Starve Together Dedicated Server를
마우스 우클릭한 다음에 속성을 눌러줍니다.

일반 탭에서 시작 옵션 설정을 클릭한 다음에,
-backup_logs -console -conf_dir DedicatedServer 를 입력하여 확인을 누릅니다.



2-2. 데디케이티드 서버 한번 실행하기


데디케이티드 서버를 한번 실행합니다.
아무것도 없이 하는 최초 실행이라서 아직 제대로 실행이 안 될 것입니다.
따라서 한번 실행한 다음에 바로 서버를 종료합니다.



다만, 2번과 2-1번에서 했던 시작 옵션 설정이 잘 되었나를 확인하기 위해서
문서\Klei 의 경로에 DedicatedServer 라는 폴더가 만들어졌는지 확인합니다.



3. 서버 토큰 만들기


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

돈스타브 투게더를 실행한 다음, 숫자 1 왼쪽에 있는 ~를 눌러 콘솔 창을 열어 줍니다.
콘솔 창에 TheNet:GenerateServerToken() 을 입력한 후, 게임을 종료합니다.





문서\Klei\DoNotStarveTogether 의 경로에 server_token.txt 파일이 만들어진 것을 볼 수 있습니다.


3-1. 서버 토큰 옮기기


2-2번에서 만들어진 문서\Klei 의 경로에 DedicatedServer 라는 폴더에 들어갑니다.


그리고 3번에서 문서\Klei\DoNotStarveTogether 의 경로에 만들어져 있는
server_token.txt 파일을 복사하여 문서\Klei\DedicatedServer 의 경로에 붙여넣습니다.


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



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



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

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

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

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


5. 데디케이티드 서버 세부 설정하기


내 문서\Klei\DedicatedServer 의 경로에 있는
settings.ini 파일을 메모장으로 열어 줍니다.



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

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


[network] 부분에서 추가하거나 수정할 수 있는 내용은 다음과 같습니다.

default_server_name =
서버의 이름입니다. 영어로 작성하면 됩니다.

default_server_description =
서버 설명 부분입니다. 영어로 작성하시되, 빈칸으로 두셔도 괜찮습니다.

server_password =
서버 비밀번호 설정 부분입니다. 빈칸으로 두면 공개 서버가 됩니다.

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

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

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

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는 불가능하게 설정합니다.

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

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

enable_snapshots = true 또는 false
데디케이티드 서버에서 스냅샷 기능을 설정합니다.
http://cafe.naver.com/babmukda/67219 의 내용을 참고하세요. 

tick_rate = 10
데디케이티드 서버의 대역폭과 CPU 사용 정도를 결정합니다.
선택할 수 있는 값은 10, 15, 30, 60 이 있습니다.
높을수록 더 많은 대역폭과 CPU를 사용하나, 유저들의 움직임이 부드러워진다고 합니다만...
실제로는 별차이를 못 느끼기 때문에 서버 성능을 올리기 위해 제일 낮은 10으로 많이 설정합니다.
 
server_port = 10999
steam_authentication_port = 8766
steam_master_server_port = 27016
데디케이티드 서버가 사용하는 1개의 필수 포트와 2개의 선택 포트를 설정합니다.
10999, 8766, 27016 포트로 자동으로 설정되어 있기 때문에, 변경하지 않을 것을 권장합니다.

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

[account] 부분에서 추가하거나 수정할 수 있는 내용은 다음과 같습니다.

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

첨부파일에 참고용으로 settings.ini 파일을 올립니다.



6. 데디케이티드 서버 맵/월드 설정하기


내 문서\Klei\DedicatedServer 의 경로에
worldgenoverride.lua 파일을 만들어야 합니다.



첨부파일에 저의 lua 파일을 올립니다.
참고하여 자신만의 서버 맵/월드를 만드세요~


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

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



7. 데디케이티드 서버에 모드 추가하기


64비트 운영체제는 C:\Program Files (x86)\Steam\steamapps\common\Don't Starve Together Dedicated Server\mods
32비트 운영체제는 C:\Program Files\Steam\steamapps\common\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 라는 고유의 번호가 부여되어 있습니다.



8. 데디케이티드 서버에 모드 적용하기


내 문서\Klei\DedicatedServer 의 경로에
modoverrides.lua 파일을 만들어야 합니다.

 


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

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

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

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

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

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



9. 공유기나 사설방화벽을 사용하는 경우


공유기나 사설방화벽을 사용하는 경우에는
서버가 사용하는 필수 포트인 10999 UDP 포트에 대하여
포트 포워딩이나 파워 DMZ와 같은 조치가 필요합니다.
(필수 포트 외에 선택 포트 2개는 안 열어도 잘 돌아가더군요^^)

포트 포워딩이나 파워 DMZ와 관련해서는
네이버 또는 구글 검색으로 알아보기 바랍니다.
 공유기 사용자의 경우에는 자신이 만든 데디케이티드 서버로 들어가기 위해서는
반드시 Show LAN을 Yes로 하여 입장하여야 합니다.

저는 공유기를 사용하지 않기 때문에, 서버 목록에서 바로 입장이 가능합니다.
공유기가 없다면, Show LAN으로 하면 아무것도 뜨지 않는 것이 정상입니다.



10. 데디케이티드 서버 실행하기
 


"스팀 - 라이브러리 - 도구"에 있는 데디케이티드 서버를 실행합니다.
[00:00:21]에 서버가 모드를 다운받는 것을 볼 수 있습니다.
이미 다운 받은 경우에도 그 모드가 최신 모드인가를 확인하게 됩니다.



[00:00:25]에 서버가 모드의 세부 설정을 modoverrides.lua 파일로부터 읽는 것을 볼 수 있습니다.



[00:01:02]에 서버가 이미 저장되어 있던 KU_ 로 시작하는 각 유저별로 세이브 세션을 불러옵니다.
그리고 1 uploads added to server 라고 뜨면서, 돈스타브 투게더 서버목록에 올라간 것을 확인할 수 있습니다. 그리고 SteamGameServer_Init Success 가 뜨면서 서버가 정상적으로 열렸습니다.



11. 데디케이티드 서버에서 콘솔 사용하기 (1)


방금 제가 실행한 서버로 들어왔습니다.
Tab 키를 눌러 보면, [Host]라고 되어 있는 부분을 볼 수 있습니다.

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

그리고 하나의 컴퓨터에서 데디케이티드 서버와 돈스타브 투게더를 실행하는 경우에는
핑이 0에서 1 ms 정도로 나오는 것이 정상입니다.



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


 
11-1. 데디케이티드 서버에서 콘솔 사용하기 (2)


2-1번에서 시작 옵션 설정을 통해 서버 창에서 콘솔 기능을 사용할 수 있도록 만들어 두었습니다.
따라서 위의 서버 창에 c_shutdown() 와 같은 콘솔 명령어를 칠 수 있게 되었습니다.

자주 쓰는 콘솔 명령어는 다음과 같습니다.
수동 저장 : c_save()
서버 종료 : c_shutdown()
서버를 단순 리셋 : c_reset()
서버에서 맵을 삭제하고 완전 재시작 : c_regenerateworld()


※ Linux(리눅스)에서 데디케이티드 서버 만들기
http://cafe.naver.com/babmukda/69292 


※ 윈도의 SteamCMD에서 데디케이티드 서버 만들기
http://cafe.naver.com/babmukda/75316
 


<그>
1. 투게더의 서버목록을 눌러 월드 설정을 확인하면 기본 상태로 보입니다.
-> worldgenoverride.lua의 내용을 바꾸었음에도 바뀌지 않은 것처럼 보입니다.

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


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

모드의 수, 맵 크기, 오브젝트의 수, 최대 인원 등과 서버 성능의 상관 관계
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 사양에 맞도록 하여 서버를 돌리는 것이 랙을 줄이는 방법이 될 것입니다.


반응형