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.

게임엔진을 설계해 보자

142 views

Published on

DirectX12를 이용하여 게임 엔진을 설계해 보고 개발합니다.
게임회사 취업을 목표로 하는 학생을 대상으로 합니다.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

게임엔진을 설계해 보자

  1. 1. 게임엔진을 설계해 보자 DirectX12와 OOP 작성자 : 황대영 수정일자 : 2018-11-08 문서 버전 : 0.2
  2. 2. 목차 1. 작성자 소개 2. 강의 대상 3. 게임엔진이란? 4. 오픈소스 게임엔진 5. 적절한 설계? 6. cocos2d-x 엔진 분석 7. 책 [패턴 그리고 객체지향적 코딩의 법칙] 8. 게임 엔진 개발 실습 9. 결론 10.참고자료
  3. 3. 작성자 소개 1. 경력 : 게임 개발 경력 5년 차 2. 언어 : C++, C# 3. 엔진 : Unity, cocos2d-x, OGRE 4. 그 외 기술 : 일정 관리, UML 작성 5. 출시 게임 : 탭탭 디스코 외 다수 6. 개인 블로그 : http://ddayin.tistory.com/ 7. 게임 클라이언트 프로그래머로 엔진을 사용해 보았으나, 직접 게임 엔진을 개발해 본적은 없다. 하지만 이번 기회를 통해 기초 개념을 다지고 설계를 배운다.
  4. 4. 강의 대상 게임 회사 취업을 목표로 하는 취업 준비생, 학생 자체 엔진을 사용하는 게임 회사가 드물기 때문에 취업에 직접적으로 도움이 안 될 수 있다. (Unity, Unreal Engine으로 포폴을 만드는 것을 추천) 하지만 기초 개념을 다지고 큰 프로젝트를 스스로 경험하고 싶다면 도전해 보자. [선행 지식] 1. C++ 2. DirectX 3. 객체 지향 프로그래밍
  5. 5. 게임엔진이란? 1. 게임 엔진(영어: Game engine)은 비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소를 말한 다. 2. 컴퓨터 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축시켜 줄 뿐 아니라, 게임을 다양한 플랫폼에서 실행할 수 있게 해주기도 한다. 출처 - 위키백과
  6. 6. 게임엔진이란? 1. 특히 게임 엔진은 재사용을 염두에 두고 있기 때문에, 하나의 게임에 종속되지 않고 여러 종류의 게임에 쓰일 수 있도록 개발된다. 2. 게임 엔진이 제공하는 주요 기능으로는 2차원 그래픽이나 3차원 그래픽을 출 력하기 위한 렌더링 엔진('렌더러'), 물리 엔진, 충돌 검출과 충돌 반응, 사운드 출력, 스크립트 작성, 애니메이션, 인공 지능, 네트워크, 스트리밍, 메모리 관리, 쓰레딩, 씬 그래프 등이 있다. 출처 - 위키백과
  7. 7. 게임엔진이란? 즉, 게임에서 쓸 공통 클래스들의 모음이라고 봐도 무방하다 Ogre 엔진 예시 =>
  8. 8. 오픈소스 게임엔진 엔진 개발 때 레퍼런스로 쓸 수 있는 오픈소스를 소개한다. [유명하고 많이 쓰인 오픈 소스] 1. OGRE 2. cocos2d-x
  9. 9. 오픈소스 게임엔진 [비교적 최근에 나온 엔진] 1. Banshee Engine : https://github.com/BearishSun/BansheeEngine 2. Microsoft Mini Engine : https://github.com/Microsoft/DirectX-Graphics- Samples * 주의사항 : 개발 중인 상태이므로 컴파일이 잘 안될 수 있다. ^^; 소스코드만 참고할 것
  10. 10. 적절한 설계 ? 적절한 비유 하나. 어렸을 때 레고 블록이나 과학상자를 가지고 논 기억이 있을 것이다. 처음에는 도면 또는 매뉴얼을 보면서 간단한 집을 짓거나 승용차를 만든다. 그리고 연습 그리고 연습… 레고를 다 분해하고 다시 쌓고 다시 분해하고 다시 쌓는다. 이 과정이 반복 되면 반복 될 수록 보다 창의적이고 거대하고 복잡한 것을 만들 수 있게 된다. 이제 도면이나 매뉴얼을 참고하지 않고도 레고 블록으로 뚝딱뚝딱 만들 수 있다.
  11. 11. 적절한 설계 ? 프로그래밍의 세계. 처음에는 절차 지향적 프로그래밍으로 언어를 배운다. 테트리스나 애니팡과 같은 간단한 게임을 만들어 본다. (소스 코드는 널려있음) 10000 라인이 넘는 프로젝트를 해보면서 객체 지향 프로그래밍이 유용함을 직접 느껴본다. RTS나 RPG와 같은 복잡하고 규모가 있는 게임을 개발한다. 리팩토링을 습관화하고 설계에 대한 고민을 한다. 더불어 디자인 패턴을 익혀 팀 단위 약속을 지키면서 공동 개발한다.
  12. 12. 적절한 설계 ? 설계를 위한 몇 가지 규칙은 존재한다. 디자인 패턴과 같은 경험 많고 능숙한 프로그래머들이 주로 쓰는 프로그래밍 패턴 도 존재한다. 그러나 무엇보다 중요한 것은 작은 프로젝트에서 시작해서 크고 복잡한 프로젝트 까지 직접 경험을 해보아야 한다. 그래야 왜 규칙이 존재하고 디자인 패턴을 배워야 하는지 이유를 알게 된다. 따라서 가장 멋지고 아름다운 설계란 있을 수 없다. (요구사항 또한 계속 변함) 설계는 프로그래머 개인의 경험에 의존하기 때문이다.
  13. 13. cocos2d-x 엔진 분석
  14. 14. cocos2d-x 엔진 분석 Director
  15. 15. cocos2d-x 엔진 분석 Scene Graph
  16. 16. cocos2d-x 엔진 분석 Sequence
  17. 17. 책 [패턴 그리고 객체지향적 코딩의 법칙] 현재 절판되고 전자책으로 구매 가능 2007년에 나온 책이지만 초급 프로그래머에게 유용함
  18. 18. 책 [패턴 그리고 객체지향적 코딩의 법칙] 책을 직접 읽어보는 것을 권장함 시간적 여유가 안 된다면 아래 요약정리한 것을 참고 https://www.slideshare.net/ddayinhwang9/ss-62024635
  19. 19. 결론
  20. 20. 참고자료 - 웹 ● https://ko.wikipedia.org/wiki/%EA%B2%8C%EC%9E%84_%EC%97%94%EC %A7%84
  21. 21. 참고자료 - 책
  22. 22. 참고자료 - 슬라이드 쉐어
  23. 23. 감사합니다.

×