SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Creating Game Tool
With Project Anarchy
- Vision Engine을 이용한 Game Tool 만들기 Part 1-
분 류 NHN NEXT 1기 실전프로젝트 산출물
실습 업체 블루홀 스튜디오
프로젝트 팀명 그랜드부다페스트(문진상/신동찬)
작성자 문진상
Created Date 2014-11-15
준비물
• Project Anarchy
• Visual Studio – 2010 + SP1
• Visual Studio 2010이 아니면 컴파일이 불가능하다
• 서비스 팩 1 이 없으면 LNK1123 에러가 발생한다
• 2013에서도 2010이 설치되어 있을 때 컴파일 옵션을 2010으로 두면
사용할 수 있지만 2013 한글판에서만 된다
준비 – Project Anarchy
http://www.projectanarchy.com/ko
다운로드 페이지로 이동
준비 – Project Anarchy
http://www.projectanarchy.com/ko/download
운영체제에 맞는 프로젝트를 받으면 된다
어차피 Visual Studio로 개발해야 할 것이다
다운로드 받은 파일을 실행해서 설치한다
Wrapper
Tool 기본 구조
• 크게 Client(C++) – Engine Wrapper(CLI) – Tool(C#) 형태
Vision Engine
Client
Tool
Tool 기본 구조
게임 툴
클라이언트
Wrapper
클라이언트는 VAppImpl 클래스를 상속받아 만들어진다.
하지만 VAppImpl은 C#과 호환성이 없다.
따라서 툴에서 사용하기 위해서는 VisionApp_cl를 이용한다.
Tool 기본 구조
C# 툴은 CLI를 참조
Tool 기본 구조
툴을 .NET Framework 4로 설정하는 것이 좋다.
Vision Engine에 미리 만들어져 있는 Managed dll은 모두 .NET Framework 4까지만 지원한다.
혹시 저 dll들을 쓰게 될지도 모르므로 4로 설정한다
CLI 클래스의 property sheet 설정
• 매우 귀찮은 부분이다
• 가장 큰 문제가 발생하는 부분은 Vision Engine 에서 사용하는
함수들의 calling convention이 clr 형식과 맞지 않다는 것이다
CLI 클래스의 property sheet 설정
• msdn 에서
• /Gd, /Gr, /Gv and /Gz are not compatible with /clr:safe or /clr:pure.
• 라고 /clr은 빠져 있기 때문에 /clr로 설정하면 될 것 같지만
• … 잘 안 된다
• 이 부분은 이미 설정이 완료된 property sheet를 가져다 쓰는
것을 권장
CLI 클래스의 property sheet 설정
• 참고할 만한 property sheet는 vision engine 프로젝트 안에 들
어있는, 이미 배포되어 검증된 property sheet
AnarchySDKWorkspaceWin32_VS2010_anarchy_DX9_C++
CLI 클래스의 property sheet 설정
• 적절한 Lib 파일의 위치도 정해줘야 하고
• Debug, release lib가 따로 있다
• 헤더 파일을 쉽게 include 할 수 있도록 경로를 추가한다
Tool은 GameEngine을 감싸고 있다
Display
비어있는 Control의 Handle
을 넘겨받아 해당 핸들에
화면을 뿌려준다
Tool은 GameEngine을 감싸고 있다
Wrapper 화면을 표시할 창의 핸들 및 크기를 넘겨받아
VisAppConfig_cl 클래스에 할당하고, 이 클래스로 엔진을 초기화 한다
Tool은 GameEngine을 감싸고 있다
Tool
Tool 에서는 StartEngine 메소드를 불러오면서 차례대로 화면의 핸들, 넓이, 높이를 넘겨주면 된다
위 코드에서는 PictureBox 클래스인 scene_viewer 의 핸들과 크기를 넘겨주고 있다
이 부분
Tool은 GameEngine을 감싸고 있다
앞서 말한 대로 VisionApp_cl
Wrapper
반드시 해 줘야 하는 부분인데
중대한 문제가 있다. 다음 페이지에…
StartEngine() 함수 내부
vForge
Plugin을 로드하려고 하면 이런 메시지가 뜨면서 프로그램이 종료된다.
즉 vForge를 실행한 상태에서만 Vision Engine을 쓸 수 있다는 것. 엔진 정책에 관한 문제라고 한다.
LoadAllEnginePlugin() 함수는 소스코드로 제공되는 것이 아니라서 vForge 실행 요구를 우회하기 힘들다
순순히 vForge를 실행한 다음 툴을 실행하도록 하자
Run()
왼쪽 화면처럼 엔진이 구동되게 하려면?
Vision Engine의 Run() 함수를 매 프레임
호출해주면 된다
Run()
이 함수를 주기적으로 부르면 된다
Vision::GetApplication()->Run(); 함수는
씬을 업데이트하고 화면을 갱신하는 모든 동작을 포함하고 있다.
Wrapper
물론 이렇게 마구 부르면 안 좋습니다.
Run()
• Run() 을 하더라도 카메라, 조명, 오브젝트가 없다면 화면은 검
게 나올 뿐이다.
• Tool 기능을 제대로 하기 위해서는 오브젝트를 생성, 제거하고
위치정보 등을 파일로 만들 수 있어야 한다.
• 그래야 클라이언트에서 읽어서 쓸 수 있다.
• 이 부분은 Part 2 에서 계속…

Weitere ähnliche Inhalte

Was ist angesagt?

Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
Chanwoong Kim
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
noerror
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
changehee lee
 

Was ist angesagt? (20)

DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
유니티, 언리얼4 교육 전문기관 스킬트리랩 소개서
 
Porting direct x 11 desktop game to uwp app
Porting direct x 11 desktop game to uwp appPorting direct x 11 desktop game to uwp app
Porting direct x 11 desktop game to uwp app
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
 
Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
190720 언리얼 서밋 2일차 리뷰
190720 언리얼 서밋 2일차 리뷰190720 언리얼 서밋 2일차 리뷰
190720 언리얼 서밋 2일차 리뷰
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나Unity3D 한국 최초 기술 세미나
Unity3D 한국 최초 기술 세미나
 
Kanzi
KanziKanzi
Kanzi
 
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR
[IGC 2016] 에픽게임스코리아 신광섭 - 언리얼 엔진4, VR과 AR
 
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템[NDC17] Protocol:hyperspace Diver 개발 포스트모템
[NDC17] Protocol:hyperspace Diver 개발 포스트모템
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
[IGC 2017] 넷마블게임즈 한승진 - 게임서비스를 위한 프라이빗 클라우드
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
[KASA] Game Engine???
[KASA] Game Engine???[KASA] Game Engine???
[KASA] Game Engine???
 

Ähnlich wie Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1

[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
ChangKyu Song
 

Ähnlich wie Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1 (20)

Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비App, VR 및 AR Unity 설정 준비
App, VR 및 AR Unity 설정 준비
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
[NDC10] Unity Build 로 빌드타임 반토막내기 - 송창규
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
IBM Bluemix handson lab_DevOps_Target_Deploy_configutation_java_petclinic_v1.0
 
[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
GDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's NoteGDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's Note
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기한양대학교 셔틀시스템 셔틀콕 개발기
한양대학교 셔틀시스템 셔틀콕 개발기
 

Mehr von 진상 문 (9)

[C++ beginner] sizeof()
[C++ beginner] sizeof()[C++ beginner] sizeof()
[C++ beginner] sizeof()
 
Pervasive computing
Pervasive computingPervasive computing
Pervasive computing
 
ABI란 무엇인가요?
ABI란 무엇인가요?ABI란 무엇인가요?
ABI란 무엇인가요?
 
Dll 파일 호출의 2가지 방법
Dll 파일 호출의 2가지 방법Dll 파일 호출의 2가지 방법
Dll 파일 호출의 2가지 방법
 
C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2C# 뉴비를 위한 맛보기 2
C# 뉴비를 위한 맛보기 2
 
C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기
 
무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리무중력 상태에 필요한 기초 물리
무중력 상태에 필요한 기초 물리
 
Easy gameserver
Easy gameserverEasy gameserver
Easy gameserver
 
Halo ce anniversary Postmortem
Halo ce anniversary PostmortemHalo ce anniversary Postmortem
Halo ce anniversary Postmortem
 

Project Anarchy(Vision Engine)으로 게임 툴 만들기! part1

  • 1. Creating Game Tool With Project Anarchy - Vision Engine을 이용한 Game Tool 만들기 Part 1- 분 류 NHN NEXT 1기 실전프로젝트 산출물 실습 업체 블루홀 스튜디오 프로젝트 팀명 그랜드부다페스트(문진상/신동찬) 작성자 문진상 Created Date 2014-11-15
  • 2. 준비물 • Project Anarchy • Visual Studio – 2010 + SP1 • Visual Studio 2010이 아니면 컴파일이 불가능하다 • 서비스 팩 1 이 없으면 LNK1123 에러가 발생한다 • 2013에서도 2010이 설치되어 있을 때 컴파일 옵션을 2010으로 두면 사용할 수 있지만 2013 한글판에서만 된다
  • 3. 준비 – Project Anarchy http://www.projectanarchy.com/ko 다운로드 페이지로 이동
  • 4. 준비 – Project Anarchy http://www.projectanarchy.com/ko/download 운영체제에 맞는 프로젝트를 받으면 된다 어차피 Visual Studio로 개발해야 할 것이다 다운로드 받은 파일을 실행해서 설치한다
  • 5. Wrapper Tool 기본 구조 • 크게 Client(C++) – Engine Wrapper(CLI) – Tool(C#) 형태 Vision Engine Client Tool
  • 6. Tool 기본 구조 게임 툴 클라이언트 Wrapper 클라이언트는 VAppImpl 클래스를 상속받아 만들어진다. 하지만 VAppImpl은 C#과 호환성이 없다. 따라서 툴에서 사용하기 위해서는 VisionApp_cl를 이용한다.
  • 7. Tool 기본 구조 C# 툴은 CLI를 참조
  • 8. Tool 기본 구조 툴을 .NET Framework 4로 설정하는 것이 좋다. Vision Engine에 미리 만들어져 있는 Managed dll은 모두 .NET Framework 4까지만 지원한다. 혹시 저 dll들을 쓰게 될지도 모르므로 4로 설정한다
  • 9. CLI 클래스의 property sheet 설정 • 매우 귀찮은 부분이다 • 가장 큰 문제가 발생하는 부분은 Vision Engine 에서 사용하는 함수들의 calling convention이 clr 형식과 맞지 않다는 것이다
  • 10. CLI 클래스의 property sheet 설정 • msdn 에서 • /Gd, /Gr, /Gv and /Gz are not compatible with /clr:safe or /clr:pure. • 라고 /clr은 빠져 있기 때문에 /clr로 설정하면 될 것 같지만 • … 잘 안 된다 • 이 부분은 이미 설정이 완료된 property sheet를 가져다 쓰는 것을 권장
  • 11. CLI 클래스의 property sheet 설정 • 참고할 만한 property sheet는 vision engine 프로젝트 안에 들 어있는, 이미 배포되어 검증된 property sheet AnarchySDKWorkspaceWin32_VS2010_anarchy_DX9_C++
  • 12. CLI 클래스의 property sheet 설정 • 적절한 Lib 파일의 위치도 정해줘야 하고 • Debug, release lib가 따로 있다 • 헤더 파일을 쉽게 include 할 수 있도록 경로를 추가한다
  • 13. Tool은 GameEngine을 감싸고 있다 Display 비어있는 Control의 Handle 을 넘겨받아 해당 핸들에 화면을 뿌려준다
  • 14. Tool은 GameEngine을 감싸고 있다 Wrapper 화면을 표시할 창의 핸들 및 크기를 넘겨받아 VisAppConfig_cl 클래스에 할당하고, 이 클래스로 엔진을 초기화 한다
  • 15. Tool은 GameEngine을 감싸고 있다 Tool Tool 에서는 StartEngine 메소드를 불러오면서 차례대로 화면의 핸들, 넓이, 높이를 넘겨주면 된다 위 코드에서는 PictureBox 클래스인 scene_viewer 의 핸들과 크기를 넘겨주고 있다 이 부분
  • 16. Tool은 GameEngine을 감싸고 있다 앞서 말한 대로 VisionApp_cl Wrapper 반드시 해 줘야 하는 부분인데 중대한 문제가 있다. 다음 페이지에… StartEngine() 함수 내부
  • 17. vForge Plugin을 로드하려고 하면 이런 메시지가 뜨면서 프로그램이 종료된다. 즉 vForge를 실행한 상태에서만 Vision Engine을 쓸 수 있다는 것. 엔진 정책에 관한 문제라고 한다. LoadAllEnginePlugin() 함수는 소스코드로 제공되는 것이 아니라서 vForge 실행 요구를 우회하기 힘들다 순순히 vForge를 실행한 다음 툴을 실행하도록 하자
  • 18. Run() 왼쪽 화면처럼 엔진이 구동되게 하려면? Vision Engine의 Run() 함수를 매 프레임 호출해주면 된다
  • 19. Run() 이 함수를 주기적으로 부르면 된다 Vision::GetApplication()->Run(); 함수는 씬을 업데이트하고 화면을 갱신하는 모든 동작을 포함하고 있다. Wrapper 물론 이렇게 마구 부르면 안 좋습니다.
  • 20. Run() • Run() 을 하더라도 카메라, 조명, 오브젝트가 없다면 화면은 검 게 나올 뿐이다. • Tool 기능을 제대로 하기 위해서는 오브젝트를 생성, 제거하고 위치정보 등을 파일로 만들 수 있어야 한다. • 그래야 클라이언트에서 읽어서 쓸 수 있다. • 이 부분은 Part 2 에서 계속…