41
패킷 지옥으로부터 탈출 신규개발3본부 개발1실 GTR팀 김재석

김재석, 패킷 지옥으로부터 탈출, NDC2010

Embed Size (px)

Citation preview

Page 1: 김재석, 패킷 지옥으로부터 탈출, NDC2010

패킷 지옥으로부터탈출

신규개발3본부 개발1실 GTR팀김재석

Page 2: 김재석, 패킷 지옥으로부터 탈출, NDC2010

개발 중인 내용으로최종 구현은 강연 방향과 다를 수 있습니다.

Page 3: 김재석, 패킷 지옥으로부터 탈출, NDC2010

김재석책임연구원

마비노기2 게임프로그래머마비노기 영웅전

게임프로그래머/테크니컬 디렉터마비노기 게임프로그래머프로젝트 T2 게임프로그래머

오즈 프로그래머

Page 4: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 5: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 6: 김재석, 패킷 지옥으로부터 탈출, NDC2010

class T{ string ToString() { var sb = new StringBuilder(); sb.Append(GetType());

Page 7: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 8: 김재석, 패킷 지옥으로부터 탈출, NDC2010

switch (LookAhead){case Token.OpenSquaredBracket:

Page 9: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 10: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 11: 김재석, 패킷 지옥으로부터 탈출, NDC2010

template <bool isSomeType>class

Page 12: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 13: 김재석, 패킷 지옥으로부터 탈출, NDC2010

#define BOOST_PP_TUPLE_ELEM(size, i, tuple)#define BOOST_PP_SEQ_FOR_EACH(macro, data, seq)

Page 14: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 15: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 16: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 17: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 18: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 19: 김재석, 패킷 지옥으로부터 탈출, NDC2010

System.Reflection.Emit

Page 20: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 21: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 22: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 23: 김재석, 패킷 지옥으로부터 탈출, NDC2010

delegate void OneWayMethod(T1 arg1, T2 arg2);delegate TResult TwoWayMethod(T arg);

Page 24: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 25: 김재석, 패킷 지옥으로부터 탈출, NDC2010

enum MessageID{ Type1, Type2,

Page 26: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 27: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 28: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 29: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 30: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 31: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 32: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 33: 김재석, 패킷 지옥으로부터 탈출, NDC2010
Page 34: 김재석, 패킷 지옥으로부터 탈출, NDC2010

현재 스코어

Page 35: 김재석, 패킷 지옥으로부터 탈출, NDC2010

•로직 프로그래머가 선언한 내용이최적화 엔지니어가 의도한 코드를 생성

•적은 양의 코딩 ≈ 좁은 버그 발생 원인코드 생성이 잘못되면 대체로 전체가 오동작

Page 36: 김재석, 패킷 지옥으로부터 탈출, NDC2010

•전체 흐름에 대한 문서 부실•자동화 현재 구현이 커버 못하는 범위가 크다•로그가 부실하다•예외처리가 부실하다

Page 37: 김재석, 패킷 지옥으로부터 탈출, NDC2010

•전체 흐름에 대한 문서 부실•자동화 현재 구현이 커버 못하는 범위가 크다•로그가 부실하다•예외처리가 부실하다

사용성개선 필요

Page 38: 김재석, 패킷 지옥으로부터 탈출, NDC2010

기계어는 여전히 유효하다성능이 아닌 생산성 향상에도 쓰임새가 있다.

어설픈 자동화는 사용자의 불편을 가중시킨다.자동화 개발 중에는 오히려 생산성이 떨어진다.

Page 39: 김재석, 패킷 지옥으로부터 탈출, NDC2010

Q&A

Page 40: 김재석, 패킷 지옥으로부터 탈출, NDC2010

NDC2010 M2 프로젝트 관련 세션

>공개

– MMORPG 스토리텔링의 금기들•5.24. 11:00~12:00 / 미네르바 / 이원

– 마비노기2의 캐릭터 렌더링 기술•5.24. 13:00~14:00 / 미네르바 / 전형규

– 옷을 입혀봅시다•5.24. 14:00~15:00 / 미네르바 / 안태훈

– 패킷 지옥으로부터 탈출•5.24. 15:00~16:00 / 미네르바 / 김재석

– 캐릭터 3D 모델링 Tip & Tech•5.25. 13:00~14:00 / APEX / 우인철

– 완벽한 설계에의 도전•5.25. 14:00~15:00 / 미네르바 / 김주복

– Unity Build로 빌드타임 반토막내기•5.25. 15:00~16:00 / 미네르바 / 송창규

– 설계 - 간접화의 이해•5.25. 16:30~17:00 / 미네르바 / 권성태

– 테크니컬 아티스트 패널 토크•5.25. 17:00~18:00 / APEX / 김충효, 김주복, 이승철

– Gamebryo - 애매한 미들웨어의 유혹•5.26. 11:00~11:30 / 미네르바 / 권성태

– fmod를 이용한 사운드프로그래밍•5.26. 11:30~12:00 / 미네르바 / 장용석

– 애니메이팅 프로세스 전문화 및 노하우 공유•5.26. 13:00~14:00 / APEX / 김기용

– 쉽고 빠르게 모션 제작하기 TIP•5.26. 14:00~14:30 / APEX / 배정섭

– 친 아티스트 3D 캐릭터 리깅•5.26. 14:30~15:00 / APEX / 한상원

– M2 프로젝트의 오류보고 시스템•5.26. 13:00~14:00 / 미네르바 / 백승엽

– 로컬라이제이션 프로그래머의 준비•5.26. 14:00~14:30 / 미네르바 / 장기현

Page 41: 김재석, 패킷 지옥으로부터 탈출, NDC2010

NDC2010 M2 프로젝트 관련 세션

>비공개

– 테스트환경의 진화 : 시각화/리플레이•5.27. 11:00~11:30 / 미네르바 / 조정훈

– 서버 사이드 렌더링의 태동•5.27.11:30~12:00 / 미네르바 / 권성태

– 마비노기2 몬스터 AI : 구현과 디버깅•5.27. 14:00~15:00 / 미네르바 / 오승준

– STD 텍스트 데이터 포맷의 적용과 응용•5.27. 15:00~15:30 / 미네르바 / 김지훈

– M2Tools 사용성 개선•5.27. 15:30~16:30 / 미네르바 / 이승철

– 영상을 이용한 팀 얼라인먼트•5.27. 16:30~17:00 /교육장 / 이진훈

– 스케일폼은 축복인가? 재앙인가? •5.27. 17:00~18:00 / 미네르바 / 윤성문

– 사실적 터치의 게임 일러스트•5.28. 11:00~11:30 / 미네르바 / 한아름

– 노말맵 겁먹지 마세요!•5.28. 11:30~12:00 / 미네르바 / 지정현

– 테크니컬 아트 테크닉스 : 애니메이팅 & 리깅•5.28. 14:00~15:00 / 미네르바 / 김충효

– 마비노기2의 하우징 시스템•5.28. 15:00~16:00 / 교육장 / 이무림

– 마비노기2 하우징 블록 디자인 사례•5.28. 16:00~16:30 / 미네르바 / 이연희

– 모자를 씌워봅시다•5.28. 16:30~17:00 / 미네르바 / 안태훈

– 차세대 게임의 시나리오 개발 프로세스•5.28. 17:00~18:00 / 교육장 / 이원