Voxel Horizon – 캐릭터 상태 창

캐릭터 상태창을 만들었다. 상태창 자체는 HP와 레벨정도만 표시해두면 되니 그냥 노가다이다. 단 HP등 게이지를 표시하려면 가변길이의 막대와 이와 연동되는 숫자 표시가 필요하다. 이것도 수동처리하면 그냥 노가다이다. 게임에선 엄청 자주 쓰는 기능이므로 UIProgressBar란 이름의 컨트롤을 만들어서 UI라이브러리에 추가했다. 기본 UI컴포넌트 기능에 추가적으로 n / m 으로 값을 설정해주면 막대와 표시 텍스트는 자동으로 렌더링 하도록 했다. 기본적으로 … More Voxel Horizon – 캐릭터 상태 창

Game Dev – Voxel Horizon – UI- Scroll Bar

스크롤바 안만들려고 했는데 결국 만들어 넣었다. 사실은 좀더 머리를 쓰는 작업을 하고 싶었다. 모델링 데이터에서 복셀의 색을 샘플링 하려 했는데 이게 생각보다 간단치 않았다. 가만히 책상 앞에 앉아서 시간 죽이느니 언젠가 해야할 일을 빨리 해치워버리자는 생각이 들었다. 그래서 미뤄뒀던 스크롤바를 만들었다. 기술적으로 크게 대단할 일은 없다. 기존 UI체계에 IUIScrollBar 인터페이를 노출하는 스크롤바 클래스를 만들어 넣었다. … More Game Dev – Voxel Horizon – UI- Scroll Bar

Game Dev – Voxel Horizon – UI작업중

처음 Voxel Horizon을 시작할때는…그래픽을 사용하는 UI를 만들지 않을 생각이었다. 도저히 그럴 여력은 없다고 생각했다. 그리고 약간의 낭만-dos시절의 추억-을 느낄수 있는 방법을 택하고 싶었다. 시에라 온라인의 게임을 기억하는가? 그 회사의 어드벤처 게임들은 키보드로 문장을 입력해서 게임을 컨트롤 했다. 나도 비슷한 방법을 취할 생각이었다. 흠..하지만. 그런 방식으로는 결국 아무도 플레이하지 않을것이란 결론을 내렸다. 지금은 dos시절이 아니고. 내 … More Game Dev – Voxel Horizon – UI작업중

Game Dev – Voxel Horizon – Point Light추가

포인트 라이트를 추가했다. 기능 자체는 이전부터 구현해놨었지만 실질적으로 사용할 수는 없었다.  기존에는 라이트맵 패치의 컬러포맷이 R5G6B5였기 때문에 라이트가 여러개 겹치면 쉽게 정밀도를 다 잡아먹어버리는 문제가 있었다. 또한 CUDA쪽 라이트맵 베이킹 코드에는 포인트 라이트가 빠져있었다. 이제 실제로 사용할 수 있도록 기능을 다듬고 있다. 이번에 작업한 내용은 다음과 같다. 1. 라이트맵 패치의 컬러포맷을 RGB각 채널당 float로 바꿨다. … More Game Dev – Voxel Horizon – Point Light추가

Baking Light-map. CUDA vs CPU

몇일전에 CUDA의 Unified Memory System에 문제가 있다고 포스팅했었다. CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상. 아..아쉽다. 정말 멋진 기능이었는데. CUDA프로그래밍 해본 사람은 알텐데 cudaMalloc()으로 GPU메모리를, cudaMallocHost()로 CPU측 메모리를 할당하고 이 두가지 다른 메모리의 내용을 수동으로 동기화시키는 일은 상당히 번거롭다. 특히 Voxel Horizon프로젝트처럼 시스템 메모리에 구축한 KD-Tree를 GPU 메모리로 옮길땐 아주 짜증나는 작업을 해야한다. GPU측, CPU측 … More Baking Light-map. CUDA vs CPU

CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상.

서피스북(1 과 2 모두 해당)에서 CUDA를 돌릴때 디바이스가 완전 정지하는 현상이 있다. Windows Vista이상이면 드라이버가 크래시하거나 hang되면 OS가 드라이버를 내렸다가 다시 올린다. 그래픽 드라이버라 해도 ring 1에서 돌아가므로 ring 0에서 돌아가는 커널까지는 손상시킬수 없다. 이론상으론 그렇다. 그런데 위 경우에는 그냥 커널까지 멈춰버린다. 이 상태에선 전원버튼을 10초이상 눌러서 완전히 껐다가 다시 켜는 수밖에 없다. 처음엔 서피스북에서만 … More CUDA Unified Memory 사용시 시스템이 멈춰버리는 현상.

Game Dev – 참조를 이용한 Voxel Object의 copy기능 구현

[인스턴스맵] 사용자가 임의로 편집이 가능하고 모두가 공유할 수 있는 맵에선 몬스터를 풀어둘수 없다. 수시로 변형되는 복셀 지형에 쉽게 끼일것이다. 이 상태론 원활한 전투도 수행하지 못한다. 따라서 전투전용의 인스턴스맵을 만든다. 이 타입의 맵은 복셀을 파괴할 순 있지만 복셀을 추가하지는 못한다. 또한 NPC의 이동과 밀접한 관계가 있는 바닥에 대해선 파괴도 허용하지 않는다. 여기서 말하는 인스턴스 맵은 원본이 … More Game Dev – 참조를 이용한 Voxel Object의 copy기능 구현