Windows Phone 8에서의 게임개발의 어려움(어쩌면 개인적인 불만)

  • 게임을 만들땐 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 넘어가도 분을 기다려야한다. 문제는 코드를 한줄만 고쳐도 컴파일만 다시 하는게 아니라 리소스 파일 패키징까지 다시 한다. 일반적인 앱에선 문제가 되지 않지만 게임개발에선 치명적이다.

 


답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중