제가 필요해서 만든 OneDrivePlayer가 윈스토어에 올라갔네요.

http://apps.microsoft.com/windows/app/onedriveplayerw81/965df9c1-40cc-4854-8a50-9f24eab0b30f 제가 필요해서 만든 OneDrivePlayer가 윈스토어에 올라갔네요. 노트북이나 태블릿의 SSD가 부족해서 OneDrive에 음악파일을 넣어두고 그걸로 재생했으면 좋겠다는 생각이 들어서 만들었습니다. 드물게 C++/CX 로 작성된 앱입니다. XAML과 C++/CX를 학습할겸 무리해서라도 C++로 작성했습니다. 네트워크가 끊어진 상황에서 다운로드를 시도하면 CPP REST SDK쪽에서 처리할 수 없는 익셉션이 계속 떠서 일단 그 부분은 버그로 남아있습니다. 유니버셜로 윈폰버전도 만들었는데 백그라운드 플레이가 … More 제가 필요해서 만든 OneDrivePlayer가 윈스토어에 올라갔네요.

기적같은 디버깅. 컴파일러 버그? 역시나 그럴리가.

으아…일주일전쯤에 발견해서 날 미치게했던 그 버그를 잡았다. 총 쏠때 캐릭터가 사라졌다가 사격을 멈추면 다시 나타나는 버그. VS2010의 v100컴파일러에서 VS2013의 v120컴파일러로 버전을 올리고 난 후 나타난 버그이고 반복된 테스트로 v120컴파일러로 컴파일한 바이너리에서만 나타는 버그라는 결론을 얻었었다. 릴리즈 풀 옵티마이즈 상태에서만 나온다.마침 VS2013은 Update 2 rc버전이다. 즉 VS2013의 v120컴파일러의 옵티마이저 쪽에 버그가 있다고 생각했다. 일단 그때도 Character.cpp의 … More 기적같은 디버깅. 컴파일러 버그? 역시나 그럴리가.

struct align에 대한 단상

동일한 내용의 정보를 가지는  개념적으로는 똑같은 사이즈인 두개의 구조체가 있다. 64비트에서 컴파일해보면 이 두개의 구조체는 각각 다른 사이즈를 가진다. 물론 #pragma pack(push,1)을 주면 똑같은 사이즈로 컴파일 된다. STRUCT_ALIGNED의 크기는 32바이트고 STRUCT_UNALIGNED의 크기는 40바이트다. STRUCT_UNALIGNED구조체의 경우 1차적으로 패널티를 피하기 위해서 변수별로 padding이 들어간다. 변수마다 억세스 단위만큼의 얼라인을 맞추게 되고 최종적으로 구조체가 배열로 잡히더라도 8바이트에 얼라인 될 수있도록 사이즈가 … More struct align에 대한 단상

초간단 SIMD(Single Instruction Multiple Data)최적화 성능 테스트

충돌처리 엔진 성능을 개선해볼까 하고 테스트를 좀 해봤다. 똑같은 알고리즘을 사용하는 float3 normalize함수를 normal c , SSE Compiler Intrinsic, SSE Assembly Code로 작성해서 100만번 돌린 시간을 비교했다. 일단 짚고 넘어가야할 것은 x64에선 C로만 작성해도 SSE가 무조건 활성화된다. 즉 float연산은 xmm레지스터와 sse명령으로 실행한다. 단 벡터라이즈는 해주지 못한다. addss등 싱글 연산 명령만을 사용한다. 그러니까 엄밀히 따지면 – C로 … More 초간단 SIMD(Single Instruction Multiple Data)최적화 성능 테스트

진행중인 프로젝트 Visual Studio 2010 -> Visual Studio 2013으로 이전

C#이랑 WEB프로젝트만 vs2013을 쓰고 C++프로젝트는 vs2010을 쓰고 있었는데 큰맘먹고 싹 vs2013으로 이전했다. OK버튼만 클릭하면 완전 클리하게 될 줄 알았는데 그건 희망사항이고 완전 클린하게 이전은 안된다. 대체로 클릭만으로 끝나지만 asm코드가 섞여있거나 문자 체계가 MBCS인데 MFC 프로젝트라던가, DirectX를 사용했거나 하면 문제가 조금씩 생긴다. 컴파일 해보면 deprecated 경고를 적지 않게 보게 되는데 이게 후달리게 되는 주요 요소중 하나.. … More 진행중인 프로젝트 Visual Studio 2010 -> Visual Studio 2013으로 이전

명왕계획 제오라이마 히무로미쿠 1/6 (冥王計画 ゼオライマー 氷室美久)

내 손으로 작업한 3번째 레진 킷이다.. 명왕계획 제오라이마의 히로인 ‘히무로 미쿠’되시겠다. 1/6사이즈인데 웬만한 1/5킷과 비슷한 크기다. 88년도즈음에 나온 킷이고 원형사는 BOME. 이 시절에 미치타카 키쿠치씨 작화의 캐릭터들은 BOME조형으로 나온것이 꽤 있다. BOME 조형으로 나온 보그맨의 아니스팜과 사일런트 뫼비우스의 카스미 킷을 가지고 있다. 개인적으론 80년대의 키쿠치씨 그림은 BOME가 가장 잘 살렸다고 생각한다. 붓으로 칠하던 시절이라 그런지 … More 명왕계획 제오라이마 히무로미쿠 1/6 (冥王計画 ゼオライマー 氷室美久)

Windows Phone 8과 PC간 네트워크 플레이

Windows Phone 8로의 엔진 및 게임포팅 작업의 최종 결과물이다. 일단 작업은 여기까지로 종료. PC와 Windows Phone 8 각각 다른 계정/캐릭터로 서버에 연결해서  네트워크 플레이 테스트를 해봤다. UI를 안만들어놔서 그렇지 PC클라이언트의 모든 기능은 다 들어가있다. 속도는 생각보다 나쁘지 않고 가장 걸림돌은 메모리 사용량. 이후 정식 모바일 클라이언트를 만든다면 간소화된 UI와 경량화된 리소스가 필요할 것 같다. 툴 … More Windows Phone 8과 PC간 네트워크 플레이

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등.. … More Windows Phone 8에서의 게임개발의 어려움(어쩌면 개인적인 불만)

Windows Phone 8로 게임포팅 중 생긴 난관 – Windows Phone 8 에서 App당 사용 가능한 최대 메모리

윈폰개발은 여기까지 하려고 했는데 일단 크래시하는 원인이 너무 찜찜해서 정확히 원인을 파악하고자 열심히 디버깅을 시도. 크래시 원인이 메모리 부족인건 확실해보인다. 다만 에뮬레이터나 리얼폰이나 1GB메모리를 장착하고 있다. 메모리 부족 현상이 너무 빨리 오는것 같아서 이상하다고 생각했다. 내 코드가 CRT힙에서 할당한건 대략 60MB 정도. 버텍스버퍼,텍스쳐,인덱스 버퍼는 정확히 얼마를 썼는지 알수가 없는데 적어도 100MB는 될거고. 그럼 최소한 160MB를 … More Windows Phone 8로 게임포팅 중 생긴 난관 – Windows Phone 8 에서 App당 사용 가능한 최대 메모리

윈폰8 포팅 중단.

완료가 아니고 중단. 윈폰8 포팅은 여기까지. 한계점을 명확히 알 수 있었다. 가능하면 윈폰 클라이언트도 출시하고 싶었지만 아주 경량화 시키지 않고선 불가능할것 같은데 그럴만한 여력은 없다. Windows Phone 8은 ARM계열의 Windows 8 타블렛과 상당히 다르다는걸 알게 된게 큰 수확이랄까. 즐거웠다. 아깝지만 OS와 개발환경이 더 나아지질때까지 보류.