- 게임을 만들땐 C/C++ 네이티브코드가 필수인데 C/C++코드에 대한 지원이 부실하다.
- 앱 성능 모니터링 도구도 C++은 지원하지 않는다.
- Visutal Studio에서 프로파일링을 할 수 있지만 DirectX C++앱에선 함수 호출 그래프를 보여주는게 전부이다. 메모리사용량이나 DirectX 오브젝트의 Leak이나 사용량등은 전혀 나오지 않는다.
- 폰디바이스의 caps얻어오는것 조차도 C++에선 불가능.
- WinRT에선 C++로 잘 지원되고 있는 UI가 아닌 WinRT API들도 윈폰의 WinPRT에선 불가능. Windows::Storage::KnownFolders::MusicLibrary등..
- XAML U도 C++로는 사용 불가능. WinRT에선 DirectX Interop예제등을 보면 다양한 방법으로 C++코드를 사용해서 XAML UI와 DirectX를 연동하는 것이 가능하다. 그러나 WinPRT에선 불가능. 폰트출력 텍스트 입력 모두 프로그래머가 따로 구현해줘야 한다. iOS에선 별 노력 없이 OpenGL ES 버퍼 위에 COCOA UI를 출력할 수 있다.
- 게임에서 C/C++이 꼭 필요한 이유는 성능상의 문제도 있지만 무엇보다 기존에 작성한 코드들이 C/C++기반이라는 것이 큰 이유이다. iOS나 안드로이드 포팅할때는 코드를 많이 안고쳐도 되는데 윈폰으로 포팅하려면 다시 짜야하는것이다.
- DirectX 11의 지원이 불완전하다.
- 다른건 몰라도 DirectWrite와 Direct2D는 지원되어야한다. 특히 폰트출력을 위해선 꼭 필요하다. 특히 텍스트가 계속 변경될 수 있는 온라인 게임에선 더더욱 그러하다. 폰트 렌덜링은 Windows Desktop의 경우 [GDI에 텍스트 출력 -> DIB변환 -> Texture] 로 변환하는 방식으로 처리했고 Windows Store App의 경우 [DirectWrite -> Direct2D TargetBuffer -> Texture] 로 변환해서 처리할 수 있다. 그러나 윈폰에선 방법이 없다. CodePlex에서 오픈소스로 진행되고 있는 DirectXTK 라이브러리에서 비트맵폰트 라이브러리를 지원하지만 한글등 문자가 다이나믹하게 조합되는 문자체계에는 사용할 수 없다.
- 패키징에 너무 많은 시간이 걸린다.
- 게임 리소스를 패키지 안에서 읽으려면 프로퍼티에서 Content로 설정해주게 된다. 이렇게 하면 빌드시에 xap파일에 content로 설정된 파일들을 압축해서 같이 포함시킨다. 게임 특성상 리소스 파일의 크고 많기 마련인데 이 xap패키징 시간이 너무 오래 걸린다. 정말 오래 걸린다. MS입장에선 모바일이라 리소스가 크기 않다고 생각했을지 모르겠다. 리소스 파일들 합계가 150MB만 넘어가도 몇 분을 기다려야한다. 문제는 코드를 한줄만 고쳐도 컴파일만 다시 하는게 아니라 리소스 파일 패키징까지 다시 한다. 일반적인 앱에선 별 문제가 되지 않지만 게임개발에선 치명적이다.