굶지마 투게더 (Don't starve Together) 모드 수정 기초
본 게시글은 모드의 가장 기초적인 수정만 다루고 있습니다.
따라서 심화 내용은 다루지 않지만 비전문가에게는 생소한 용어가 조금 포함되어 있습니다.
또한 제 주관적인 지식으로 작성된 것이므로 틀린 부분이 있을 수도 있습니다.
요즘 게시글을 못 올리고 있었던 게 이 게임 때문입니다. 오랜만에 하니까 재미있더군요.
친구들이랑 창작마당에 있는 모드를 깔면서 하고 있습니다만, 몇몇 캐릭터 모드들이 밸런스가 안 맞아서 친구들이랑 하는데
너무 사기면 상대적으로 허탈감이 드니 직접 수정하게 된 것이 발단입니다.
혹시 여러분들도 컨픽(Config)을 제공하지 않는 모드에 대해서 간단하게 기본 능력치만 수정하고 싶다면
제 게시글이 도움되셨으면 합니다. 설명이 기니까 차근차근 따라와 주세요.
우선은 굶지마 모드는 루아(Lua) 스크립트를 사용 해 모드를 제작합니다.
이 글에서는 루아에 대한 문법은 자세히 다루지 않습니다.
서론이 조금 길었네요. 바로 진행하겠습니다.
모드를 수정하기 위해 여러분들은 창작마당에서 수정을 원하는 모드를 구독하셔야겠지요?
저는 예제를 위해 임의로 모드를 골라보겠습니다. 일단은 캐릭터 태그를 체크하고 기간을 '전체 순'으로 변경하였습니다
쭈욱 살펴보니까 생각보다 애니스러운 모드도 생각보다 많습니다.
저는 한국분이 만드신 화랑(Wharang)을 사용해보려고 합니다. 화랑은 초반에 안정성이 떨어지는 대신에
성장형 캐릭터로 강해질 수 있는 모드 캐릭터죠. 피통이 80밖에 안돼서 초반에 피통을 늘려서
더 안전하게 하고 싶은 경우라고 가정하고 수정한다는 내용으로 진행하겠습니다.
우선 해당 페이지의 주소를 기억해둡시다. 이것을 기억하는 이유는 폴더가 'workshop-숫자'로 이루어지게 되는데
여기서 …/?id=1108032281&… 숫자 부분인 1108032281가 즉, 폴더명을 가리키기 때문에 해당 폴더로 들어가 수정을 하여야 합니다.
이 모드가 아니라 여러분은 다른 모드라면 이 숫자가 필히 다를 것입니다. 꼭 본인 모드의 주소를 확인하세요.
구독을 눌러 모드를 다운로드하여 주신 뒤 굶지마 투게더를 실행시켜 모드를 다운로드/동기화 받도록 합시다.
저처럼 원하는 모드가 다음 항목에서 보인다면 정상적으로 설치된 것입니다.
참고로 사용자 모드(클라 모드)와 서버 모드는 별개니 설치하실 때 항목을 살펴보세요.
주로 캐릭터 모드는 서버 모드로 분류되고 있습니다.
다음으로 윈도우 탐색기를 열고 스팀이 깔려있는 폴더에서 다음과 같은 경로에 들어가 주세요:
\Steam\steamapps\common\Don't Starve Together\mods\
이 곳은 당신이 받은 모드 파일이 저장되는 공간입니다.
아까 제가 기억해두라는 숫자 부분인 1108032281가 있었죠? 이 부분을 찾아서 내용을 봅시다.
저와 다른 모드라면 여러분의 모드 주소를 확인하셔야 합니다.
사실상 모드를 하나 받았다면 받은 모드만 보면 되지만, 모드가 여러 개인 경우 하나씩 열어볼 수는 없는 노릇이니
이 방법으로 구분하시는 게 가장 적합하다고 볼 수 있습니다.
저는 이 폴더를 따로 복사해 복사본을 만들고 이름을 다음과 같이 수정하도록 하겠습니다.
이렇게 하는 이유는 만약에 모드가 갑작스럽게 업데이트됐을 때 기존 파일명이면 자동으로 다운로드하는 과정에서 겹칠 수도 있습니다. 물론 옵션을 끄면 되긴 하지만, 어차피 수정한 모드는 워크샵 배포가 아닌 직접 서버에 들어오는 사람들끼리 파일을 주고받아야 들어올 수 있으므로 파일명을 구분하는 게 좋습니다.
바꾼 폴더를 열어봅시다.
수많은 파일과 폴더들이 있지만 우린 단순하게 이것들만 보면 됩니다.
modinfo.lua: 모드의 정보가 들어 있습니다. 예를 들어 이름, 버전명 등이 있죠
modmain.lua: 모드의 엔트리 포인트라고 보시면 됩니다. 이 곳에서 모드의 진입 함수를 구현합니다.
scripts/: 뒤에 후술 하겠습니다.
modinfo.lua는 사실 굳이 바꾸지 않아도 됩니다만, 기존에 구독했던 모드와 이름이
겹쳐서 구분이 안 되는 문제를 해결하기 위해 바꾸는 게 좋습니다.
텍스트 편집기는 Notepad++를 이용하시는 것을 추천해 드립니다.
기본 메모장이 아닌 텍스트 편집기면 상관없습니다. 하지만 파일 내 찾기 기능을 지원하지 않는 텍스트 편집기라면
해당 글 진행에 대해 어려움이 있을 수도 있습니다.
텍스트 편집기로 'modinfo.lua'를 엽니다.
구분을 위해 다음과 같이 이름만 바꾸도록 하겠습니다.
게임을 재 시작해 바뀌었는지 확인해봅시다.
바뀐 것을 확인할 수 있습니다.
그다음으로 'modmain.lua'를 텍스트 편집기로 엽니다.
쭈욱 내려서 'TUNING' 부분을 살펴봅시다.
주로 TUNING은 게임 내 변수로 활용되며 만약에 월슨 체력을 기준으로 삼고 싶다면
'TUNING.WILSON_HEALTH'를 적어서 월슨 피통인 150을 기준으로 잡을 수도 있습니다.
물론 이때 체력을 설정하는 함수에 해당 변수를 넣어야 합니다.
참고로 TUNING.WILSON_HEALTH는 게임 내부 스크립트 폴더의 'tuning.lua'에서 확인할 수 있습니다.
이 파일은 \Steam\steamapps\common\Don't Starve Together\data\databundles 경로에서
scripts.zip 안에 turning.lua가 존재합니다.
커스텀 캐릭터는 게임 내 변수로 취급하기 위해
월슨처럼 앞에다가 TUNING.을 붙이고 뒤에 캐릭터 이름을 쓰고 그 뒤에 변수 이름을 쓰는 방식을 많이 씁니다.
왜 이렇게 하는지는 정확히 모르겠으나, 대부분 모드가 이렇게 하기에 규칙을 따르고 있습니다.
tuning 테이블에 등록하기 위함이라는데 자세한 건 모르겠습니다.
이렇게 선언된 변수들은 차후 게임에서 `(backtick)키를 통해 콘솔 창을 연 뒤 'print(TUNING.WHARANG_HEALTH)'를
쳐서 해당 변수에 들어 있는 값을 조회할 수 도 있습니다.
설명이 길어졌지만, 핵심은 'TUNING.WHARANG_HEALTH' 부분을 수정하면, 실제로 체력이 바뀐다는 점입니다.
이 부분은 'TUNING.WHARANG_HEALTH'를 Notepad++의 기능인 파일 내 찾기(Ctrl+Shift+F)로 추적해보면
해당 변수가 사용되는 함수를 바로 찾아낼 수 있습니다.
우선 값을 바꿔보고 함수를 찾아보도록 합시다.
저는 화랑의 피통을 80->150으로 수정하였습니다. 그 밑에 친절히도 배고픔(허기)과 정신력 또한 있습니다.
만약에 여러분이 이 모드 말고 다른 모드를 수정할 때 해당 키워드[HEALTH, HUNGER, SANITY]만 잘 기억한다면
대부분의 모드의 체력, 배고픔, 정신력을 수정하는 데는 큰 어려움이 없습니다. (일부 난독화 된 모드를 제외하고요)
자 수정은 끝났습니다. 실제로 저 변수가 어디에 쓰이는지 추적해봅시다.
아까 수정한 부분을 드래그하고 파일 내 찾기(Ctrl+Shift+F)로 변수를 찾습니다. 경로는 당연히
여러분이 아까 바꿔주신 폴더로 해주셔야 합니다.
이런 식으로요.
경로가 알맞게 지정되었으면 '모두 찾기'를 눌러 진행합니다.
모두 찾기를 해보니 여러 변수가 보입니다. 아까 제가 수정했던 변수의 값도 보이네요.
체력 변수를 수정했으니 modmain.lua에서 검색된 것은 신경 쓰지 않으셔도 됩니다.
대부분의 캐릭터 초기 세팅이 되는 부분은 'scripts\prefabs\캐릭터명.lua'입니다.
여기서 wharang이 캐릭터 명이므로 'scripts\prefabs\wharang.lua'가 되겠네요. 다른 캐릭터 또한 이 부분에서
초기 설정(Initializing)되기 때문에 마찬가지로 이 부분부터 살펴보셔도 상관없습니다.
아무튼 두 개가 필터링되었는데 우리는 여기서 굶지마에서 보편적으로 활용되는 API함수가 있습니다
바로 SetMaxHealth(변수) 함수입니다.
이 함수는 대부분의 캐릭터 모드에서 초기 체력을 설정할 때 자주 쓰입니다. 나중에 함수 구현에 따라 변경도 가능합니다.
이 화랑 캐릭터 스크립트에서는 'inst.components.health.maxhealth'에 값을 대입하는 것으로도
체력 수정이 되도록 구현이 되어있네요. 이건 나중에 조건에 따라 성장했을 때 체력이 바뀌도록 설정한 것입니다.
찾은 부분을 마우스로 클릭하게 되면, 해당 파일 내용으로 이동하게 됩니다.
체력을 설정하는 함수 밑에 배고픔과 정신력을 설정하는 함수 또한 있네요.
이 함수의 이름이 뭔가 하니 master_postinit라는 것을 확인할 수 있네요.
주로 모드에서 공통적으로 있는 함수로는 common_postinit와 master_postinit가 있는데요.
간략하게만 설명해 드리자면, common_postinit에서는 미니맵 아이콘 추가 및 태그 설정 처리, 컴포넌트, 변수 초기화 등을
하고 나머지는 master_postinit에서 다 하신다고 보시면 됩니다. 함수 구현, 이벤트 함수 처리, 능력치 설정 등
다 이곳에서 처리합니다.
추적까지 다했고 값이야 진작에 설정했으니 이제 한번 게임 내에서 살펴봅시다.
서버를 생성하기를 누른 뒤 해당 화면에서 모드 탭을 누르시고
아까 수정했던 모드를 찾아줍시다. 찾았다면 눌러서 체크해주세요.
모드를 수정했기 때문에 당연히 이런 메시지가 뜹니다. 이 내용은 앞에 설명한 것과 같습니다.
마지막으로 원래 화랑의 피통과 수정한 화랑의 피통을 비교해보겠습니다.
비교해보니 수정이 아주 잘된 것을 확인할 수 있습니다.
여기까지 따라오시느라 고생하셨습니다.
여러분이 원하시다면 피통을 더 올릴 수도 있고 배고픔, 정신력까지 수정할 수 있습니다. 더 나아가 기초 능력치를
아예 바꿔버릴 수도 있지요. 그런 자세한 설정은 여러분이 포럼에서 찾아보시면 좋을 것 같습니다.
이에 대해 관련 링크(영문)를 몇 가지 첨부해드리겠습니다.
API예제(영문) 모딩-가이드쓰레드(영문) 모딩-시작해보기(영문)
이 글이 도움이 됐으며 다른 것에 대해 궁금하신 것이 있다면
댓글로 남겨주세요. 제가 아는 한 피드백해드리겠습니다.
'게임 > 굶지마 모드 수정' 카테고리의 다른 글
Don't Starve Together (굶지마 투게더) 아이템 코드 -바다낚시- (0) | 2021.02.22 |
---|---|
Don't Starve Together (굶지마 투게더) 아이템 코드 -비팔로의 해- (0) | 2021.02.15 |
Don't Starve Together (굶지마 투게더) 아이템 코드 -스케치- (0) | 2021.01.29 |
Don't Starve Together (굶지마 투게더) 아이템 코드 -청사진- (0) | 2021.01.28 |
Don't Starve Together (굶지마 투게더) 아이템 코드 완전정복 (9) | 2021.01.27 |