최근3년간 만든것들. 생각나는대로 정리해봄.

최근3년간 만든것들. 생각나는대로 정리해봄. 내가 하는 짓이 얼마나 마이너한 짓인지 확인하고 싶어서 적어봄. CUDA 응용 (Processing collision in Game, Baking Light-map, etc…) – nvidia CUDA SDK + C++ https://doc.co/xKcRcB OneDrivePlayerW81 (OneDrive의 음악파일들의 재생목록 생성/저장/플레이, 백그라운드로 재생목록의 곡들을 다운로드해서 곡 넘어갈때 끊김없이 플레이해줌.) – for Windows 8.1 WinRT: WinRT API + CPP RESET SDK + C++/CX … More 최근3년간 만든것들. 생각나는대로 정리해봄.

Engine Dev – Deferred Shading적용

D3D12엔진을 Forward Shading에서 Deferred Shading체계로 바꿨다. 아니 정확히는 Lighting은 Forward로 두고, 그림자 처리는 Deferred로 바꿨다. 부분적이지만 Deferred Shading으로 바꾼 이유는 대량의 Voxel을 출력할때 self-shadow를 적용하면 forward에선 와장창 느려지기 때문이다. 사실상 상당히 많은 voxel들이 가려져서 보이지 않음에도 불구하고 보이지 않는 voxel들까지도 depth-test를 하고 있는게 꽤 심각한 성능저하를 가져왔다. 이 부분은 Deferred Shading으로 바꾸고 확실한 속도향상을 기대하고 있다. … More Engine Dev – Deferred Shading적용

Object Culling #1

네트워크 플레이의 기본 구조는 제대로 구현했다. 이제 플레이 가능한 속도를 보장할수 있도록 오브젝트 컬링을 위한 작업에 들어갔다. 우선 월드를 KD-Tree로 분할해서 복셀 오브젝트들을 집어넣었다. 뷰프러스텀에 들어가는 오브젝트를 찾을때 상위노드부터 제거하므로 탐색 효율은 확실히 좋아졌다. 하지만 이것만으론 많이 부족하다. 역시 가려진 오브젝트를 그리지 않도록 하는것이 가장 중요하다. 예전에 사용했던 Room/Portal/BSP방식도 이번엔 사용할 수 없다. 지형이 실시간으로 … More Object Culling #1

Game Dev – XBOX ONE(UWP버전)과 PC의 네트워크 플레이

이전에도 계속 포스팅했다시피 난 이 게임(데모)를 Windows Store를 통해 공개할 생각이다. 따라서 엔진을 개발할때부터 UWP버전을 같이 작업해왔다. 그리고 가능하면 XBOX ONE과 Windows 10 Phone에서도 동일한 게임을 플레이하게 하려고 나름 노력하고 있다. 몇 개월전 MS는 하나의 Store를 강조하며 XBOX ONE에서 UWP App을 돌릴 수 있게 하겠다고 발표했다. 얼마 지나지 않아서 프리뷰지만 XBOX ONE에서 UWP App을 돌릴 … More Game Dev – XBOX ONE(UWP버전)과 PC의 네트워크 플레이

Game Dev – 온라인으로 Voxel 편집 가능

서버에 복셀 편집 기능과 복셀 오브젝트 관리 기능을 넣었다. [클라이언트 A] -> (복셀편집 요청) -> [서버] -> 서버에서 처리 -> 복셀 변경사항 broadcast -> [클라이언트 A,클라이언트 B…] 이런식이다. 로그인 후 맵 전체의 복셀데이터를 한번에 받아올 수는 없다. 너무 양이 많다. 지금 테스트 데이터로는 얼마 안되지만. 그래서 네트워크 브로드캐스팅 단위인 Sector-Grid를 이용한다. 맵 전체는 2차원 그리드로 … More Game Dev – 온라인으로 Voxel 편집 가능

Game Dev – Voxel 편집 기능 추가

최근까진 자잘한 UI기능을 추가하느라 시간을 보냈다.서버 연결을 위한 UI가 필요했는데 콘솔만으로는 내가 너무 불편해서 버틸수가 없었다. 그래서 그쪽 작업을 하느라 편집기능 추가가 계속 늦어졌다. 이 프로젝트에선 개별 복셀들을 바로 트리구조에 넣는 대신, 최대 16x16x16개의 복셀을 가지는 오브젝트들로 구성한다. 오브젝트 안에서는 복셀들을 Octree구조로 가지고 있다.그리고 이 오브젝트들은 월드상에서 KD-Tree로 관리된다. 이렇게 한 이유는…마인크래프트 같은걸 만들려던게 아니고 … More Game Dev – Voxel 편집 기능 추가

Win 10 Insider Preview에서 DirectX Debug layer를 사용할 수 없을때

Windows 10 Insider Preview사용시 OS빌드버전과 설치된 SDK버전이 일치하지 않으면 DirectX Debug Layer를 사용할 수 없다. 이때 다음의 feature를 추가하면 Debug Layer를 사용할 수 있다. Settings ->System->App&Feature->Manage optional features->Add feature에서 Graphics Tools를 설치 리부팅이 필요한진 모르겠는데(난 리부팅했음) 이후로는 D3D12GetDebugInterface()함수가 정상적으로 리턴. debug layer사용이 가능함.  

Game Dev – 다양한 사이즈의 복셀 지원 및 컬러 팔레트 구현

날이 더워지니 작업이 점점 더뎌진다. 그래도 꾸역꾸역 작업을 진행시켜나가고 있다. 처음엔 10cm길이의 정방형 복셀만을 사용해서 파괴 가능한 조밀한 지형지물에만 사용하려 했다. 그렇지만..음 역시 이 데모-혹은 게임을 완성했을때 2명 이상이 동시에 접속해서 pvp를 즐길거라고는 전혀 생각이 들지 않는다. 그래서 마인크래프트처럼 뭔가 만들 수 있는 기능을 우선 넣기로 했다. 그러자면 10cm짜리 복셀은 뭔가를 만들어내기 위한 블럭으로 사용하기엔 … More Game Dev – 다양한 사이즈의 복셀 지원 및 컬러 팔레트 구현

DX11과 DX12의 성능차에 대한 잡설

DX12에서 CPU에서 처리하는 시간을 줄인건 명백한 사실이다. 그런데 DX12로 짜면 GPU큐를 꽉 채우기가 진짜 힘들다. DX12로 포팅한 게임이 성능이 안나오는건 GPU와 게임이 DX12를 제대로 지원을 안해서가 아니고 GPU가 놀게 되는게 문제다. 궁금한 사람들은 GPU-Z라도 띄워서 DX12용 게임을 플레이할때 GPU점유율이 몇%나 나오는지 확인해보라. DX11과 비슷하거나 성능이 조금 더 안나오는 게임이라면 GPU점유율이 11에 비해서 12일때 더 떨어진다. … More DX11과 DX12의 성능차에 대한 잡설

GameDev – win32버전과 UWP버전의 네트워크 플레이

기존 win32 Crypto API로 작성했던 계정이랑 패스워드 암호화 코드땜에 UWP버전의 네트워크 처리가 계속 지연되고 있었다. UWP아니 WinRT의 AsymmetricKeyAlgorithmProvider 를 이용해서 Desktop과 UWP공용 암호/복호화 코드를 짰다. 일부 WInRT(UWP) API들은 데스크탑 어플리케이션에서도 사용할 수 있는데 다행히도 AsymmetricKeyAlgorithmProvider는 Windows 8데스크탑부터 사용할 수 있다. 각각 win32 DLL과 UWP DLL로 만들어서 DLL로 만들어서 서버(Windows Server 2012R2) , win32 클라이언트(Windows 10) … More GameDev – win32버전과 UWP버전의 네트워크 플레이