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.

게임 프레임워크 & 설계 자료조사

42 views

Published on

게임 프레임워크와 설계에 대한 자료 조사한 것을 정리해 보았습니다.

Published in: Software
  • Be the first to comment

  • Be the first to like this

게임 프레임워크 & 설계 자료조사

  1. 1. 게임 프레임워크 & 설계 자료조사 - 작성자: 황대영 - 수정일자: 2016.05.06
  2. 2. 목차 • 목적 및 개요 • 용어 정리 • Architect • 객체 지향 개발 5대 원칙: SOLID • Single Responsibility Principle • Open Close Principle • Liskov Substitution Principle • Interface Segregation Principle • Dependency Inversion Principle
  3. 3. 목차 • 목적 및 개요 • 용어 정리 • Architect • 게임 개발에서의 Architect • SOLID
  4. 4. 목적 및 개요 • 저는 게임 클라이언트 프로그래머이므로 게임 클라이언트 위주로 자료 조사하였습니다. • 게임 프레임워크 제작 경험은 2개의 상용 게임 프로젝트 • Unity 게임 프로젝트를 진행하면서 특정 장르의 게임을 “틀”로 찍어내듯이 게임을 개발하고자 합니다.
  5. 5. 목적 및 개요 • 디자인 패턴을 모르는 개발자를 위해 최대한 자제하고 이해하기 쉽고 간단한 설계를 목표로 합니다. • 실전 위주로 자료 조사하였습니다. • 게임 프레임워크와 설계에 대한 자료가 많지 않았습니다.
  6. 6. 용어 정리 • 게임 프레임워크 >= 게임 엔진 • 라이브러리 != 프레임워크 • 게임 엔진 중에는 게임 프레임워크를 포함함 (Unreal, Unity)
  7. 7. Architect • 한국정보통신기 술협회 IT 용어사전에서
  8. 8. 게임 개발에서의 Architect • 설계만 하고 코딩은 안하는 Architect는 아직까지 게임 개발하면서 본 적이 없다. • 게임 프로그래머가 설계도 하고 코딩도 하기 때문이기도 하지만 • 코딩이 없이 설계만 한다는 게 애당초 말이 안된다. • 왜냐하면 게임 개발 시, 요구사항은 끊임 없이 변하기 때문이다. • 애자일에서도 “점진적인” 설계를 권장한다.
  9. 9. 과잉 설계의 결과 • SNG 팜류 게임을 개발하려고 MVC 패턴을 도입했었다. • 그러나 클라이언트 팀원들은 MVC 패턴에 대해서 모르고 있었고 공부를 해야 했었다. • MVC 패턴이 개발 속도가 더디었기 때문에 다시 원래 Manager를 쓰는 것으로 돌아갔었다. • 이렇게 과잉 설계는 자칫 프로젝트를 망치기도 한다.
  10. 10. BAD Design • Rigidity (경직성) – It is hard to change because every change affects too many other parts of the system. • Fragility (부서지기 쉬움) – When you make a change, unexpected parts of the system break result is you have to do impact analysis in whole project. • Immobility (부동성) - It is hard to reuse in another application because it cannot be extricate from the current application. • By Robert Martin
  11. 11. KISS • Keep It Simple, Stupid
  12. 12. DRY • Don’t Repeat Yourself
  13. 13. HCLC • High Cohesion Louse Coupling
  14. 14. 객체 지향 개발 5대 원칙: SOLID • SRP (Single Responsibility Principle: 단일 책임의 원칙) • OCP (Open Close Principle: 개방폐쇄의 법칙) • LSP (The Liscov Substitution Principle: 리스코브 치환 법칙) • ISP (Interface Segregation Principle: 인터페이스 분리의 법칙) • DIP (Dependency Inversion Principle: 의존성 역전의 법칙)
  15. 15. 객체 지향 개발 5대 원칙: SOLID
  16. 16. Single Responsibility Principle • SRP • THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE. • 무조건 책임을 분리한다고 SRP가 적용되는 건 아니다. • 각 개체 간의 응집력이 있다면 병합이 순 작용의 수단이 되고 결합력이 있다면 분리가 순 작용의 수단이 된다.
  17. 17. Single Responsibility Principle • SRP 적용 전,
  18. 18. Single Responsibility Principle • SRP 적용 후,
  19. 19. Open Close Principle • 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원리 • 요구사항의 변경이나 추가사항이 발생하더라도, • 기존 구성요소는 수정이 일어나지 말아야 하며, • 기존 구성요소를 쉽게 확장해서 재사용할 수 있어야 한다는 뜻
  20. 20. Open Close Principle • OCP 적용 전,
  21. 21. Open Close Principle • OCP 적용 후
  22. 22. Liskov Substitution Principle • LSP • FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT. • 서브 타입은 기반 타입이 약속한 규약(public 인터페이스, 물론 메소드가 던지는 예외까지 포함됩니다.)을 지켜야 함
  23. 23. Interface Segregation Principle • ISP • CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE.
  24. 24. 결론
  25. 25. 참고 서적 • Head First Object-Oriented Analysis & Design • 패턴 그리고 객체지향적 코딩의 법칙 • Software Architecture in Practice (3rd Edition)
  26. 26. 참고 서적 • 객체지향의 사실과 오해 • 패턴 그리고 객체지향적 코딩의 법칙 • UML 실전에서는 이것만 쓴다
  27. 27. 참고 서적 • 도메인 주도 설계
  28. 28. 참고 SlideShare • Kgc2012 유연한 컨텐츠 개발을 위한 온라인 게임 아키텍처 - http://www.slideshare.net/kgun86/kgc2012 • 조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012 - http://www.slideshare.net/devcatpublications/ndc2012-12695564 • Kgc2012 온라인 게임을 위한 게임 오브젝트 설계 - http://www.slideshare.net/kgun86/kgc2012-14699174 • 게임 프레임워크의 아키텍쳐와 디자인 패턴 - http://www.slideshare.net/agebreak/ss-15497293 • 행동 기반 게임오브젝트 - http://www.slideshare.net/kgun86/ss-10103030
  29. 29. 참고 SlideShare • 게임 개발에 자주 사용되는 디자인 패턴 - http://www.slideshare.net/ssuserc7d9d4/ss- 41081616 • 도메인 주도 설계의 본질 - http://www.slideshare.net/baejjae93/ss-27536729 • 애플리케이션 아키텍처와 객체지향 - http://www.slideshare.net/baejjae93/ss-55571345 • Ndc2010 김주복, v3. 마비노기2아키텍처리뷰 - http://www.slideshare.net/eiaserinnys/ndc2010-v3-2 • Introduction to Data-Oriented Design - http://www.slideshare.net/DICEStudio/introduction-to- data-oriented-design
  30. 30. 참고 SlideShare • Data Oriented Design 얄팍하게 살펴보기 - http://www.slideshare.net/ssmim101/data-oriented-design- 13941654
  31. 31. 참고 웹 자료 • 게임 오브젝트 설계… 나도 잘 하고 싶다! #1 - http://www.gamedevforever.com/41 • 게임 오브젝트 설계… 나도 잘 하고 싶다! #2 - http://www.gamedevforever.com/98 • 게임을 예로 설명한 알기 쉬운 도메인 주도 설계 - http://www.moreagile.net/2014/12/1.html • 데이터 중심 디자인 - http://parkpd.egloos.com/4092250 • 데이터 주도적 설계의 마법 - http://createworld77.blogspot.kr/2010/12/10.html • 데이터 주도 개발 혹은 데이터 지향 개발 - http://dalinaum-kr.tumblr.com/post/14836234012/data-driven- or-data-oriented • 객체 지향 개발 5대 원리 : SOLID
  32. 32. 참고 웹 자료 • Software Design Principles - http://www.codeproject.com/Tips/654769/Software-Design- Principles • 주객전도 아키텍처 / 프로그래밍 - https://youtu.be/TW4cOAmRTFY
  33. 33. 참고 커뮤니티 • 아꿈사 - http://cafe.naver.com/architect1 • 생활코딩 - https://www.facebook.com/groups/codingeverybody/
  34. 34. 감사합니다. • 부족한 자료조사 봐주셔서 감사합니다. • 제 목표이자 꿈이었던 일을 할 수 있는 기회를 준 회사와 선배 게임 프로그래머 분들에게 감사드립니다. • 피드백 주시면 더욱 감사하겠습니다.

×