기획 수업을 진행하면서 테이블을 사전에 기획하고 구성하는데에 어려움을 겪는 경우를 많이 보았습니다.
저도 이해 하는데 한나절이 꼬박 걸리기도 했고요
그나마 사전에 SQL을 공부한적이 있었기 때문에 이해가 조금 빨랐다고 생각 됩니다.
그래서 제가 이해한대로 게임데이터 테이블을 만드는 이유와 만드는 방법에 대해서
나름대로 혼자 고민하고 정리해 본 결과를 공유하고자 합니다.
1. 게임 데이터 테이블을 만드는 이유
데이터는 그냥 표를 만들어 놓고 그때그때 보고 쓰면 되는거 아닌가요?
왜 이렇게 복잡하게 테이블을 만들어서 쓰는 것일까요?
실생활에서 테이블과 가장 비슷한 예는 무엇이 있을까요?
살면서 한번쯤 쓰레기를 버릴 때에 이게 음식물 쓰레기 인가 아닌가 애매할 때가 있지요
이럴때는 보통 냉장고에 붙어있는 저런 팜플렛을 보고 어떻게 버려야 할지 결정하곤 하죠.
혹시 사이버 보안 점검의날이라고 들어 보셨나요? 통칭 사보날이라고 달마다 한번씩 부대 전체보안점검의 날을 뜻합니다.
행정병으로 복무 했었던 저는 잊을수가 없는데요. 처음 복잡한 절차를 인수인계 받을 때, 한꺼번에 많은 정보가 들어와서 머릿속이 새하얘지는 경험이...이걸 어떻게 다 하나 싶지만 체크리스트를 보면서 한번 두번 계속 하다보면 어느새 일상생활처럼 느긋하게 사보날을 보내게 됩니다.
군대 말고도 사례는 많죠, 항공기 이륙시의 준비단계나, 의료진이 수술 전 수술도구를 준비하고, 위생상태를 점검하는 단계도 반복되지만 목숨이 걸려 있는 아주아주 중요한 단계인데요, 이런 사례에 체크리스트를 도입하고 사고 발생률을 획기적으로 줄였다는 연구결과도 있습니다.
그저 머릿속으로만 기억하고 처리한다면 엄청나게 복잡하고 시간이 많이 걸리는 일이지만, 반복되는 정보를 저장해두고 그때그때 불러온다면 실수도 줄이고 시간도 엄청나게 절약되겠죠.
이것이 바로 우리가 굳이~ 머리를 싸매고 테이블을 설계하는 이유입니다.
2. 게임 데이터 테이블을 기획하는 방법
그러면 데이터 테이블을 어떻게 기획하면 좋을까요?
사전 지식 1
필드(Field)란?
데이터베이스에서 정보를 저장하기 위한 가장 작은 단위이다.
때문에 필드는 키를 포함하는 단어이다.
키⊂필드
사전지식 2
키(Key)란?
필드 중에서 특정 필드를 선택하여 레코드(행)를 식별하는 데 사용하는 값.
고유ID 등이 있다.
게임 테이블의 구성 요소는 크게 키(Key)와 그렇지 않은것, 즉 일반 필드(Field)로 구분할 수 있을것 같습니다.
Key란 데이터 테이블에서 어떤 행(Row)를 특정하기 위한 값입니다. 궁극적으로는 그 행에 있는 특정 필드(Field)값을 불러오고 싶다거나 행(Row)을 가지고 지지고 볶고 하고 싶은 목적이 있겠죠.
음식물 쓰레기 분류 | |
쓰레기 이름 | 음식물 쓰레기 여부 |
생선 대가리 | 음식물 쓰레기임 |
조개 껍데기 | 음식물 쓰레기 아님 |
귤 껍데기 | 음식물 쓰레기임 |
치킨 뼈다귀 | 음식물 쓰레기 아님 |
여기 이 테이블을 보시죠. 음식물 쓰레기 분류라는 테이블에 '쓰레기 이름', '음식물 쓰레기 여부' 라는 컬럼이 있네요
'생선 대가리' 라는 이름을 가진 필드가 있고, 그와 같은 행에 '음식물 쓰레기임' 이라는 필드가 있다면, 둘중에 '생선 대가리'가 Key 값이 되겠지요.
물론 실제 테이블은 훨씬 복잡하고 한글 필드 말고 고유 ID 값이라던가, 영어 이름이라던가 이런게 왕창 있겠지만 단순화 해보면 그렇다는 이야기지요.
그러면 나름대로 고유한 값인 Key 값이 왜 필요한지는 알겠는데
컬럼은 무슨 기준으로 만드는걸까요?
한마디로 정의하면 컬럼은 우리가 써먹기위해 만듭니다.
위에 만든 음식물 쓰레기 분류 테이블을 보시면 음식물 쓰레기다 / 아니다를 구분하는 컬럼이 있죠?
이걸 구분해서 우리가 알 수 있다면 실 생활에 유용하고 시간/비용이 절약 되겠죠? 그러면 좋잖아요? 유용하잖아요?
그래서 만드는겁니다.
예를들어 볼까요
게임 스킬 테이블에 스킬 설명이라는 컬럼이 있고, 필드에는 스킬 설명이 길게 적혀 있네요.
그 스킬 설명은 어디에 쓸까요? 스킬을 모르는 초보자가 스킬을 배우기 전에 UI를 먼저 살펴 볼 텐데 거기 쓰여 있다면 유저들이 보고 이해하기 편할겁니다. 유용하지요.
플레이어 캐릭터의 테이블에 남자/여자를 구분하는 컬럼이 있어요.
나중에 목소리를 넣을때, 남자/여자 구분되어있으면 다른것으로 구분하는것 보다 편하겠죠?
몬스터를 분류하는 테이블이 있다고 합시다. 공격방식이라는 컬럼에 근거리/원거리 라는 필드들이 있어요.
만약 플레이어가 사용하는 스킬중에 원거리 공격을 반사하는 스킬이 있다고 해보면 어떨까요?
원거리 공격을 하는 몬스터를 가져와서 지지고 볶고 하면 편하겠지요? 이런 컬럼을 만들어 놓으니 유용합니다.
반대로 예를 들어 볼게요.
몬스터를 분류하는 테이블인데 어떤 몬스터의 성 정체성을 이성애자/동성애자/양성애자로 구분해놓은 컬럼이 있어요.
이런 경우는 플레이어가 성 정체성에 따라 공격효과에 차이를 두는 스킬을 가지고 있거나 하지 않는 이상 쓸모가 없는 컬럼이라고 할 수 있겠죠. 이런 게임 만들면 아마 안좋은 쪽으로 논란이 많이 될거 예요. 만들 생각은 하지 말아요.
제가 급조해본 테이블 기획을 예로 보여드릴게요
그냥 막 만든거라 부족한게 많아요, 파괴 가능하면 HP는 몇인지 이런것들..그냥 이런식으로 기획했다
하는 뼈대만 보여드릴게요.
먼저 개요입니다.
여기서 각 행이 본격적인 테이블의 컬럼이 될거예요 그러니까 설명란에는 컬럼이 어떤 컬럼인지 넣는거죠.
이때, 내가 왜 이 컬럼을 만드는지 잘 생각해보면서 기획 해 보는게 좋습니다.
이 테이블의 기본키(Primary Key)값이 될 ID의 생성 규칙이예요. 이것도 깔건 많네요 중복값이 있으면 안되는데
각 분류별로 99개 까지 밖에 못만들죠? 아무튼 뭐시당가 인디게임의 ID 생성 규칙이다 이말입니다.
잘 보시면 가로로 쭉 나온 컬럼들이 '개요' 에서 행을 구성했던 요소들입니다.
이런식으로 테이블을 기획하고 간단하게 만드는 과정까지 알아보았습니다.
'게임프로그래밍 개발 수업 > 게임 기획 수업' 카테고리의 다른 글
맵 기획서란 (레벨디자인) (0) | 2023.02.27 |
---|---|
7일차 - 테이블 구성 (0) | 2023.02.17 |
7일차 스킬 기획 맛보기 (0) | 2023.02.17 |
6일차 시스템 기획 (0) | 2023.02.16 |
5일차) 컨셉 기획서 작성 (0) | 2023.02.15 |