Recommended
PDF
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
PDF
[NDC2016] TERA 서버의 Modern C++ 활용기
PDF
PPTX
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
PPTX
PDF
임태현, 게임 서버 디자인 가이드, NDC2013
PPTX
PDF
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
PDF
PDF
PDF
임태현, MMO 서버 개발 포스트 모템, NDC2012
PDF
PPTX
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
PDF
[NDC 2009] 행동 트리로 구현하는 인공지능
PDF
PPTX
PDF
PPTX
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
PDF
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
PDF
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
PPTX
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
PPTX
PDF
MMOG Server-Side 충돌 및 이동처리 설계와 구현
PPTX
PDF
PDF
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
PPTX
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
PDF
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
PDF
PPTX
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
More Related Content
PDF
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
PDF
[NDC2016] TERA 서버의 Modern C++ 활용기
PDF
PPTX
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
PPTX
PDF
임태현, 게임 서버 디자인 가이드, NDC2013
PPTX
PDF
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
What's hot
PDF
PDF
PDF
임태현, MMO 서버 개발 포스트 모템, NDC2012
PDF
PPTX
[NDC 2018] 신입 개발자가 알아야 할 윈도우 메모리릭 디버깅
PDF
[NDC 2009] 행동 트리로 구현하는 인공지능
PDF
PPTX
PDF
PPTX
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
PDF
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
PDF
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
PPTX
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
PPTX
PDF
MMOG Server-Side 충돌 및 이동처리 설계와 구현
PPTX
PDF
PDF
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
PPTX
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
PDF
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Viewers also liked
PDF
PPTX
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
PPTX
PPT
PDF
PDF
[Td 2015]너에게만 나는 반응해 반응형 응용프로그램(이규원)
PDF
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
PDF
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
PPTX
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
PPT
Similar to 조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
PDF
Oop design principle SOLID
PDF
PPTX
PPT
PPTX
[Gpg1권 박민근] 1.0 1.4 요약 정리
PDF
PDF
Game programming patterns
PDF
Game programming patterns 2
PDF
PDF
NDC2011 - 카메라 시스템을 통해 살펴보는 인터랙티브 시스템 개발의 문제점
PPTX
OOP - Object Oriendted Programing
PPT
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
PDF
PDF
[데브루키] 게임 엔진 아키텍쳐_3장_게임을 위한 소프트웨어 엔지니어링 기초
PPT
PPTX
PPT
PDF
PDF
PPTX
More from devCAT Studio, NEXON
PPTX
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
PPTX
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
PDF
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
PDF
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
PDF
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
PDF
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
PDF
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
PDF
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
PDF
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
PDF
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
PDF
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
PDF
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
PDF
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
PDF
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
PDF
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
PDF
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
PDF
백승엽, M2프로젝트의 오류보고시스템, NDC2010
PDF
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
PDF
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
PDF
노기태, 김대우, 모바일 게임 데이터에 입각한 머신러닝 예측 분석 도입 및 삽질 후기, NDC2017
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012 1. 2. 발표자
조정훈
@blindex99
2003 ~ 마비노기
~ 2012 마비노기2
3. 4. 5. 6. 7. 8. KISS
Keep It Simple, Stupid
- 간결함은 미덕이다
- 오컴의 면도날
간결하게 만들어야 그걸로
복잡한걸 만들지 이 멍청아! ‚Kelly‛ Johnson
Skunkworks Lead Engineer
9. 10. DRY
Don’t Repeat Yourself
- Once And Only Once
- Rules Of Three
Three or more?
Charles Petzold
Use a for! Microsoft Most Valuable Professianal
11. 12. HCLC
High Cohesion Louse Coupling
- 높은 응집도, 낮은 결합도
- 비슷한 것들은 뭉쳐 있어야 한다
- 서로의 의존도는 낮아야 한다
Is It Good Programming? Larry Constantine
Check Cohesion & Coupling Writer of ‚Structured Design‛
13. 14. 15. 16. 17. 18. 19. 하나의 객체는 하나의 책임을 가짂다
- 그 하나의 책임에 의해서만 변경된다
- GRASP
General
Responsibility
Assignment
Software
Pattern
君君臣臣父父子子
20. 21. 22. 23. 산탄총 수술
- 하나의 수정 사항이 여러 모듈에 영향을 미침
- 단순한 기능을 고치는데 여러 파일을 수정해야 한다면 의심해보자
새로 사는게 싸겠는데요?
24. 25. 26. 확장에는 열려있고, 변경에는 닫혀있다
- 모듈의 수정 없이 기능 확장 가능
- 인터페이스는 임의로 변경할수 없다
- 변경은 오류를 수정할때만
- 확장은 새 클래스로 구현한다
27. 28. 29. 30. 에러 리포트 시스템
- Assert
- Throw Exception
- Error Mail
- DB/File Log
- Dialog Box
31. 32. 33. 34. 객체는 부모 객체를 대체가능해야 한다
Derived Class ‘is-a’ Base Class
Barbara Liskov
First Woman Ph.D in CS
MIT Professor
Turing Award Winner
35. Bag is-an Inventory
- 많은 부분이 동일하다
- Bag은 Inventory의 특수한 형태
- 통상 Inventory를 먼저 구현한다
Bag은 Inventory를 상속한다 World of Warcraft
Blizzard
36. 37. Bag in the Bag
- 인벤토리는 가방을 수납할수 있다
- 따라서 가방안에 가방을 넣을수 있다
인벤토리는 무한하다
Infinite box
rumo_der_wolperdinger
38. Bag is not an Inventory (LSP)
- 인벤토리와 가방은 상속관계여선 안된다
39. 40. 인터페이스는 서로 격리되어야 한다
- 객체는 사용하지 않는 인터페이스의 영향을 받아서는 안된다
- 필요 인터페이스만 사용 가능해야한다
- 미사용 인터페이스는 구현하지 않는다
41. 몬스터 집단 행동
- 몬스터는 동료 몬스터를 도와준다
- SRP 원칙은 준수
- SRP = ISP ?
42. 43. 44. 45. 상위 객체는 하위 객체를 몰라야 한다
- 의존성 순환이 벌어지면 안된다
- 추상화 인터페이스를 이용한다
- A Knows B
- B Knows A (X)
- B Knows Abstract A (O)
46. 게임 로직 & 렌더러
- GameLogic Render to Renderer
- Render GetRenderObjects from GameLogic
- GameLogic knows Renderer
- Renderer knows GameLogic
47. 게임 로직 & 더미 렌더러
- 더미 클라이언트
- 성능을 위해 간략한 버전의 렌더러를 작성
- 렌더러가 변경되면 더미 렌더러도 변경해줘야 한다
48. 49. 50. 51. 52. References
- SOLID Development Principles – In Motivational Pictures
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures
- Agile Code Design
http://www.planetgeek.ch/2011/07/08/presentation-agile-code-design-how-to-keep-your-code-flexible/
- Is your design SOLID?
http://blogs.globallogic.com/is-your-design-solid
- 객체지향 SW 설계의 원칙
http://www.zdnet.co.kr
- Wikipedia
http://wikipedia.org
53.