Game Dev – Voxel Horizon – 개인맵 기능 개선. PVP맵 추가

당초 PvP맵을 구현계획을 세웠을땐 개인맵 기능과 분리할 생각이었다. 하지만 PvP맵이라고 해도 인스턴스 맵인데 현재 인스턴스맵 기능은 개인맵에서만 사용한다. 또한 개인맵에서 만든 복셀지형을 PvP맵의 지형으로 사용할 경우 비동기 로딩이 필요하다. 비동기 로드 기능은 개인맵에서 이미 구현되어있다. 겹치는 기능이 너무 많고 그 기능의 대부분은 개인맵에서 구현해놨으므로 결국 개인맵 기능의 일부로서 PvP맵을 구현했다. PvP맵에 입장할때도 권한을 체크하는게 필요한데 … More Game Dev – Voxel Horizon – 개인맵 기능 개선. PVP맵 추가

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

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

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 – 복셀 월드에 몬스터 배치

Game Dev – Voxel Horizon – 가변 월드 사이즈 적용을 위한 사전작업

먼저번에 node사이즈를 꽤 줄여서 KD-Tree메모리로 56MB 사용하던것을 18M로 줄였다. 그 다음으로 맵 유형에 따라 Tree의 사이즈를 가변적으로 선택할 수 있도록 작업하고 있다. 지금까지는 월드 사이즈를 1km x 1km x 0.32km 고정으로 설정했었다. 이것은 kd-tree가 커버하는 사이즈이기도 하며 복셀월드에서 복셀들이 차지하는 실제 사이즈와는 관계가 없다. 퍼블릭맵에서는 1km x 1km를 기본으로 하고 있으므로 문제가 될것이 없다. 하지만 … More Game Dev – Voxel Horizon – 가변 월드 사이즈 적용을 위한 사전작업

Voxel Horizon – 개인맵

플레이어가 공용맵에서 지형을 마구 뽀개거나 마구 건물을 짓거나 하면 다른 플레이어에게 큰 피해가 된다. 따라서 공용맵에선 복셀 편집 기능을 제한해야 한다. 그래서 공용맵에선 플레이어당 편집 범위가 32m x 32m로 제한된다. 또한 마을이나 전투필드처럼 NPC가 배치되는 맵의 경우 지형을 함부로 변경하면 곤란하다. 안전장치로 마을이나 전투 필드에선 복셀을 파괴하더라도 몇초후 자동복구 되도록 했다. 그런데 이렇게 제약사항이 많아지면 … More Voxel Horizon – 개인맵

복셀 자동 복원 기능을 넣었다. 전투필드나 마을처럼 많은 플레이어들이 함께 이용하는 맵이라면 플레이어들이 지형을 멋대로 바꾸면 큰 문제가 생길 수 있다. 따라서 자유로운 복셀 편집은 개인맵과 크래프트 전용 맵에서만 허용할 예정이다. 전투필드와 마을을 퍼블릭 맵이라 부른다. 그리고 이 퍼블릭맵은 기본적으로 복셀 편집 금지다. 퍼블릭 맵에선 기본적으로 복셀 편집 금지지만…게임을 처음 시작하면 틀림없이 지형을 뽀개보고 싶을 … More

Voxel Horizon – 캐릭터 상태 창

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