Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

졸음이 달아나는 Unity 게임 소스코드 분석

14,678 views

Published on

Unity 게임 프로젝트 소스코드를 분석하는 방법에 대해 제안 드립니다.
코드를 읽기만 하면 지루한 단점이 있어서 보다 적극적인 방법을 모색해 보았습니다.
이것이 정답이라고 할 수 없으므로 참고용으로 보시기 바랍니다.

Published in: Software

졸음이 달아나는 Unity 게임 소스코드 분석

  1. 1. 졸음이 달아나는 Unity 게임 소스코드 분석 작성자: 황대영 수정일자: 2016-05-05
  2. 2. 목차 1. 목적 2. 왜 소스코드 분석을 해야 하는가? 3. 소스코드 분석의 단점 4. 실무 게임 개발자분들의 방법 5. 사전 준비 6. 적극적인 소스코드 분석 제안 1. 보다 적극적인 소스코드 분석 제안 2. Visual Studio Class Diagram 3. Unity MonoBehaviour Flow Chart 4. 참고자료 5. 감사합니다
  3. 3. 목적 1. 저는 게임 클라이언트 프로그래머이므로 Unity 게임 프로젝트를 기준으로 설 명하겠습니다. 2. 상용 게임 소스코드 인수인계 받고 소스코드 분석 후, 바로 실무에 투입된 프 로젝트 3개 3. 5일 동안 소스코드 분석할 시간적인 여유가 주어지는 황금 같은 시기를 어떻 게 잘 활용할 수 있을까 해서 문서화
  4. 4. 목적 1. 대개는 소스코드 분석이라고 하면 코드를 읽어보기 때문에 지루한 편 2. 좀 더 능동적으로 소스코드 분석할 수 있는 방법을 문서화 3. 게임 소스코드를 분석하는 방법에 대한 것이지 특정 게임 프로젝트의 소스 코드를 설명하는 것은 아닙니다. 4. 소스 코드 분석 방법에 정답이 있는 것은 아니므로 참고용으로 보시기 바랍 니다.
  5. 5. 왜 소스 코드 분석을 해야 하는가? 1. 개발자 대부분은 신규 프로젝트가 아닌 이상 개발 도중에 투입되거나 라이브 팀에서 유지보수를 한다. 2. 오픈소스 프로젝트 소스 코드 분석이 실력 향상에 도움이 된다. 3. 업무에 빠르게 적응하고 기능 추가, 디버깅, 리팩토링 등을 하기 위해 우선적 으로 필요하다.
  6. 6. 왜 소스 코드 분석을 해야 하는가? 1. 소스 코드 분석 없이 바로 작업은 가능하지만 소스 코드 이해가 필요하고 코 드가 얼기 설기 묶여있는 작업은 결국 소스 코드 분석이 필요하다. 2. 소스 코드 분석 없이 바로 작업을 하려면 리팩토링을 하면서 소스 코드를 이 해하는 방법도 있을 수 있겠다. 3. 결국엔 소스 코드 분석 기간을 일정 산정에 추가하는 것이 필요하다.
  7. 7. 소스 코드 분석의 단점 1. 우선 자신이 짜지 않은 소스 코드를 이해한다는 것은 경력자들도 매우 어려 워 하는 일이다. 2. 코드를 읽기만 하면 매우 지루하고 졸릴 수 있다. 3. 잘못 하면 소스 코드 분석하는 기간을 헛되이 보낼 수 있다. 4. 소스 코드 파일 량이 방대한 경우가 대부분이기 때문에 주어진 기간 동안 모 든 파일을 다 볼 수는 없다.
  8. 8. 실무 게임 개발자분들의 방법 - 게임 코디 참고 • 최초 진입 지점을 찾아서 함수가 호출 되는 부분을 쭈욱 따라가 본다. • 필요한 곳 위주로 꼼꼼히 살펴본다. • 흐름과 로직을 분리하여 본다. • diagram을 그려본다. • 수정이 필요한 곳부터 살펴본다. • DFD (Data Following Diagram) / LFD (Logic Following Diagram) 작성한다.
  9. 9. 사전 준비 1. Visual Studio Community 2015 (무료) a. https://www.visualstudio.com/ko-kr/products/visual-studio-community- vs.aspx 2. StarUML 2.6.0 (평가판 사용 가능) a. http://staruml.io/
  10. 10. 적극적인 소스코드 분석 방법 제안 1. [주의] 이 방법이 절대적으로 맞는 것은 아니다. (정답은 없다고 본다) 2. 기존에 개발했던 게임 개발자가 있다면 충분한 설명을 먼저 듣는다. 3. 인수인계 관련 문서가 있다면 충분히 숙지한다. 4. 우선 최초 진입 Scene을 찾는다. 5. Unity Editor에서 게임이 문제 없이 돌아가는 것을 확인한다. 6. Visual Studio 기능으로 Class Diagram 전체적으로 살펴본다.
  11. 11. 적극적인 소스코드 분석 방법 제안 – 계속 이어서 1. 중요하다고 생각되는 클래스들을 추려내어서 간략하게 Class Diagram을 StarUML로 직접 그려본다. (클래스 이름 정도만 적고 클래스 간 관계를 중심으로 본다.) 2. Visua Studio Class Diagram에서 자신이 개발할 클래스를 더블클릭 해서 코 드를 열어본다. 3. Awake() 부터 호출되는 순서로 살펴본다.
  12. 12. 적극적인 소스코드 분석 방법 제안 - 계속 이어서 1. 팀 내 코딩 스타일 / 코드 포맷팅에 대한 문서 / 템플릿이 있다면 자신의 Visual Studio에도 적용한다. 2. 주석을 추가하는 방법 (DoxyGen 스타일 등) 이 있다면 규칙을 따른다. 3. 주석이 필요하다고 생각하고 이해가 된 클래스에는 주석을 추가한다. (주석이 없을 경우) 4. 자신이 소스코드를 리팩토링 한다고 생각하고 개선해야 될 사항들을 적어둔 다. 5. 바로 실무에 투입 되어도 지장이 없다고 생각할 만큼 위 과정을 반복한다. (큰 그림에서 세부 코드를 보는 순서로) (주어진 시간 동안만큼 반복)
  13. 13. 보다 적극적인 소스코드 분석 방법 제안 1. Unity 빈 프로젝트를 연다. 2. 각종 Plugin들을 가져온다. 3. 자신이 앞으로 개발하는데 필요한 클래스들을 가져온다. 4. 수치 변화 등 작은 것부터 시작해서 5. 직접 수정해 보면서 개발해 본다. (주로 클라이언트 단에서만 테스트) 6. 이것이 가장 빠른 소스코드 분석 방법이라고 생각한다.
  14. 14. Visual Studio Class Diagram 보기 메뉴 1. Solution Explorer => 해당 프로젝트 => 오른쪽 클릭 => View => View Class Diagram
  15. 15. Visual Studio Class Diagram 예시
  16. 16. Visual Studio Class Diagram 상세 기능 1. 주로 어떻게 보여줄 것인지 설정 가능 a. Expand - 변수, 함수까지 표시 b. Layout Diagram - 재정렬 c. Export - 이미지로 저장
  17. 17. Unity MonoBehaviour Flow Chart 1. Awake() 2. OnEnable() 3. Start() 4. … 5. OnApplicationQuit() 6. OnDisable() 7. OnDestroy()
  18. 18. 참고자료 1. http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_QnA_etc&p age=8&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnu m&desc=asc&no=597 2. http://www.slideshare.net/kthcorp/h3-2012-15042338 3. http://docs.unity3d.com/Manual/ExecutionOrder.html
  19. 19. 감사합니다 부족한 자료 봐주셔서 감사합니다. 피드백 주시면 더욱 감사하겠습니다 :)

×