프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
Windows 10의 UWP 앱을 개발하면 모든 Windows 10 디바이스에서 앱을 작동할 수 있습니다.
이 UWP 앱을 C++로 개발할 수 있습니다. C++로 앱을 개발하면 크로스 플랫폼 지원의 유리함, 기존 코드의 재활용, 성능향상 등의 이점이 있습니다. 본 세션에서는 몇 가지 예를 들어 C++로 UWP 앱을 개발하는 방법을 소개하며 특히 win32와 C++을 사용하던 개발자가 쉽게 UWP 앱 개발에 적응할 수 있도록 돕습니다.
프로그래밍 언어의 F1머신 C++을 타고 Windows 10 UWP 앱 개발의 세계로~YEONG-CHEON YOU
Windows 10의 UWP 앱을 개발하면 모든 Windows 10 디바이스에서 앱을 작동할 수 있습니다.
이 UWP 앱을 C++로 개발할 수 있습니다. C++로 앱을 개발하면 크로스 플랫폼 지원의 유리함, 기존 코드의 재활용, 성능향상 등의 이점이 있습니다. 본 세션에서는 몇 가지 예를 들어 C++로 UWP 앱을 개발하는 방법을 소개하며 특히 win32와 C++을 사용하던 개발자가 쉽게 UWP 앱 개발에 적응할 수 있도록 돕습니다.
한 학기동안 개인적으로 공부한 내용을 토대로 수업시간에 발표한 내용입니다.
혹시라도 올바르지 않은 내용이 있다면 코멘트로 알려주시면 감사하겠습니다 :)
this was announced at my presentation class and it's based on study result during a semester.
----------------------------------------------
청강문화산업대학교 게임스쿨
201713058 권필성
Chungkang College of Cultural Industries, Game School
201713058 Kwon Pil Seong AKA. ODESSA
CyberConnect2에서는 2013년부터 DirectX11세대용 멀티플랫폼엔진 개발을 시작하였으며, 제작 시 발생하였던 문제점을 DirectX9와의 차이점을 바탕으로 공유하고자 합니다.
이 세션은 DirectX11의 개발이 처음이거나 관심 있으신 분을 대상으로 합니다. Tessellation 이나 OIT와 같은 최신기술은 다루지 않으므로 주의하시기 바랍니다.
[IGC 2017] 오토데스크 박준석 - 3ds Max 2018과 Shotgun을 이용한 게임 제작 Pipeline 소개강 민우
3ds Max 2018의 새로운 기능 소개 및 3ds Max 2018의 기본 랜더로 탑재된 Arnold Render를 이용한 Game Asset 제작하는 방법에 대해 소개합니다. 그동안 3ds Max에서 사용되어온 방법 이외에 새로운 기능을 이용한 Game Asset 제작 과정으로 보다 효율적인 Workflow에 대해서 설명합니다. 그리고, 3ds Max에 포함된 Shotgun Plug-in을 사용해 실제 게임 제작공정과 작업 시간효율 극대화를 위한 방법 및 파이프라인 관리 툴인 Shotgun의 Game Pipeline 적용을 위한 사용법에 대해 설명합니다.
한 학기동안 개인적으로 공부한 내용을 토대로 수업시간에 발표한 내용입니다.
혹시라도 올바르지 않은 내용이 있다면 코멘트로 알려주시면 감사하겠습니다 :)
this was announced at my presentation class and it's based on study result during a semester.
----------------------------------------------
청강문화산업대학교 게임스쿨
201713058 권필성
Chungkang College of Cultural Industries, Game School
201713058 Kwon Pil Seong AKA. ODESSA
CyberConnect2에서는 2013년부터 DirectX11세대용 멀티플랫폼엔진 개발을 시작하였으며, 제작 시 발생하였던 문제점을 DirectX9와의 차이점을 바탕으로 공유하고자 합니다.
이 세션은 DirectX11의 개발이 처음이거나 관심 있으신 분을 대상으로 합니다. Tessellation 이나 OIT와 같은 최신기술은 다루지 않으므로 주의하시기 바랍니다.
[IGC 2017] 오토데스크 박준석 - 3ds Max 2018과 Shotgun을 이용한 게임 제작 Pipeline 소개강 민우
3ds Max 2018의 새로운 기능 소개 및 3ds Max 2018의 기본 랜더로 탑재된 Arnold Render를 이용한 Game Asset 제작하는 방법에 대해 소개합니다. 그동안 3ds Max에서 사용되어온 방법 이외에 새로운 기능을 이용한 Game Asset 제작 과정으로 보다 효율적인 Workflow에 대해서 설명합니다. 그리고, 3ds Max에 포함된 Shotgun Plug-in을 사용해 실제 게임 제작공정과 작업 시간효율 극대화를 위한 방법 및 파이프라인 관리 툴인 Shotgun의 Game Pipeline 적용을 위한 사용법에 대해 설명합니다.
스마트스터디의 재택근무 보고서 입니다.
메르스의 빠른 전파로 인해 2015년 6월 3일부터 전사 재택근무를 시행하고 있고, 그 리포트를 공유드립니다.
직원들의 생생한 느낌을 전달하기 위해 가급적 그대로 옮겨 적었으며, 재택근무를 검토하고 있는 다른 회사에서도 참고가 되길 바랍니다.
각자 업무방식 실험을 통해,
일을 어떻게 하면 되겠다'라는 힌트를 발견했고, 왜 회사에 나와야 하는지에 대해서도 스스로 깨달은 계기가 되었습니다.
스마트스터디에는 프로젝트 성공을 위해, 업무방식을 선택할 자유가 있습니다.
현재 전 분야 인재 채용중입니다.
http://www.smartstudy.co.kr/withyou/
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
2017년 4월 출시된 최신 RAD스튜디오 10.2 도쿄 버전의 최신 기술들을 정리한 문서입니다.
개발 성능 향상, 최신 OS지원, 새로운 개발 영역(클라우드, IoT 등)으로의 손쉬운 확장 등.
개발자들에게 복잡할 수 있는 기술들을 간편하게 적용할 수 있는 RAD스튜디오의 기술과 활용팁 입니다.
5. Windows Desktop
• 모든 x86용 Windows버전
• Windows 2000/XP/2003 Server -> NT 5.x
• Windows Vista/7/8/8.1 -> NT 6.x
• Win32 API , .NET 사용
• DirectX, OpenGL 사용
• 흔히 말하는 PC게임은 모두 Windows Desktop용 게임.
• 게임 프로젝트라면 일반적으로 Win32 + DirectX + C++
7. Windows 8 or Later
• Windows 8/8.1 , Windows Server 2012/2012R2
• 기존 Windows API 그대로 지원 (Win32, WPF등)
• 통칭 WinRT(Windows Runtime)이라 부르는 API탑재.
• Windows 8/8.1/Windows RT용 앱은 공식적으로 Windows
Store App으로 칭함.
• C++ / Java Script/ C#으로 개발 가능.
• Windows Store 를 통해서 배포.
8. Windows RT
• Windows 8/8.1의 ARM 버전.
• Windows RT는 내부적으로 Win32(MFC포함)와 .NET을 완전히
지원하지만 정책적으로 외부에서의 개발을 차단. 컴파일만 다시
하면 기존 Windows Desktop App도 돌아감.
• 공식적으로는 WinRT App앱만 개발가능
• C++ / Java Script/ C#으로 개발 가능.
• Windows Store 를 통해서 배포.
• 최근 사실상 사망선고가 내려짐.(100만원 주고 산 내 Surface
RT는…T_T)
10. Windows Phone 8.1
• 흑역사였던 WinCE를 버리고 NT Kernel로 태어난 MS의 스마트
폰 OS.
• WinRT(Windows Runtime) API를 사용.
• 일부 Win32 API사용 가능.
• DirectX 사용 가능 (C++로만 가능).
• C#,C++,Java Script로 개발.
• Windows Phone Store로 배포.
12. Platform CPU OS API Tool Language Debugging Type
Windows Desktop x86,x64 Windows 95 ~ Win32,
.NET,
DirectX 9,
DirectX 11
Visual Studio(All) C/C++
C#
Local ,
Remote-LAN
Windows Store
App
x86,x64,
ARM
Windows RT,
Windows 8 ~
Windows Server
2012~
WinRT
DirectX 11
Visual Studio 2012/2013 C++/CX ,
C# ,
Java Script
Local ,
Hyper-V Simulator ,
Remote-LAN
Windows Phone
8.1
ARM Windows Phone 8.1 WinRT,
Winsock,
DirectX 11
Visual Studio 2012/2013 C++/CX ,
C#
Hyper-V Emulator ,
Remote-
USB Cable
iOS ARM iOS COCOA
Touch,
OpenGL ES
XCode Objective C ,
C/C++
Remote-
USB Cable
개발방식에서의 차이
13. Windows Store App 개발의 간략소개
• Win32API는 대부분 사용하지 못한다.
• WinRT API는 C# , C++ , Java Script를 지원한다.
• DirectX는 C++로만 사용할 수 있다.
• UI체계 XAML UI라고 하는 XAML스크립트를 사용한다.
14. Windows Store App 개발의 간략소개
• XAML UI와 DirectX를 조합해서 사용하는 것이 가능하다.
• 웬만한 I/O처리는 죄다 비동기. Lambda함수를 적극 활용.
• C/C++ Runtime Library는 대체로 사용 가능하나 I/O함수는 제한
적, Process,Thread쪽 함수들 사용 불가.
• HTTP클라이언트 기반의 앱이라면 매우 쉽게 만들 수 있
다.(Youtube앱이 난립하는 이유)
15. • WinPRT를 사용.기본적으로는 WinRT용 코드를 거의 그대로 사용
할 수 있다.
• WinRT의 제약사항 + WinPRT의 제약사항을 가지고 있다.
• XAML UI는 C#만을 지원한다.C++ 사용 불가.
• XAML UI를 C#으로 작성하고 DirectX코드를 C++로 작성하는 방
법이 있는데 굉장히 꿀꿀하다. MS에서도 별로 권장하진 않는것
같다.
• 사실상 게임 개발은 C++, 일반앱은 C#으로 작성해야한다.
Windows Phone 8 개발의 간략소개
16. • WinPRT를 사용.기본적으로는 WinRT용 코드를 거의 그대로 사용
할 수 있다.
• WinRT의 제약사항 + WinPRT의 제약사항을 가지고 있다.
• XAML UI는 C#만을 지원한다.C++ 사용 불가.
• XAML UI를 C#으로 작성하고 DirectX코드를 C++로 작성하는 방
법이 있는데 굉장히 꿀꿀하다. MS에서도 별로 권장하진 않는것
같다.
• 사실상 게임 개발은 C++, 일반앱은 C#으로 작성해야한다.
Windows Phone 8 개발의 간략소개
이제 필요없음!!!
17. • Windows 8.1과 Windows Phone 8.1은 API가 WinRT로 통합됨
• Windows Phone 8.1의 WinRT는 Windows 8.1의 WinRT를 95%이
상 지원함.
• 따라서 동일 코드로 Windows Store App과 Windows Phone을 함
께 지원하는것이 가능함.
• XAML UI를 제외하고 대부분의 코드를 공유할 수 있다.
• 정확히는….Windows Store앱 개발이 베이스가 되고 Windows
Phone으로의 포팅이 쉬워짐.
Universal App
19. Universal App 의 허와 실
• Universal App이라도 XAML UI는 따로 만들어야 한다.
• 일반앱의 경우 XAML UI개발이 전체 작업량의 절반 이상인 경
우도 많다. -> 메리트 없다-_-;
• 게임은 UI를 게임 자체적으로 제공한다.
• XAML UI를 거의 사용하지 않는다. -> Universal App으로 개발
하는 것이 이득.
• New 프로젝트 에서 유니버셜앱을 선택하는것만으로 만사 OK!
21. Windows Store App을 위한 소스 및
리소스 파일을 추가
Windows Phone App을 위한 소스 및
리소스 파일을 추가
공용으로 사용할 소스 및 리소스 파
일을 추가
22. WinRT + DirectX로 게임개발
• 자체 엔진 개발과 같은 얘기.
• 상용엔진 있는데 뭣하러? -> 오늘의 주제가 아닙니다.
• C++/CX로 개발. DirectX는 C++로만 제어 가능. C#으로 불가능.
• DirectX 11로 개발. DirectX 9랑 많이 다릅니다.
• OpenGL 사용 불가.
23. WinRT 개발의 장애물
• C++/CX ->들어는 보셨나…?
• 대부분의 Win32 API 사용불가.
• C/C++ Runtime Library의 반쪽 지원.
• API는 DX11이지만 HW는 DX11은 지원 못하는 경우가 대부분.
• 폴더별 억세스 제한.
24. C++/CX
• C++11의 일부기능을 추가한 MS의 C++확장
• COM기반. 그러나 AddRef(),Release()는 사용하지 않는다. 컴파일러가 알아
서 넣어줌.
• 처음엔 굉장히 부담스럽지만 익숙해지면 참을만함.
• 게임 코드 및 엔진 코드에선 사용할 일 없음.
• 패스워드 입력, 텍스트 표시 등 XAML UI와 게임화면의 상호작용을 위해서
사용
• 터치입력, 네트워크 처리 정도에 사용.
26. DirectX on WinRT
• DirectX 11사용
• 대부분의 ARM 디바이스들은 Feature Level 9.x만 지원.
• 런타임에 Shader컴파일 불가. 컴파일된 바이너리만 사용가능.
• D3DX사용 불가. 대신 DirectXTex 사용
(http://directxtex.codeplex.com/)
• SwapChain생성부가 Desktop버전과 다름. 그 외에는 거의 동일.
• Xinput사용가능->XBOX360 Controller도 사용 가능.
27. DirectX on WinRT @ Windows Phone
• WinRT버전의 모든 제약사항을 포함
• Windows Phone 8에는 D2D와 DWRITE사용불가, 8.1에선 사용
가능!!!!
• Xinput사용 불가 -> Hardware Controller지원 안됨.
• 그 외에는 Windows 8.1과 동일
28. Shader
• HLSL사용
• 실시간 컴파일 불가. 컴파일된 바이너리만 사용가능.
• SM2.0을 사용해도 되지만 코드호환성을 위해 4.0 level 9 사용을 권
장.
• FXC로 컴파일시 vs_4_0_level_9옵션을 준다.
• Visual Studio에서 컴파일 가능하지만 다양한 옵션을 위해서는 옵션
조합에 따라 개별 바이너리들로 컴파일해서 사용하는게 좋다.
29. Windows Phone 에서 Shader사용 예
1. Windows Store App x86/x64 debug버전으로부터 런타임시
Shader컴파일 -> Shader 캐시파일 생성.
2. Shader 캐시파일 -> Windows Phone 프로젝트에 content로
추가.
3. Windows Phone 렌더러에서는 실시간 컴파일 하지 않고
shader cache파일로부터 shader생성.
30. Windows Phone 에서의 D3D성능
• 안드로이드만큼 파편화가 심하지는 않다. Qualcom의 AP사용.
• GPU는 대체로 adreno 225 - 330.
• 속도는 생각보다 빠른 편.
• .DDS파일 그대로 사용할 수 있다.
• 2048*2048 텍스쳐도 읽어들인다.
31. Network Programming on WinRT
• WinRT에서는 winsock사용 불가(-_-)
• Windows Phone 에서는 winsock사용 가능
• 어차피 WinRT로 개발할거니까 winsock안쓴다.-_-;
• Windows::Networking::Sockets::StreamSocket를 사용한다.
32. Network Programming on WinRT
• 모든 I/O는 비동기 처리
SOCKET -> Windows::Networking::Sockets::StreamSocket
Send -> Windows::Storage::Streams::DataWriter
Recv -> Windows::Storage::Stremas::DataReader
39. 저장공간
• 앱이 인스톨된 폴더에는 쓰기 불가.
• Windows Store App과 Windows Phone 모두 Local Storage라
고 하는 영역을 제공. 쓰기는 이 곳에.
-> C:usersAppDataLocalPackagesAppIDLocalState
• 지정된 폴더와 App폴더 바깥의 파일을 억세스하려면 FilePicker
를 사용해야함.(자막 자동으로 읽어주는 동영상 플레이어가 없
는 이유)
41. Debugging
• Crt Heap함수들은 모두 정상 작동한다.
• App종료 개념이 없다. 따라서 Heap Corruption과 Memory
Leak 체크를 해야할 타이밍이 모호하다.
• 임의로 종료 시점을 정의하자.
• Debugger가 붙어있는 경우 Suspend 이벤트를 종료 이벤트로
간주하기로 하자.
• 여기서 Cleanup을 수행하고 Memory Leak체크 및 Heap
Corruption체크를 한다.
44. ^타입 COM객체의 Reference Count확인
• ^타입은 내부적으로 Iinspectable : IUnknown객체이다.
• 아래처럼 IUnknown포인터를 얻을 수 있다
• IUnknown을 얻으면 Reference Count확인 가능
45. D3D Resource Leak체크
• D3DDevice11객체의 Reference Count가 0이 되는지 확인. 0이 아
니면 해제되지 않은 리소스가 존재함.
46. 개발 TIP
• Windows Desktop 버전으로 먼저 개발한다. 그 다음 WinRT로
포팅
• WinRT는 Current Path라는 개념 자체가 없으므로 Relative Path
를 저장할 자료구조를 만드는게 좋다. (./ , ../ 등…)
• 지원되지 않는 Win32용함수와 데이터 타입의 경우 똑같은 이름
의 함수와 데이터타입을 정의해둔다.
48. 점진적인 포팅
• Windows Desktop DX9 & DX11에서 시작
• Win32API는 대부분 걷어내야함.
• 굉장히 먼 길 같지만 Desktop DX9-> DX11로 포팅하는것만으
로도 절반은 완료. 절반 가는데 얼마 걸리려나…
• Window Desktop -> WinRT까지 도달했다면 iOS포팅도 어렵지
않음.
49. Windows Desktop
DX9
Windows Desktop
DX11
Win Store App
DX11
Windows Phone
DX11
iOS & Android
• DX9 API -> DX11 API
• SM2.0 -> SM4.0/5.0
• SwapChain코드 수정
• Win32API제거
• Shader Pre-Compile
• Message처리 코드 수정
• 입력장치 맞춰서 코드 수정
• DirectX -> OpenGL ES
• Message처리 수정
• .DDS textures-> .PVR, .ETC textures
• DirectWrite Font -> COCOA UI Font
50. Windows Desktop -> Windows Store
App & Windows Phone
• 개발했던 PC용 MMORPG를 Desktop DX9 -> Desktop DX11 ->
Windows Store App & Windows Phone으로 포팅했음.
• 네트워크 연동한 플레이 가능.
• http://youtu.be/iZkxorgAxcg