처음 Voxel Horizon을 시작할때는…그래픽을 사용하는 UI를 만들지 않을 생각이었다.
도저히 그럴 여력은 없다고 생각했다. 그리고 약간의 낭만-dos시절의 추억-을 느낄수 있는 방법을 택하고 싶었다.
시에라 온라인의 게임을 기억하는가? 그 회사의 어드벤처 게임들은 키보드로 문장을 입력해서 게임을 컨트롤 했다. 나도 비슷한 방법을 취할 생각이었다.
흠..하지만.
그런 방식으로는 결국 아무도 플레이하지 않을것이란 결론을 내렸다.
지금은 dos시절이 아니고. 내 게임을 접할 대부분의 유저들은 그 시절의 낭만 따위 절대로 이해못할테니까. 아니 유저들이 문제가 아니고 당장 내가 개발하는 도중에 너무 힘들다. 콘솔창에서 숫자로 이루어진 아이템 아이디를 입력해야되는데 그 빌어먹을 숫자를 기억할수가 없어. 안되겠다.
그래서 최소한 콘솔에서 커맨드를 입력하지 않아도 될 정도의 편의성은 제공하는 UI를 만들기로 했다. 다만 혼자 개발하는 부담이 있으니 UI작업을 최소화 한다는 기본 원칙은 그래도 유지한다.
이미 UI의 기본 부품과 매니저는 예전에 만들어뒀었다. 그걸로 콘솔창도 만들었고 로그인 창도 만들었고 캐릭터 생성/선택 창도 만들었다.
다만 UI부품들을 배치하는 툴을 아직 만들지 않았다.
또한 이 부품들 가지고 실제로 UI체계를 만들어보면 부족한 점들이 많이 드러날 것이다.
우선 지금 개발중에 당장 필요한것, 그러니까 나 스스로 개발하면서도 당장 필요하다고 느끼는 UI를 만들기로 했다.
그것이 인벤토리와 상점. 인벤토리 UI가 최우선적으로 필요하다.
그리고 상점인데, 왜냐하면 게임에 아이템을 추가했을때 내 캐릭터가 아이템을 사용하려면 어떤식으로든 내 캐릭터의 인벤토리에 아이템을 전달해야하기 때문이다. 아 물론 치트 커맨드로 아이템을 지급하는 기능은 만들어놨지만 말이다.
또한 인벤토리와 상점은 외견으로나 기능적으로나 비슷한 부분이 많다. 이건 몰아서 한번에 작업하는게 효율이 좋다.
리스트박스, 그리드 컨트롤, 다이얼로그, 텍스트 박스 등등 기본 부품들은 대충 다 만들어놨는데 역시나 인벤토리를 만들다보니 헛점이 많이 보인다. 기능적으로 부족한 점도 있고 미처 확인하지 못한 버그도 잔뜩 나왔다.
UI부품들을 배치할 툴을 만들지 않았으므로 하드 코딩으로 각종 다이얼로그를 만들었다. 진짜 빡셨다. 그래도 조금이라도 작업을 줄이기 위해 공통적으로 사용할 수 있는 컴포넌트 생성용 함수들도 같이 만들어뒀다. OK/Cancel메시지박스 라든가, 수량 입력용 다이얼로그같은 것들이다. 함수 호출 한번으로 생성할 수 있다.
꽤 짜증나는 작업이었지만 몇 일동안 시간을 투자해서 기본적인 기능을 하는 인벤토리와 아이템 구입이 가능한 상점 UI를 만들었다. 물론 인벤토리와 상점 기능 자체는 서버와 클라이언트 양쪽에 자료구조와 네트워크 동기화 작업이 완료되어있다. UI를 만들어서 그 기능들을 컨트롤 할 수 있도록 껍데기를 씌웠을 뿐이다.
인벤토리 UI와 상점 UI를 만들면서 UI코드 체계는 많이 다듬었다. 레이아웃 툴은 없으므로 여전히 UI작업은 짜증나겠지만 이후의 UI작업은 좀더 빠르게 진행할 수 있을 것이다.
영상은 아이템의 삭제/사용 , 상접에서 아이템 구입, 구입시 수량 조정등을 보여준다.
“Game Dev – Voxel Horizon – UI작업중”에 대한 답글 1개