Game Dev – Voxel Horizon – 자동 최적화 기능 구현

메모리를 절약하고 처리 성능을 높이기 위한 자동 최적화 기능을 구현했다. 복셀 오브젝트는 8x8x8(최소 복셀 크기 50cm^3)에서 1x1x1(최소복셀 크기 1m^3)까지 가변적인 사이즈를 가진다. 복셀 오브젝트는 모양과 색칠된 상태를 유지한다는 전제하에 최적화 될 수 있다. 8x8x8 -> 4x4x4로 4x4x4 -> 2x2x2로 2x2x2 -> 1x1x1로 당연히 8x8x8오브젝트가 1x1x1짜리 오브젝트에보다 메모리를 더 먹는다. 복셀 데이터 스트리밍할때 패킷량도 더 크다. … More Game Dev – Voxel Horizon – 자동 최적화 기능 구현

내가 만드는 게임의 궁극적 목표

중고대딩 시절은 PC통신과 함께 했다. 소일거리도 취미도 아닌 그냥 일상이었다. 학교생활보다 PC통신 세상이 더 현실같았다. go para, go ani, go gma, go muye 등 여러가지 동호회 활동을 했었다. 밤 10시부터 새벽 내내 대화방에 접속해두는건 기본이었다. 채팅을 할때도 있었고 다른 작업을 할때도 그냥 방에 있었다. yuchi : 안녕하세요 xxxx : 어서오세요. wwww : 어솨라. zzzz: 어소세요. … More 내가 만드는 게임의 궁극적 목표

Voxel Horizon – 개인맵 기능 개선 및 GUI추가.

개인맵 기능 자체는 몇개월 전에 구현했다. 완벽하다고 볼순 없지만 핵심적인 기능은 모두 구현했다. 또한 성능저하를 막기 위해 개인맵의 생성/삭제를 완전히 백그라운드에서 비동기적으로 처리하도록 했다. 이 부분이 꽤 힘들었다. 이때는 단순히 기능 구현이 목표였다. 이때만 해도 어지간한 UI는 콘솔로 다 처리할 생각이었으므로 UI부분은 전혀 신경 쓰지 않았다. 정말 다 콘솔로 구현했다. 11월에 출시한다고 마음을 굳힌 상황에서 … More Voxel Horizon – 개인맵 기능 개선 및 GUI추가.

Game Dev – Voxel Horizon 개발중 잡설

VOXEL HORIZON프로젝트를 시작하게 된 최초의 동기는 다음과 같다. – 배경 리소스 뽑아줄 디자이너가 없다. – 복셀렌더링을 해보고 싶었다. 그리고 개발을 진행해오면서 늘 유지하고 있는 프로젝트의 가장 큰 목적은 다음과 같다. – 자체엔진 개발이 옳다는걸 증명하고 싶다. 내 엔진만의 장점을 보이고 싶다. 상용 엔진의 기능 만으로 복셀월드를 렌더링할 수 없으니까. 복셀월드를 MMORPG베이스로 구현한다고 하는 것은 단순히 … More Game Dev – Voxel Horizon 개발중 잡설

Voxel Horizon – 복셀 월드에 몬스터 배치

이전에도 게임 서버에 몬스터를 올린적이 있었지만 그땐 기능 테스트를 위해서 하드코딩으로 올린거였다. 이번에는 절차대로 몬스터를 배치했다. 1. 맵툴에서 몬스터 배치 2. 맵툴 -> DB로 저장. 3. 게임서버가 DB의 몬스터 리스트를 읽어와서 로딩 및 배치. 몬스터에게 무기를 쥐어주지 않았으므로 공격은 못한다. 몬스터와 이벤트 NPC에는 당초 목표대로 실시간 복셀라이제이션을 적용했다. 과거에는 NPC서버와 Game서버를 따로 두고 통신하도록 했는데 … More Voxel Horizon – 복셀 월드에 몬스터 배치

nvapi에서 NvAPI_GetMemoryInfo()주소 얻어오기 – (어셈블리어 학습해야하나요?)

Voxel Horizon은 NVAPI를 사용한다. NVAPI는 GPU의 상태를 확인하거나 일부 기능을 제어할 수 있는 nvidia 그래픽 드라이버에서 제공하는 API이다. NVAPI SDK는 nvidia 개발자 홈페이지에서 다운로드할 수 있다. C스타일의 .h / .lib / .dll로 구성된 아주 간단한 SDK다. 이걸로 게임 플레이중 GPU점유율과 GPU온도, 남은 GPU메모리의 양을 확인한다. 물론 일반 유저들을 위한 기능은 아니고 개발할때 필요한 디버깅용 기능으로 … More nvapi에서 NvAPI_GetMemoryInfo()주소 얻어오기 – (어셈블리어 학습해야하나요?)

Direct X 프로그래밍 학습에 대한 조언

간만에 페이스북 DirectX 그룹에 질문이 올라와서 답변을 달았다. 답변 달다보니 몇 가지 강조할 내용은 정리해서 어디 남겨야겠단 생각이 들었다. DirectX 프로그래밍을 학습하려고 한다면… 1. 현대적인 C++과 달리 모든 DirectX, 그러니까 DirectX 2부터 12까지 모두 포인터를 죽도록 사용하며 아주 능숙하게 사용해야합니다. 포인터 사용에 능숙하지 못하다면 C/C++프로그래밍 기초부터 다시 학습하도록 합니다. 2. DirectX 프로그래밍을 학습하려면 COM에 대한 … More Direct X 프로그래밍 학습에 대한 조언