다른 갤럼이 이미 작성한 강좌가 있긴한데, 좀 더 살 붙여서 강좌 씀.
이미 올라가 있는 글은 포이요미 셰이더만 지원했는데, 셰이더 코드 수정해서 UTS에서도 쓸 수 있게 바꿨다.
일단 복사핵을 막는 원리는 스크립트를 이용해 암호 값에 따라 모델을 깨트리고
게임 내에서 암호를 입력하면 셰이더로 복구하는 방식이다.
여기서 설정한 암호는 브얄챗 서버에 업로드 되지 않기 때문에 추출로도 암호는 알아낼 수 없다.
따라서 현재 나온 방법중 가장 안전한 방법이다.
단점이라면 세이프티 안 킨 사람은 저렇게 보일거라는거?
--시작--
시작하기전 가정
0.UTS 셰이더와 SDK3.0이 깔려있다.
UTS 셰이더: https://unity-chan.com/download/download.php?id=UTS2_0&v=2.0.7.5
1.기본적인 3.0아바타를 만들줄 안다.
2.UTS셰이더를 다룰줄 안다.
1.안티리핑 툴을 다운 받아준다.
https://github.com/OFWModz/GTAnti-Rip
2.압축을 Assets폴더에 풀어넣어준다.
3.넣으면 이런 오류가 뜰 수도 있는데 그냥 저 GTAnti-Rip-master폴더내에 Texture폴더 내부 파일들 전부 지우면 됨다른 갤럼이 이미 작성한 강좌가 있긴한데, 좀 더 살 붙여서 강좌 씀.
https://drive.google.com/u/0/uc?id=1Cq9qaniAYPXZOQwPxHOJk5CTsHB6m-jF&export=download
4.전용 UTS셰이더를 다운 받아서 압축풀고 Asset폴더에 넣어줌
이러면 준비는 끝난거임
5.자기 아바타의 모델파일(.fbx)파일을 눌러서 Normals부분을 import로 바꿔준다.
암호화 시킬 부위의 메테리얼들을 선택하고
6.인스펙터창에서 메테리얼의 셰이더를 사진에 보이는 _GT셰이더로 바꿔줘
바꿔도 자신이 이미 UTS셰이더를 쓰고 있다면 겉보기엔 변화가 없을거임
7.자신의 아바타의 FX레이어에 들어가 있는 애니메이터를 Animator컴포넌트에 Controller에 넣어줘.
8.Add Componet로 Ava Crypt Root스크립트를 추가해주고 수치를 조절해줘.
Distort Ratio로 왜곡의 정도를 수정할 수 있고 (클 수록 아바타가 크게 깨짐) 0.01이 가장 적당한 거 같더라.
Key 0 ~ 3은 자기가 임의로 설정해줘. 아바타에 쓰일 비밀번호임. 근데 비밀번호 수치가 너무 적으면 안좋은 거 같음
그 후
9. Validate Animator Controller버튼을 누르면 자동으로 비밀번호 관련된 애니메이터가 생겨짐. 이건 신경 안써도 돼니 정리만 해둬.
그 다음 Encrypt Avatar버튼을 누르면
사진에 보이는 것 처럼 아까 자기가 셰이더 바꾼 메테리얼의 메쉬만 깨지게 될거야.
난 옷도 깨트릴거니 옷 메테리얼의 셰이더도 바꿔주고 다시 Encrypt Avatar 버튼을 눌러주겠음
그러면 이렇게 복사본과 함께 깨진 모델이 생겨난다.
Distortion값을 낮게해서 별로 안깨져보인다.
이 방식은 세이프티를 끈 유저에게는 저렇게 보일테니 왜곡이 저정도면 적당한 거 같다.
그 다음 아바타 파라미터 칸으로 가서 AvaCryptKey0 ~ 3 까지 추가해줌. 타입은 Float이고 Saved는 체크해두는 게 월드 이동할 때마다 덜 귀찮음
만든 메뉴를 눌러서 Add Control로 4개의 Radial Puppet을 만들어준다.
Radial Puppet은 원형 패드이다.
그 다음 자기 아바타의 Menu를 열어서 Add Control을 눌러 Sub Menu를 만들어주고
위에서 만든 패스워드 입력 메뉴를 넣어준다.
이제 Animator에 Controller에 들어간걸 원형 동그라미를 눌러서 none으로 만들어서 빼주자.
그 후 업로드 하면 끝.
이제 게임내에서 액션 메뉴를 열고 비밀번호를 입력하면 아바타가 원래대로 돌아온다.
유니티 내에서 잘됐는지 테스트 해보고 싶으면
메테리얼을 누르고 Show All properties
제일 하단에 Key 0~3값을 설정한 비밀번호 값으로 해보자. 그럼 원래대로 돌아오는 모델을 볼 수 있을 거임
완벽하게 돌아오지? 여기서 키가 하나라도 다르면 완벽하게 복구가 안되서 찍어서 맞추기도 힘듦
물론 업로드 할 땐 저 값을 다시 0으로 돌려놓고 업로드하자.
끗