2015.11.25 수정 사항
- worldgenoverride.lua 파일 수정
2015.11.19 수정 사항
- 동굴 정식 지원, worldgenoverride.lua 파일 수정
2015.10.10 수정 사항
- settings.ini 중 랜 전용 서버에 대한 내용을 수정하고 첨부파일도 수정함.
2015.08.29. 수정 사항
- 게임 업데이트로 변경된 settings.ini 파일 관련 내용을 수정하고 첨부파일도 수정함.
2015.07.25. 수정 사항
- 돈스타브 투게더 UI 관련 업데이트에 맞춰 worldgenoverride.lua 파일을 전면 수정함.
데디케이티드 서버(Dedicated Server) 만들기 - 중급자 버전 도 공개합니다.
http://la-nube.tistory.com/112
http://cafe.naver.com/babmukda/77630
중급자 버전에는 다음의 사항이 추가됩니다.
- 바로가기를 이용하여 서버 실행하기
- 어드민 리스트와 블락 리스트 관리하기
- 지상과 동굴서버의 세부설정 추가
- 포트포워딩 (공유기 또는 사설방화벽을 사용하는 경우에만)
- modoverride.lua에 모드 세부설정 넣기
- 동굴서버의 worldgenoverride.lua 파일 수정하기
- [고급자 버전] 2대의 PC에서 서버 서로 연결하기
게임 업데이트 153171 - 2015/10/15 부터
데디케이티드 서버가 NAT Traversal (Steam P2P) 방식으로 변경되었습니다.
따라서 이제 데디케이티드 서버는 포트포워딩이 필요하지 않습니다.
다만, 2대의 PC에서 지상과 동굴서버를 각각 열어 연결하는 경우에는
지상서버를 여는 PC에서 10888 포트에 대하여 포트포워딩이 필요합니다.
(공유기나 사설방화벽이 없다면 불필요합니다.)
1. 서버 토큰 만들기먼저, 데디케이티드 서버를 돌리기 위해서는 '서버 토큰'이라는 것이 필요합니다.
돈스타브 투게더를 실행한 다음, 숫자 1 왼쪽에 있는 ~를 눌러 콘솔 창을 열어 줍니다.
콘솔 창에 TheNet:GenerateServerToken() 을 입력한 후, 게임을 종료합니다.
문서\Klei\DoNotStarveTogether 의 경로에 server_token.txt 파일이 만들어진 것을 볼 수 있습니다.
2. 서버 설치하기
"스팀 - 라이브러리 - 도구" 에 있는 Don't Starve Together Dedicated Server 를 설치합니다.
스팀 라이브러리 도구에서 설치하는 데디케이티드 서버는
항상 돈스타브 투게더와 함께 업데이트되기 때문에 편합니다.
3. 서버 시작 옵션 설정하기
데디케이티드 서버를 돌리다보면, 로그 파일을 확인해야 할때가 많습니다.
하지만, 현재 데디케이티드 서버를 열고 닫거나 투게더를 실행하고 닫을 때마다
로그 파일이 백업되지 않고 사라져버려서 로그 파일 확인이 어려울 때가 많습니다.
또한, 다른 게임 서버들처럼 콘솔 명령어를 서버 창에 직접 입력해야 하는 경우도 있습니다.
스팀 - 라이브러리 - 도구 에서 Don't Starve Together Dedicated Server를
마우스 우클릭한 다음에 속성을 눌러줍니다.
일반 탭에서 시작 옵션 설정을 클릭한 다음에,
-backup_logs -console 을 입력하여 확인을 누른 후, 닫기를 누릅니다.
이제 데디케이티드 서버를 열고 닫을 때마다
내 문서\Klei\(폴더)\backup 의 경로로
이전의 chat_log.txt 파일과 log.txt 파일이 백업되어 이곳으로 옮겨집니다.
99개까지 백업되며, 99개가 넘어가면 오래된 파일이 삭제됩니다.
특히, 이 로그 파일에는 채팅 기록뿐만 아니라, 닉네임과 돈스타브 고유코드가 함께 기록되기 때문에
어드민 리스트나 블락 리스트를 관리할 때 많은 도움이 됩니다.
4. 서버 최초 실행하기
스팀 - 라이브러리 - 도구 에서 Don't Starve Together Dedicated Server를
마우스 우클릭한 다음에 Run pre-configured servers 를 클릭합니다.
지상서버와 동굴서버를 자동으로 생성하고, 동시에 자동으로 실행해줍니다.
위의 창이 자동으로 종료되면서 아래의 스샷과 같은 2개의 창이 새로 열립니다.
지상 서버와 동굴 서버가 자동으로 실행되었습니다.
콘솔 명령어인 c_shutdown() 를 입력하여 일단 종료합니다.
5. 지상서버(마스터) 세부 설정하기
문서\Klei\DoNotStarveTogether_EasyConfigOverworld 의 경로에 있는
settings.ini 파일을 메모장으로 열어 줍니다.
[network] 부분에서 수정할 수 있는 내용은 다음과 같습니다.
game_mode = survival 또는 wilderness 또는 endless
서바이벌, 윌더니스, 엔드리스를 선택하는 것입니다.
셋 중 하나를 넣어주면 됩니다. 모두 소문자입니다.
max_players = 6
서버 최대 인원을 의미합니다. 숫자만으로 입력합니다.
default_server_description =
서버 설명 부분입니다. 영어로 작성하되, 빈칸으로 놔둬도 괜찮습니다.
default_server_name =
서버의 이름입니다. 영어로 작성하면 됩니다.
server_intention = cooperative 또는 social 또는 competitive 또는 madness
서버의 플레이 스타일에 대한 내용입니다.
cooperative 로 기본 설정되어 있지만, 다른 종류로 바꿀 수 있습니다.
[network] 부분에 추가할 수 있는 내용은 다음과 같습니다.
server_password =
서버 비밀번호 설정 부분입니다. 빈칸으로 두면 공개 서버가 됩니다.
pvp = false 또는 true
false는 pvp 서버가 아니며, true는 pvp 서버로 만드는 것입니다.
6. 동굴서버(슬레이브) 세부 설정하기
문서\Klei\DoNotStarveTogether_EasyConfigCaves 의 경로에 있는
settings.ini 파일을 메모장으로 열어 줍니다.
[network] 부분에서 수정할 수 있는 사항은 다음과 같습니다.
game_mode = survival 또는 wilderness 또는 endless
지상서버와 동일하게 설정합니다.
server_intention = cooperative 또는 social 또는 competitive 또는 madness
지상서버와 동일하게 설정합니다.
server_port = 11000
default_server_name = [Host]'s World
server_password = rGt4QTzFsM7hOy
지상서버에 의해 자동으로 설정되는 부분입니다. 아무것도 건드리지 않습니다.
7. 지상서버를 위한 맵/월드 설정하기
문서\Klei\DoNotStarveTogether_EasyConfigOverworld 의 경로에
worldgenoverride.lua 파일을 만들어야 합니다.
첨부파일에 저의 lua 파일을 올립니다.
참고하여 자신만의 서버 맵/월드를 만드세요~
(주의) 맵/월드가 한번 설정되어 일단 서버를 한번 실행하게 되면,
맵/월드 설정을 중간에 바꾸더라도 적용이 되지 않습니다.
새로운 맵/월드 설정은 새로운 맵/월드에서만 가능합니다.
따라서 슬롯을 지우고 새롭게 서버를 열거나,
아니면 서바이벌 모드에서 모두 유령이 되어 맵이 리젠되거나
어드민이 콘솔을 사용하여 강제로 맵을 리젠해야 적용됩니다.
Remote: c_regenerateworld()
동굴서버의 worldgenoverride.lua는 서버를 최초 실행할 때 자동으로 생성됩니다.
지상서버의 worldgenoverride.lua와는 내용이 다르므로 절대 건드리지 않습니다.
8. 서버에 모드 추가하기
스팀 라이브러리 → 도구 → 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 라는 고유의 번호가 부여되어 있습니다.
9. 지상서버에 모드 적용하기
문서\Klei\DoNotStarveTogether_EasyConfigOverworld 의 경로에
modoverrides.lua 파일을 만들어야 합니다.
return {
--Wormhole Marks
["workshop-362175979"] = { enabled = true },
--Global Positions ["workshop-378160973"] = { enabled = true },
--Coordinate
["workshop-373480109"] = { enabled = true }
}
위의 예와 같이 작성하여야 합니다.
"enabled = " 에서 true로 된 경우에는 서버에서 해당 모드를 적용하고,
false로 된 경우에는 서버에서 해당 모드를 적용하지 않습니다.
참고로 --를 넣은 부분은 서버에게 그 줄은 읽지 말라고 하는 명령어입니다.
자신이 무슨 모드를 넣었는지 알기 쉽게 하기 위해 일부러 넣은 것입니다.
첨부파일에 저의 modoverrides.lua 파일을 올립니다.
참고하여 자신만의 모드 설정을 만들어 보세요~
10. 동굴서버에 모드 적용하기
문서\Klei\DoNotStarveTogether_EasyConfigOverworld 에 만들어 놓은 modoverrides.lua 파일을
문서\Klei\DoNotStarveTogether_EasyConfigCaves 의 경로에 복사-붙여넣기 합니다.
11. 스팀P2P 방식 (공유기 또는 사설방화벽을 사용하는 경우에만)
공유기나 사설방화벽을 사용하지 않으면,
다음의 내용은 전혀 필요하지 않습니다.
초급자 버전에서는 포트포워딩이 어렵기 때문에,
스팀P2P 방식에 의한 연결을 선호합니다.
스팀P2P 방식에 의한 연결은 자동으로 이루어지므로,
초급자 버전에서는 따로 건드려야 할 부분이 없습니다.
다만, 공유기 사용자의 경우에는 자신이 만든 데디케이티드 서버로 들어가기 위해서는
서버목록의 Online이 아닌 LAN에서 입장하여야 합니다.
공유기가 없다면, 서버목록의 Online에서 바로 입장이 가능합니다.
12. 서버 실행하기
스팀 - 라이브러리 - 도구 에서 Don't Starve Together Dedicated Server 를
마우스 우클릭한 다음에 Run pre-configured servers 를 클릭합니다.
이제부터는 항상 위와 같은 방법으로 실행하여야 합니다. "게임 플레이"를 누르면 안됩니다.
서버 프로그램 2개가 동시에 켜져 있는 상태에서 이제 다음과 같이 게임을 하면 됩니다.
투게더 게임을 실행하여 서버목록에서 자신의 서버를 찾아 입장합니다.
13. 서버에서 콘솔 사용하기 (1)
방금 제가 실행한 서버로 들어왔습니다. Tab 키를 눌러 보면, [Host]라고 되어 있는 부분을 볼 수 있습니다.
데디케이티드 서버의 호스트는 제가 아니라 서버 프로그램입니다.
그래서 가끔 서버 인원이 가득차면 서버를 연 제가 못 들어가는 경우도 있습니다ㅠㅠ
이제 콘솔 명령어를 사용하여 맵을 재생성해야 합니다.
콘솔 창에 c_regenerateworld() 를 입력해야 합니다.
콘솔을 사용하는 경우에는 콘솔 창 왼쪽에 Remote: 라고 파란색 글씨로 뜨는 것을 확인해야 합니다.
만약 보이지 않는다면, Ctrl 키(컨트롤 키)를 한 번 눌러줍니다.
13-1. 서버에서 콘솔 사용하기 (2)
이미 시작 옵션 설정을 통해 서버 창에서 콘솔 기능을 사용할 수 있도록 만들어 두었으므로,
위의 서버 창에 c_shutdown() 와 같은 콘솔 명령어를 칠 수 있게 되었습니다.
자주 쓰는 콘솔 명령어는 다음과 같습니다.
수동 저장 : c_save()
서버 종료 : c_shutdown()
서버를 단순 리셋(주로 오류를 해결하기 위해) : c_reset()
지상과 동굴 모두 동시에 월드 재생성 : c_regenerateworld()
지상과 동굴 둘 중 하나만 월드 재생성 : c_regenerateshard()
<이미 알려진 버그>
1. 투게더의 서버목록을 눌러 월드 설정을 확인하면 기본 상태로 보입니다.
-> worldgenoverride.lua의 내용을 바꾸었음에도 바뀌지 않은 것처럼 보입니다.
-> 설정이 제대로 되었다면 문제가 없습니다. 월드 생성 당시의 log.txt에서 확인할 수 있습니다.
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 사양에 맞도록 하여 서버를 돌리는 것이 랙을 줄이는 방법이 될 것입니다.