버그 해결을 위한 모든 질문을 던져
0 votes
452 views

안녕하세요. 유니티로 모바일 게임을 개발하고 있습니다.

현재 맵을 만드는 맵에디터나 아이템 추가하는 아이템툴과 같이 각종 인게임내에 컨텐츠를 제작하는 툴의 경우 지금 유니티 에디터 내에 커스텀 에디터로 구현이되어있으며 모든 파트 작업자들이 클라 풀소스를 클론 / 풀 받은후에 작업하고있습니다. 

다만 모든 작업자들에게 소스코드가 노출되고 있어서 보안사고가 우려되고 있기에 가급적 소스노출을 최소화 시키고 싶은데 따로 방법이없을까요? 

일단 제 딴에 생각을 여러개 해봤는데...

1. 핵심부분을 dll화 시켜본다.

=> 핵심 코어 부분을 dll로 뺀다고 해도 비즈니스로직들 마저 dll로 빼서 감출순없어서 결국 소스노출은 일어날 수밖에없을듯합니다.

 

2. 윈폼, wpf등으로 외부 툴을 따로 만든다.

작업자분들의 경우 각종 자기가만든 또 다른 프리팹들을 작업에 사용하고 하는 과정이 있는지라 외부 에디터로 빼기가 애매한상황입니다. (프리팹이라는게 아무래도 유니티쪽에 있는 리소스인지라)

그리고 유니티 안의 에디터 시절때와 다르게 작업한걸 작업자들이 시뮬레이션을 바로 해볼수가없다는 단점이 있습니다.

 

3. 완전히 동일한 리소스 구조를 만들어서 새로운 "툴"용 프로젝트를 하나 파서 그 프로젝트를 그냥 툴(커스텀 에디터)로 만든다.

지금 이 방법이 제일 유력할거 같긴한데 문제는 리소스가 몇백메가 단위가 아니라 기가 단위인지라 클라랑 완전히 동일한 리소스 구조 (폴더/파일명)를 클라 / 툴  이렇게 두 프로젝트 다 관리하기가 많이 까다로울것 같습니다.

 

여러가지를 생각해보는데도 결국 소스코드 공유는 일어날 수 밖에없는걸까요?

다른분들은 보통 어떻게 하시나요?

asked (2 point) , 452 views

1 답변

0 votes
DLL 묶으셔도 디컴파일 하면 바로 주르륵 나오기 때문에 난독화 과정이 필수적으로 들어가셔야됩니다.
엔드포인트 API 들만 함수명을 그대로 노출시키고 인터널 메서드들은 다 무작위 함수, 변수명으로 바꾸도록 해 DLL로 묶으면 날것의 코드가 공유되지 않을 수는 있겠네요.

이름이 바뀌었지만 C# 코드이다보니 어느정도 노력하면 식별과 읽기가 가능해지는데, 이것마저 막으시려거든 C++ DLL로 로직을 구성하시고 C#에서 extern으로 함수 주소를 참조하거나 하는 방식으로 가는 것 외에는 방법이 없겠습니다.
answered (405 point)
답변감사드립니다.

아... 결국 같이 작업하는 사람들은 결과적으론 번거로운 방법을 도입하기 힘들다면 전부 공유를 하는수밖에 없나보네요...
저도 UI나 아트쪽 프로젝트를 따로 파서 작업하다가

파일 교환하는게 너무 불편해서 결국 동일프로젝트로 같이 작업하게 된 경험이 있습니다.

하다보면 프로그램쪽에서 쓰는 스크립트를 제공해야 될 경우도 생기고,

작업 완료된 파일들을 매번 익스포트/임포트 하는것도 귀찮고

가끔 파일 링크가 깨지거나 하면 수습하기가 너무 번거롭더군요.

 

또 무엇보다 작업된 에셋들을 바로 플레이 해서 확인하기 힘들다는것도 큰 문제였고요.

이게 가능하려면 게임내에서 쓰는 환경이 거의 그대로 재현되어야 하는데

이걸 구축하고 관리하는것도 공수가 꽤 많이 들어가죠.

 

유니티 자체가 1인개발이나 소규모 팀에 적합한 방식이라 큰 프로젝트일 경우 협업의 한계가 명확한것 같습니다.

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

620 질문
784 answers
748 댓글
118,442 users