Destkop Bridge앱에서 AppData/Local 폴더 위치 얻기

게임을 실행하면 자동생성되는 부수적인 파일들이 있다. 게임의 옵션을 저장한 설정파일, shader 캐시 파일, 크래시 덤프 파일등… Windows 7시절 까지도 많은 게임들이 게임의 exe가 있는 폴더에 그대로 저장했다. 물론 이는 MS의 권고사항이 아니다. MS의 권고사항은 이렇게 폴더를 만들고 My Application폴더에 저장하는 것이다. C:\Users\{user id}\AppData\Local\{My Application} Windows 8부터는 이 권고사항이 사실상 강제되었다. 사용자가 Administrator 권한의 계정이라 해도(사실은 … More Destkop Bridge앱에서 AppData/Local 폴더 위치 얻기

Surface Book에서 60프레임 락 해결방법

이전 포스팅 참고. https://megayuchi.com/2018/03/29/surface-book%ec%97%90%ec%84%9c-%eb%82%98%ed%83%80%eb%82%98%eb%8a%94-60fps-%ec%a0%9c%ed%95%9c-%ed%98%84%ec%83%81/ 이 빌어먹을 현상이 dGPU + 내장 GPU 구성을 가지는 다른 노트북에선 이 현상이 발생하지 않는다. 적어도 내가 테스트한 바로는 오직 서피스북에서만 발생했다. 하여간 엊그제 트위터 타임라인에 DX12개발자 계정이 BLT대신 FLIP방식을 사용하라는 문서를 공유했다. 혹시나 해서 읽어보다가 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING옵션을 처음 알게 됐다. 오늘 SwapChain만들때 DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING값을 넣어보니 서피스북에서 60프레임 락이 드디어 풀리는걸 확인했다. 이 … More Surface Book에서 60프레임 락 해결방법

win32 + C++/CX프로젝트에서 ConformanceMode때문에 생기는 문제

https://blogs.msdn.microsoft.com/vcblog/2017/11/15/msvc-conformance-improvements-in-visual-studio-2017-version-15-5/ Visual Studio 2017 15.5로 업데이트 하면 ConformanceMode란 놈을 디폴트로 켜버린다. C++ 표준을 준수하게 하는 모드라고 한다.(니미 난 내 제품 만드는게 중요한데 C++표준이 알게 뭐냐. 사실상 게임업계에선 MSVC가 표준이지.) 이전에 만든 프로젝트라면 상관없지만 새로 만드는 프로젝트는 ConformanceMode가 켜지게 된다. pure UWP 프로젝트는 아직 테스트 안해봤지만 Desktop App에서 C++/CX를 이용해서 UWP API를 호출하는 경우 문제가 된다. … More win32 + C++/CX프로젝트에서 ConformanceMode때문에 생기는 문제

Game Dev – Voxel Horizon 최근까지 진행상황.

Voxel Horizon 최근까지 진행상황.   pure UWP버전 / Desktop Bridge 버전을 똑같은 기능 수준으로 동시 진행중. 게임 컨트롤러만으로 로그인,캐릭터 생성, 기본 플레이 가능. XBOX ONE에서 플레이 가능. 아직은 Windows Phone에서도 플레이 가능. MS Live Account로 로그인 가능. 최소한의 꼭 필요한 UI는 일단 다 맞춰넣었다. 두가지 버전 모두 AppX로 패키징 후 Windows App Certification Kit 테스트 … More Game Dev – Voxel Horizon 최근까지 진행상황.

Desktop App + UWP App + UWP App Service를 이용한 MS live account 인증

Desktop App + UWP App + UWP App Service를 이용해서 기본적인 MS Account 로그인을 구현했다. 이번 프로젝트에선 회원가입을 받지 않을 생각이다. 회원 가입용 웹사이트도 만들지 않는다. 이전에는 두 가지 방식을 사용했다. 웹사이트에서 회원가입을 받으면 웹사이트에서 Game DB에 연결하여 계정 생성 steam로그인일 경우 클라이언트에서 steam API를 통해 steam id를 얻는다. 게임서버로 steam id를 전송하고 게임서버는 서버용 … More Desktop App + UWP App + UWP App Service를 이용한 MS live account 인증

Windows Application Packaging Project를 이용해서 만든 Destktop Bridge app에서 UWP App과 interop하기.

최근 Visual Studio 15.4.1에 Windows Application Packaging Project 템플릿이 추가됐다. 이 템플릿을 이용하면 손쉽게 데스크탑 어플리케이션을 AppX로 패키징할 수 있다. 그 방법이 너무나 쉬우므로 자세한 설명은 달지 않는다. 링크 참조. https://blogs.windows.com/buildingapps/2017/10/18/visual-studio-2017-update-4-makes-easy-modernize-desktop-application-make-store-ready/ 그런데 github의 MS샘플도 그렇고 어디에도 이 템플릿을 사용했을때 uwp app과 interop하는 예제는 없다. 내가 원하는 샘플과 자료는 아래 링크의 내용이다. https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extend 그런데 빌어먹을….이건 VS2017에 … More Windows Application Packaging Project를 이용해서 만든 Destktop Bridge app에서 UWP App과 interop하기.

Game Dev – Voxel Horizon 현재까지 진행상황

Voxel Horizon 프로젝트 현재까지 구현된 기능들. 구성요소 Game Server (C++, win32) Certification Server (C++ , win32) MSSQL Client (C/C++ , win32/UWP , DirectX11/12) 구현된 기능목록  기본적인 지형편집 가능. 복셀 오브젝트 생성 복셀 오브젝트 디테일 조정 1×1 – 8×8까지 복셀 추가 복셀 삭제 복셀 컬러 변경 실시간 라이트 갱신 CPU를 이용한 실시간 라이트맵 생성 복셀의 삭제/추가에 … More Game Dev – Voxel Horizon 현재까지 진행상황

UWP with C++로 Battery 상태 얻어오기

갑자기 필요해서 UWP, 정확히는 내 윈폰에서 배터리 상태를 얻어올 필요가 생겨서 급히 찾아봤다. Windows::Devices::Power 네임스페이스의 API를 사용하면 된다는 정보는 금방 찾았지만 C++로 구현하는 자료는 어디에도 없다. 아무리 뒤져봐도 없다. C#이라면 이런 식으로 간단하게 구현할 수 있다. 이 스타일 그대로 C++로 바꿔서 코딩해보면 컴파일에 실패한다. Battery^ 객체를 직접 억세스하는건 불가능한것 같다. 그 다음 시도. 아래와같은 방법으로 … More UWP with C++로 Battery 상태 얻어오기

명시적 종료의 필요성 #2

네이티브 코드 체계에선 메모리(일반적인 메모리 , COM객체,Windows HANDLE 등등) 누수 탐지 기능이 반드시 필요하다. 컴파일 타임에서 논리적으로 아무리 완벽한 체계를 제공한다고 해도 말이다. 최근 MS는 COM을 사용하는 예제에서 CComPtr 사용을 적극 권장하고 있다. C++/CX에선 명시적으로 CComPtr을 사용할 필요없이 ^객체가 스마트포인터를 내장하고 있고 UWP프로젝트가 아닌 경우, 예를 들어 DX12샘플같은 경우 CComPtr을 사용하고 있다. CComPtr뿐 아니라 컴파일러 … More 명시적 종료의 필요성 #2

Hololens개발 메모 #11 – Resource leak 체크

1. UWP on Hololens에서의 resource leak 체크 UWP App은 명시적인 종료가 없으므로 리소스에 대한 leak체크가 쉽지 않다. 그래서 suspend이벤트나 아니면 임의의 버튼같은걸 만들어서 가상의 종료처리를 하고 이 시점에 leak체크를 하도록 하고 있다. Hololens버전은 UWP앱이지만 일반적인 DirectX on UWP앱과는 차이가 있다. swapchain을 사용하지 않는다. 즉 일반적인 UWP앱은 swapChainPanel이라는 XAML 객체를 가지고 있고 이 녀석과 D3D가 연결된다. … More Hololens개발 메모 #11 – Resource leak 체크