SlideShare a Scribd company logo
C#으로 게임 엔진 만들기
(3)
김지환
NHN NEXT
목표
• 지형 ( Grid ) 그리기
DRAW GRID
• 이제 점점 코드가 많아지고 중복되는 부분 또한 많아지니 미리 프로젝트를 다운로드 받으세요.
• 중요한 부분에 대해서만 설명하도록 하겠습니다.
사용했던 프로젝트
https://github.com/jihwankim/CS_PPT
DRAW GRID
• 오늘의 결과물입니다.
개수와 크기를 정해서 격자를 그리고 화면에 렌더합니다.
DRAW GRID
• Core Class의 구조입니다.
DirectX
Class
C++
CLI
Wrapped
Core Class
Init
BeginScene
EndScene
CleanUp
SetCamera
GetDevice
D3D를 초기화합니다.
Render Begin
Draw End
할당된 리소스를 해제합니다.
시점을 설정합니다..
생성된 Device의 포인터를 반환.
DRAW GRID
• Ground Class는 격자 ( Grid )를 그려주는 클래스입니다.
CGround
Class
C++
CLI
Wrapped
Ground Class
Create
OnRender
OnRelease
Core Device에 Ground를 생성
Ground Render
할당된 메모리를 해제합니다.
DRAW GRID
• 메인 코드입니다. ( C# )
• 이전과 달라진 점은
Core의 Render부분이 DrawScene, EndScene으로 분리되었습니다.
그리고 Ground 클래스가 새로 생겼습니다.
DRAW GRID
• Ground Class 입니다. ( C++ )
• Create 메소드를 보면 DirectX를 초기화 할 때 생성한 Device를 인자로 받아야 합니다.
이 Device정보를 가지고 Vertex Buffer, Index Buffer 등을 생성합니다.
그 외에 열, 행의 개수나 격자의 크기를 받습니다.
Ground Class ( 출처 : http://nowcampus.tistory.com/entry/10 )
DRAW GRID
CLI로 래핑한 Ground 클래스입니다.
Ground는 초기화한 Device 정보가 필요합니다.
그래서 Core의 GetDevice()를 통해 그 정보를 받아야 하기 때문
에 매개 변수로 Core를 전달해 줘야 합니다.
여기서 CLI 문법이 몇 개 나오는데 알아보도록 하겠습니다.
DRAW GRID
CLICore::Core ^core
CLI에서 관리 클래스(ref) 는 복사 생성자를 가지지 못합니다.
그래서 매개 변수로 클래스를 넘겨주지 못합니다.
그러므로 인자로 Reference를 넘겨주어야 하는데
그 때 사용하는 키워드가 ^ 입니다.
^는 C++의 *과 비슷한 용도이며 Handle이라 부릅니다.
그래서 클래스를 넘겨줄 때, 복사 생성자를 사용할 수
없으므로 핸들을 참조하도록 ^ 키워드를 사용하는 것입니다.
Ground Object를 이용해 기본적인 땅을 그려봤습니다.
다음 PPT엔 평지에 높이맵 ( Height map )을 적용하고 카메라 조작에 대해 설명하겠습니다.
사용했던 프로젝트
https://github.com/jihwankim/CS_PPT
DRAW GRID
END

More Related Content

Viewers also liked

Easyloggingpp
EasyloggingppEasyloggingpp
Easyloggingpp
지환 김
 
[Effective Modern C++] Chapter1 - item1
[Effective Modern C++] Chapter1 - item1[Effective Modern C++] Chapter1 - item1
[Effective Modern C++] Chapter1 - item1
지환 김
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
흥배 최
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
예림 임
 
[Effective Modern C++] Chapter1 - item2
[Effective Modern C++] Chapter1 - item2[Effective Modern C++] Chapter1 - item2
[Effective Modern C++] Chapter1 - item2
지환 김
 
Engines, Tools, and Scripts
Engines, Tools, and ScriptsEngines, Tools, and Scripts
Engines, Tools, and ScriptsKalito Viscra
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
Kalito Viscra
 
04게임의뼈대세우기
04게임의뼈대세우기04게임의뼈대세우기
04게임의뼈대세우기
태성 이
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
흥배 최
 
KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요
영욱 오
 
[UNITE2014] 개발과 출시 경험에 대한 이야기
[UNITE2014] 개발과 출시 경험에 대한 이야기[UNITE2014] 개발과 출시 경험에 대한 이야기
[UNITE2014] 개발과 출시 경험에 대한 이야기
형석 서
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
YEONG-CHEON YOU
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발
SeongWan Kim
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
Dong Chan Shin
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
tcaesvk
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
강 민우
 
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012devCAT Studio, NEXON
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
Eunseok Yi
 

Viewers also liked (20)

Easyloggingpp
EasyloggingppEasyloggingpp
Easyloggingpp
 
[Effective Modern C++] Chapter1 - item1
[Effective Modern C++] Chapter1 - item1[Effective Modern C++] Chapter1 - item1
[Effective Modern C++] Chapter1 - item1
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
[Effective Modern C++] Chapter1 - item2
[Effective Modern C++] Chapter1 - item2[Effective Modern C++] Chapter1 - item2
[Effective Modern C++] Chapter1 - item2
 
Engines, Tools, and Scripts
Engines, Tools, and ScriptsEngines, Tools, and Scripts
Engines, Tools, and Scripts
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
04게임의뼈대세우기
04게임의뼈대세우기04게임의뼈대세우기
04게임의뼈대세우기
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요KGC2015 - 이 게임을 만든 사람들은 누구인가요
KGC2015 - 이 게임을 만든 사람들은 누구인가요
 
[UNITE2014] 개발과 출시 경험에 대한 이야기
[UNITE2014] 개발과 출시 경험에 대한 이야기[UNITE2014] 개발과 출시 경험에 대한 이야기
[UNITE2014] 개발과 출시 경험에 대한 이야기
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발SPH 기법을 이용한 2D 물 물리 엔진 개발
SPH 기법을 이용한 2D 물 물리 엔진 개발
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
김기용, 영화 속 액션 연출가와 애니메이터, NDC2012
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 2부
 

Similar to C#으로 게임 엔진 만들기(3)

Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
YEONG-CHEON YOU
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2
YEONG-CHEON YOU
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
YEONG-CHEON YOU
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
Bongseok Cho
 
[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics
Chris Ohk
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
SeongWan Kim
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 dMinGeun Park
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
khuhacker
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
Hwan Min
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
Brandon Chung
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdkMinchul Jung
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
SeongWan Kim
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2MinGeun Park
 
2D games with iOS or Corona
2D games with iOS or Corona2D games with iOS or Corona
2D games with iOS or Corona
EungShik (Henry) Kim
 
Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Yongho Ji
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
YEONG-CHEON YOU
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview문익 장
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
funmeate
 

Similar to C#으로 게임 엔진 만들기(3) (20)

Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
 
Mineral
MineralMineral
Mineral
 
[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics[9XD] Introduction to Computer Graphics
[9XD] Introduction to Computer Graphics
 
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)Cocos2d x v3.0 무엇이 달라졌나? (20140426)
Cocos2d x v3.0 무엇이 달라졌나? (20140426)
 
[0602 박민근] direct2 d
[0602 박민근] direct2 d[0602 박민근] direct2 d
[0602 박민근] direct2 d
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdk
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
 
[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2[박민근] 3 d렌더링 옵티마이징_2
[박민근] 3 d렌더링 옵티마이징_2
 
2D games with iOS or Corona
2D games with iOS or Corona2D games with iOS or Corona
2D games with iOS or Corona
 
Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발Flash Player 11과 AIR 3 환경에서 3D 개발
Flash Player 11과 AIR 3 환경에서 3D 개발
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
 
Direct3d overview
Direct3d overviewDirect3d overview
Direct3d overview
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 

C#으로 게임 엔진 만들기(3)

  • 1. C#으로 게임 엔진 만들기 (3) 김지환 NHN NEXT
  • 2. 목표 • 지형 ( Grid ) 그리기
  • 3. DRAW GRID • 이제 점점 코드가 많아지고 중복되는 부분 또한 많아지니 미리 프로젝트를 다운로드 받으세요. • 중요한 부분에 대해서만 설명하도록 하겠습니다. 사용했던 프로젝트 https://github.com/jihwankim/CS_PPT
  • 4. DRAW GRID • 오늘의 결과물입니다. 개수와 크기를 정해서 격자를 그리고 화면에 렌더합니다.
  • 5. DRAW GRID • Core Class의 구조입니다. DirectX Class C++ CLI Wrapped Core Class Init BeginScene EndScene CleanUp SetCamera GetDevice D3D를 초기화합니다. Render Begin Draw End 할당된 리소스를 해제합니다. 시점을 설정합니다.. 생성된 Device의 포인터를 반환.
  • 6. DRAW GRID • Ground Class는 격자 ( Grid )를 그려주는 클래스입니다. CGround Class C++ CLI Wrapped Ground Class Create OnRender OnRelease Core Device에 Ground를 생성 Ground Render 할당된 메모리를 해제합니다.
  • 7. DRAW GRID • 메인 코드입니다. ( C# ) • 이전과 달라진 점은 Core의 Render부분이 DrawScene, EndScene으로 분리되었습니다. 그리고 Ground 클래스가 새로 생겼습니다.
  • 8. DRAW GRID • Ground Class 입니다. ( C++ ) • Create 메소드를 보면 DirectX를 초기화 할 때 생성한 Device를 인자로 받아야 합니다. 이 Device정보를 가지고 Vertex Buffer, Index Buffer 등을 생성합니다. 그 외에 열, 행의 개수나 격자의 크기를 받습니다. Ground Class ( 출처 : http://nowcampus.tistory.com/entry/10 )
  • 9. DRAW GRID CLI로 래핑한 Ground 클래스입니다. Ground는 초기화한 Device 정보가 필요합니다. 그래서 Core의 GetDevice()를 통해 그 정보를 받아야 하기 때문 에 매개 변수로 Core를 전달해 줘야 합니다. 여기서 CLI 문법이 몇 개 나오는데 알아보도록 하겠습니다.
  • 10. DRAW GRID CLICore::Core ^core CLI에서 관리 클래스(ref) 는 복사 생성자를 가지지 못합니다. 그래서 매개 변수로 클래스를 넘겨주지 못합니다. 그러므로 인자로 Reference를 넘겨주어야 하는데 그 때 사용하는 키워드가 ^ 입니다. ^는 C++의 *과 비슷한 용도이며 Handle이라 부릅니다. 그래서 클래스를 넘겨줄 때, 복사 생성자를 사용할 수 없으므로 핸들을 참조하도록 ^ 키워드를 사용하는 것입니다.
  • 11. Ground Object를 이용해 기본적인 땅을 그려봤습니다. 다음 PPT엔 평지에 높이맵 ( Height map )을 적용하고 카메라 조작에 대해 설명하겠습니다. 사용했던 프로젝트 https://github.com/jihwankim/CS_PPT DRAW GRID
  • 12. END