실무 게임 기획서 해부 2편: 아바타 조합 테이블(ItemMixTable) 구조와 컬럼 설계법
안녕하세요. '호랭이 물어갈 기획놈들' 입니다.
지난 1편에서는 아바타 조합 시스템을 기획한 '진짜 목적(BM)'과, 사업팀의 매운맛 요구를 방어하며 설정했던 '기본 룰'에 대해 털어보았습니다.
기획 회의가 끝나고 룰이 확정되었다면, 이제 기획자는 엑셀을 켜야 합니다.
아무리 기획서에 예쁜 말로 룰을 적어놔도, 프로그래머가 서버에 코드를 입력할 수 있는 '데이터 테이블(Data Table)'로 번역하지 못하면 그 기획은 휴지 조각입니다.
오늘은 1편의 룰을 실제 게임에 적용하기 위해 2013년 당시 제가 작성했던 'ItemMixTable'(아바타 조합 테이블)의 컬럼 구조를 하나씩 해부해 보겠습니다.
기존 AvatarTable에 넣지 않고 테이블을 '분리'한 이유
저 같은 경우엔 우선 조합 테이블이 있는지 먼저 확인을 해봤습니다. 아무래도 다양한 아이템들을 합성 및 분해를 진행할 수 있는 범용적인 테이블이 있다면 거기에 아바타 조합 내용을 넣으려고 했는데 조합 자체가 아예 만들어지지 않아서 차라리 이번 기회에 아바타만 조합 하는게 아니라 아이템도 조합하고
장비도 조합하는 방향으로 정하고 관련 테이블을 제작했습니다.
이런 테이블 작업을 하다보면 대다수 신입 및 낮은 연차 기획자 분들의 가장 많이 나오는 실수 중 하나가 기존에 사용하던 테이블 'Item Table', 'Avatar Table' 안에 [조합 가능 여부], [조합 확률], [성공 시 결과물] 같은 컬럼을 주르륵 붙이는 일이 많이 발생하는데 지금처럼 단순히 아바타 조합 한 곳에서만 사용한다고 했을 시 저 위의 테이블에 넣는 것이 가장 편한 방법일 수 있지만 다양한 곳에 사용할 수 있게 만든다고 하면 꼭 조합할 아이템 타입 값을 나눠 여러 장비, 아이템, 의상 등을 조합하도록 만드는 방향으로 설계를 하시면 메인 테이블은 가볍과 유지하면서 확률이나 조합식등을 수정하고 싶을때만 해당 테이블을 조작해서 안전하게 밸런스 패치를 할 수 있는 모듈화가 되니 이 부분은 꼭 여러번 생각하고 작업하실 수 있습니다.
ItemMixTable 컬럼 집중 해부
ItemTable.csv
아이템 테이블 안에는 뭘 조합해서 나오는 아이템인지 확인하기 위한 MixTID 컬럼이 들어있습니다.
- ItemMixTable
NPCDlgStringTable.csv 에 아바타 조합 Type을 추가합니다.
일반 아바타 합성 큐브 (캐쉬 아이템)
레어 아바타 합성 큐브 (겔드 아이템)
기획서는 텍스트가 아닌 '데이터의 흐름'이다
신입 시절에는 기획서에 화려한 표를 그리고 시스템의 컨셉을 설명하는 데 집착합니다.
하지만 현업에서 진짜 기획서의 가치를 증명하는 부분은, 기획자의 머릿속에 있는 룰이 위와 같은 정교한 데이터 테이블 구조로 얼마나 빈틈없이 구현되었는가입니다.
사실 건방지게 정교하다 빈틈없다 이야기 했지만 지금 보니까 결국 저 큐브 아이템 안에 랜덤 함수 돌려서 성공하면 아이템 뱉고 실패하면 서브 슬롯에 넣어둔 아바타만 삭제하는 시스템을 너무 빙빙 돌려서 이야기하고 있어 보이게 쓰려고 노력을 한 부분은 부끄럽네요
아무튼 테이블 설계까지 마쳤다면 이제 개발은 프로그래머의 몫일까요? 아닙니다. 아직 기획자가 해야 할 가장 중요한 일이 하나 남아있습니다.
바로 유저가 이 시스템을 마주할 때 겪게 될 '예외 상황'을 예측하고 방어 할 내용을 전달해야 합니다.
다음 3편(마지막 편)에서는, 이 조합 시스템을 이용할 때 유저의 인벤토리가 꽉 차 있거나, 엉뚱한 아이템을 올렸을 때 게임이 터지지 않도록 기획자가 미리 준비해야 하는 '예외 처리 및 UI/UX 설계'에 대해 다뤄보겠습니다.