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사용이 가능함.  

UWP Development For XBOX ONE

으..드뎌 개발중인 게임데모를 XBOX ONE에도 올렸다. 이전에 포스팅했다시피 현재 XBOX ONE의 UWP 환경에선 DirectX Feature Level이 10.0까지만 지원된다. 칩 사양이 원래 그렇게밖에 안되는건지 아직 개발 환경이 미완성이라 그런지 모르겠다. 어쨌든 내가 만든 엔진은 DX11/12엔진이고 최소한 Feature Level 11을 요구한다. 일단 현재 Feature Level 11을 사용하는 기능은 Compute Shader를 이용한 Hi-Z Occlusion Culling과 일부 쉐이더 코드들이다. … More UWP Development For XBOX ONE

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

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

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버전의 네트워크 플레이

Windows 10 Redstone빌드에선 UWP에서도 IOCP를 사용할 수 있게 될듯?

지난 10여년간 수많은 온라인 게임 서버가 Windows NT의 스레드풀 API – I/O Completion Port(이하 IOCP)를 사용해왔다. 그 중에는 IOCP를 사용해서 서버/클라이언트 공용 네트워크 라이브러리를 구현한 경우도 있을 것이다. 바로 내가 그렇게 구현해서 사용해왔다. 매우 유용하게 잘 사용해왔으나 Windows Store App이 처음 나왔을때, 그러니까 Windows 8의 WinRT API였을때 이 바보같은 API는 winsock과 thread API들을 지원하지 않았다. … More Windows 10 Redstone빌드에선 UWP에서도 IOCP를 사용할 수 있게 될듯?

XBOX ONE에서 Windows 10 UWP앱을 돌려보자.

나는 XBOX ONE에서 UWP앱을 돌릴수 있기를 꽤나 기대해왔던 사람이다. id@XBOX프로그램의 헤택을 받기가 영 쉽지 않았기 때문에, 또 이제 와서 별도의 XDK사용법을 익히는게 부담스럽기 때문이다. 1. C++과 DirectX로 개발하는건 충분히 익숙하다. 2. 게임 프로젝트에 한해서는 UWP앱과 win32 어플리케이션은 99%의 코드 공유가 가능하다. 따라서 XBOX ONE에서 UWP앱이 돌아간다면 자연스럽게 콘솔을 지원할 수 있기 때문에 나로선 무척이나 반가운 일이다. … More XBOX ONE에서 Windows 10 UWP앱을 돌려보자.

win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기

요새는 머신에 여러개의 네트워크 장치가 붙어있다. 랜카드가 여러개인 경우도 있고, 그렇지 않더라도 VM등 가상 네트워크 디바이스가 여러개 존재하는 경우가 대부분이다. 따라서 어플리케이션이 접속을 받아야하는 경우에 어느 네트워크 장치의 IP에 bind해야할지 난감할때가 많다. 그래서 이럴때 사용할 코드를 작성했다. win32의 경우는 dns주소와 gateway가 설정된 경우를 찾아서 인터넷에 접속한걸로 간주한다. UWP의 경우 NetworkInformation::GetInternetConnectionProfile()로 인터넷에 연결된 네트워크 장치를 찾는다. … More win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기

Windows 10 디바이스간 파일전송앱 – FileTransfer

https://www.microsoft.com/en-us/store/apps/filetransfer/9nblggh1rmq5 예전 회사에서 만들었던 앱입니다. 로컬 네트워크 상의 Window 10 device간에 파일을 전송할 수 있는 앱입니다. UWP앱이고 당연히 Windows 10 Phone과 태블릿,PC를 모두 지원합니다. UI는 썰렁하지만 기능은 충실히 잘 작동합니다. 무엇보다 작고 빠릅니다. UWP앱으로는 무척 드믈게 C++와 winsock으로 만들었고 코어코드를 공유해서 win32콘솔버전도 개발했습니다. 물론 스토어에는 UWP버전만 올라갔죠. 제가 별5점을 준 리뷰가 한개 있긴 하지만… ‘The … More Windows 10 디바이스간 파일전송앱 – FileTransfer