Início
Conheça mais
Enviar pesquisa
Carregar
Entrar
Cadastre-se
Anúncio
Check these out next
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Jubok Kim
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
[0410 박민근] 기술 면접시 자주 나오는 문제들
MinGeun Park
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha
GameInstance에 대해서 알아보자
TonyCms
1
de
53
Top clipped slide
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
26 de Apr de 2012
•
0 gostou
120 gostaram
×
Seja o primeiro a gostar disto
mostrar mais
•
15,834 visualizações
visualizações
×
Vistos totais
0
No Slideshare
0
De incorporações
0
Número de incorporações
0
Denunciar
Tecnologia
devCAT Studio, NEXON
Seguir
devCAT Studio, NEXON
Anúncio
Anúncio
Anúncio
Recomendados
[NDC 2009] 행동 트리로 구현하는 인공지능
Yongha Kim
27.5K visualizações
•
51 slides
NDC 11 자이언트 서버의 비밀
승명 양
4.2K visualizações
•
71 slides
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
5.9K visualizações
•
141 slides
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
19.8K visualizações
•
85 slides
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
11.3K visualizações
•
3 slides
MMOG Server-Side 충돌 및 이동처리 설계와 구현
YEONG-CHEON YOU
1.1K visualizações
•
74 slides
Mais conteúdo relacionado
Apresentações para você
(20)
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Jubok Kim
•
7.1K visualizações
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
•
3K visualizações
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
•
27.8K visualizações
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
•
5.8K visualizações
[0410 박민근] 기술 면접시 자주 나오는 문제들
MinGeun Park
•
11.5K visualizações
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
•
3K visualizações
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
Jaeseung Ha
•
4.7K visualizações
GameInstance에 대해서 알아보자
TonyCms
•
1.5K visualizações
게임 인공지능 설계
ByungChun2
•
2.2K visualizações
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
devCAT Studio, NEXON
•
13.6K visualizações
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
•
49.8K visualizações
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
devCAT Studio, NEXON
•
5.9K visualizações
중앙 서버 없는 게임 로직
Hoyoung Choi
•
8.1K visualizações
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
devCAT Studio, NEXON
•
9.6K visualizações
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
Jubok Kim
•
4K visualizações
[NDC2016] TERA 서버의 Modern C++ 활용기
Sang Heon Lee
•
6.7K visualizações
송창규, unity build로 빌드타임 반토막내기, NDC2010
devCAT Studio, NEXON
•
31.6K visualizações
NDC12_Lockless게임서버설계와구현
noerror
•
7.4K visualizações
이원, 온라인 게임 프로젝트 개발 결산 - 마비노기 개발 완수 보고서, NDC2011
devCAT Studio, NEXON
•
5K visualizações
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
Chanwoong Kim
•
2.4K visualizações
Similar a 조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
(20)
Oop design principle
Ryan Park
•
3.3K visualizações
Effective c++ chapter5 6_ 131039 신동찬
Dong Chan Shin
•
444 visualizações
OOP - Object Oriendted Programing
ChangHyeon Bae
•
97 visualizações
Oop design principle SOLID
Ryan Park
•
1.2K visualizações
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
•
9.5K visualizações
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
•
2.8K visualizações
Node.js in Flitto
SeungWoo Lee
•
15K visualizações
딥러닝 - 역사와 이론적 기초
Hyungsoo Ryoo
•
7.5K visualizações
180525 mobile visionnet_hanlim_extended
Jaewook. Kang
•
1.6K visualizações
A Beginner's guide to understanding Autoencoder
Lee Seungeun
•
6.1K visualizações
NDC 2014 Beyond Code: <야생의 땅:듀랑고>의 좌충우돌 개발 과정 - 프로그래머가 챙겨주는 또 다른 개발자 사용 설명서
영준 박
•
590 visualizações
Nodejs를 이용한 개발
WebFrameworks
•
1.6K visualizações
아이폰에 포팅해보기
changehee lee
•
2.2K visualizações
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
•
10.5K visualizações
[Dev rookie]designpattern
대영 노
•
59 visualizações
기계학습 / 딥러닝이란 무엇인가
Yongha Kim
•
61.4K visualizações
OOP 설계 원칙 S.O.L.I.D.
Ryan Park
•
3.5K visualizações
Ndc2013 정리(upload버전)
Minsu Park
•
4.3K visualizações
Multithread & shared_ptr
내훈 정
•
4.4K visualizações
쫄지말자딥러닝2 - CNN RNN 포함버전
Modulabs
•
51.9K visualizações
Anúncio
Mais de devCAT Studio, NEXON
(20)
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
devCAT Studio, NEXON
•
12.9K visualizações
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
devCAT Studio, NEXON
•
2.3K visualizações
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
devCAT Studio, NEXON
•
2.4K visualizações
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
•
5.7K visualizações
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
devCAT Studio, NEXON
•
1.7K visualizações
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
devCAT Studio, NEXON
•
2.6K visualizações
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
devCAT Studio, NEXON
•
1.6K visualizações
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
devCAT Studio, NEXON
•
6.7K visualizações
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
devCAT Studio, NEXON
•
1.7K visualizações
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
•
3.4K visualizações
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
devCAT Studio, NEXON
•
8.2K visualizações
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
•
5.6K visualizações
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
devCAT Studio, NEXON
•
2.1K visualizações
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
•
4.6K visualizações
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
devCAT Studio, NEXON
•
1.3K visualizações
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
devCAT Studio, NEXON
•
1.1K visualizações
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
devCAT Studio, NEXON
•
471 visualizações
백승엽, M2프로젝트의 오류보고시스템, NDC2010
devCAT Studio, NEXON
•
473 visualizações
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
devCAT Studio, NEXON
•
5.9K visualizações
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
devCAT Studio, NEXON
•
2.1K visualizações
Último
(20)
AWS Summit Seoul 2023 |Datadog을 활용한 AWS 서버리스 Observability
Amazon Web Services Korea
•
50 visualizações
AWS Summit Seoul 2023 | KB의 통합 음성 AI서비스의 현재와 미래 - 하이브리드 클라우드 기반의 똑똑한 AI상담원 콜봇
Amazon Web Services Korea
•
39 visualizações
검색엔진에 적용된 ChatGPT
Tae Young Lee
•
74 visualizações
AWS Summit Seoul 2023 | 기업 고객 대상 기계학습 기반 콜센터 도입을 위한 여정
Amazon Web Services Korea
•
30 visualizações
Red Hat OpenStack 17 저자직강+스터디그룹_2주차
Nalee Jang
•
68 visualizações
AWS Summit Seoul 2023 | 스타트업의 빠른 성장, 안정적인 서비스 운영 노하우는?
Amazon Web Services Korea
•
81 visualizações
Red Hat OpenStack 17 저자직강+스터디그룹_3주차
Nalee Jang
•
43 visualizações
2023_한국공간정보통신_회사소개서.pdf
(주)한국공간정보통신
•
3 visualizações
AWS Summit Seoul 2023 | AWS의 관리형 VDI 서비스! 알고 계셨나요?
Amazon Web Services Korea
•
41 visualizações
AWS Summit Seoul 2023 | 다중 계정 및 하이브리드 환경에서 안전한 IAM 체계 만들기
Amazon Web Services Korea
•
100 visualizações
ChatGPT에 대한 인문학적 이해
Wonjun Hwang
•
45 visualizações
5조_최종발표.pptx
DonOh4
•
16 visualizações
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Nalee Jang
•
66 visualizações
AWS Summit Seoul 2023 | 혁신의 키워드는 '조직'과 '문화' - 하이브리드 클라우드 플랫폼과 agile 조직이 만드는 혁신
Amazon Web Services Korea
•
99 visualizações
Red Hat OpenStack 17 저자직강+스터디그룹_1주차
Nalee Jang
•
205 visualizações
Three.js
Wonjun Hwang
•
12 visualizações
AWS Summit Seoul 2023 | Observability를 넘어선 클라우드 운영관리의 미래
Amazon Web Services Korea
•
45 visualizações
MySQL 실행계획
Wonjun Hwang
•
32 visualizações
AWS Summit Seoul 2023 | AWS에서 최소한의 비용으로 구현하는 멀티리전 DR 자동화 구성
Amazon Web Services Korea
•
68 visualizações
AWS Summit Seoul 2023 | 잘나가는 애플리케이션 성능? 알맞은 스토리지로부터!
Amazon Web Services Korea
•
42 visualizações
Anúncio
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
게임 프로그래머를 위한
클래스 설계 SOLID CLASS DESIGN 신규개발 3본부 조정훈
발표자
조정훈 @blindex99 2003 ~ 마비노기 ~ 2012 마비노기2
모든 프로그래머들의 고민 오늘
점심 뭐 먹을까 말고
왜 내 코드는
폭발하는가
퇴근해서 디아3도 해야하는데
성현들의 가르침 어른들 말씀
틀린거 하나 없다
- KISS - DRY -
HCLC
KISS Keep It Simple,
Stupid - 간결함은 미덕이다 - 오컴의 면도날 간결하게 만들어야 그걸로 복잡한걸 만들지 이 멍청아! ‚Kelly‛ Johnson Skunkworks Lead Engineer
SR-71 ‚Blackbird‛ 가장 높이,
빨리 나는 비행기
DRY Don’t Repeat Yourself -
Once And Only Once - Rules Of Three Three or more? Charles Petzold Use a for! Microsoft Most Valuable Professianal
한마디로 복붙하지 말란
이야기 문제도 복사된단 말이다
HCLC High Cohesion Louse
Coupling - 높은 응집도, 낮은 결합도 - 비슷한 것들은 뭉쳐 있어야 한다 - 서로의 의존도는 낮아야 한다 Is It Good Programming? Larry Constantine Check Cohesion & Coupling Writer of ‚Structured Design‛
연관된 기능을 하는
객체들은 가까울수록 좋다 시간적, 공간적, 논리적 측면에서 모두
여기서 잠깐 어르신들 말씀이
다 맞는데요
어떻게요! 누군 복붙 하고
싶어서 하나
SOLID 이 밤의 끝을
잡는 그 솔리드?
- S RP -
O CP - L SP - I SP - D IP
Single Responsibility Principle 단일
책임 원칙
하나의 객체는 하나의
책임을 가짂다 - 그 하나의 책임에 의해서만 변경된다 - GRASP General Responsibility Assignment Software Pattern 君君臣臣父父子子
GOD OBJECT - 전지
전능한 객체 - MONSTER OBJECT 모든 것에 접근, 수정 가능하다 비대해져서 수정이 어려운 객체
저런 코드를 누가
만들어 누굴 초보로 아나
Omnipresence - 신께서는 어디에나
존재하신다 물론 여러분의 코드에도 - CGod - CCharacter - CWorld 가슴에 손을 얹고 반성해봅시다
산탄총 수술 - 하나의
수정 사항이 여러 모듈에 영향을 미침 - 단순한 기능을 고치는데 여러 파일을 수정해야 한다면 의심해보자 새로 사는게 싸겠는데요?
컴포넌트 시스템
최소의존 게임 컴포넌트 시스템 NDC2009 - 조정훈
Open Closed Principle 개방
폐쇄 원칙
확장에는 열려있고, 변경에는
닫혀있다 - 모듈의 수정 없이 기능 확장 가능 - 인터페이스는 임의로 변경할수 없다 - 변경은 오류를 수정할때만 - 확장은 새 클래스로 구현한다
USB - Universal Serial
Bus - 통일된 인터페이스 - 표준만 지키면 확장은 자유 다양한 악세서리
당연한거 아닌가? - 안
당연하던 시절이 있었습니다 - 수정이 무한대로 가능하던 시절
IT에선 저런 삽질
안함 USB좋은건 초등학생도 안다
에러 리포트 시스템 -
Assert - Throw Exception - Error Mail - DB/File Log - Dialog Box
라이브 서비스에서의 오류
보고 이 부분이 예상보다 많이 발생하면?
IErrorReporter - 상속해서 콘크리트
에러 리포터를 만드는 것은 자유 - IErrorReporter 자체를 수정하는 것은 금지
Liskov Substitution Principle 리스코프
치환 원칙
객체는 부모 객체를
대체가능해야 한다 Derived Class ‘is-a’ Base Class Barbara Liskov First Woman Ph.D in CS MIT Professor Turing Award Winner
Bag is-an Inventory -
많은 부분이 동일하다 - Bag은 Inventory의 특수한 형태 - 통상 Inventory를 먼저 구현한다 Bag은 Inventory를 상속한다 World of Warcraft Blizzard
You just activated
my trap card!
Bag in the
Bag - 인벤토리는 가방을 수납할수 있다 - 따라서 가방안에 가방을 넣을수 있다 인벤토리는 무한하다 Infinite box rumo_der_wolperdinger
Bag is not
an Inventory (LSP) - 인벤토리와 가방은 상속관계여선 안된다
Interface Segregation Principle 인터페이스
격리 원칙
인터페이스는 서로 격리되어야
한다 - 객체는 사용하지 않는 인터페이스의 영향을 받아서는 안된다 - 필요 인터페이스만 사용 가능해야한다 - 미사용 인터페이스는 구현하지 않는다
몬스터 집단 행동 -
몬스터는 동료 몬스터를 도와준다 - SRP 원칙은 준수 - SRP = ISP ?
보스 몬스터와의 연계 -
보스 몬스터 보스는 단독으로 행동함 - FindBuddy? 필요 없는 인터페이스
보스 & 집단행동
몬스터(ISP) - 무리 인터페이스 분리
Dependency Inversion Principle 의존성
역전 원칙
상위 객체는 하위
객체를 몰라야 한다 - 의존성 순환이 벌어지면 안된다 - 추상화 인터페이스를 이용한다 - A Knows B - B Knows A (X) - B Knows Abstract A (O)
게임 로직 &
렌더러 - GameLogic Render to Renderer - Render GetRenderObjects from GameLogic - GameLogic knows Renderer - Renderer knows GameLogic
게임 로직 &
더미 렌더러 - 더미 클라이언트 - 성능을 위해 간략한 버전의 렌더러를 작성 - 렌더러가 변경되면 더미 렌더러도 변경해줘야 한다
Abstract Factory Pattern -
필요에 따라 원하는 객체를 생성해준다 - RenderFactory Knows Renderer, DummyRenderer - GameLogic Knows IRenderer
Inversion Of Control -
복수개 또는 0개의 렌더러가 등록되어야 한다면? - Callback, Event Handler - GameLogic Doesn’t know IRenderer
정리 이것만 기억하세요
목차/챕터/간지
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
http://devcat.nexon.com/M2_Recruit.html
Anúncio