시스템 디자인을 시작해보려는 또는 이제 막 시작한 게임 디자인 지망생 및 주니어 게임 기획자들에게 도움이 됐으면 하는 마음에 작성했습니다.
목차
1. 시스템이란?
2. 시스템 디자인에서 중요한 것
3. 시스템과 콘텐츠의 구분
4. 시스템 디자인, 왜 어렵나?
5. 나도 한번 해보자, 시스템 디자인
6. 좋은 시스템이란?
7. 주의사항
5. System
시스템이란?
• 시스템이라는 친구는 이런 아이
➢ 입력(Input) : 어떠한 데이터(정보)를 가지고
➢ 규칙(Rule) : 정해진 규칙에 따라
➢ 처리(Output) : 목표한 결과물을 내놓음
• 게임에서의 시스템은?
➢ 입력 : 유저의 ↑방향키 조작
➢ 규칙 : ↑입력은 PC를 앞으로 전진시키겠다는 신호로 판단
➢ 처리 : PC를 앞으로 전진시킴
• 우리가 해야 할 일은?
➢ 어떤 데이터를 받을 것인지?
➢ 규칙은 어떠한지?
➢ 어떤 결과물을 내놓을지?
Input
Rule
Output
8. 시스템 디자인에서 중요한 것
• 의도 전달을 위한 커뮤니케이션
➢ 이러한 의도를 전달하는 과정 중 하나가 바로 기획서 작성 부분이다
➢ 의도를 충족할 수 있는 내용을 기획서에 담아 작업자에게 전달
➢ 보다 정확한 의도 전달을 위해 의도에 맞는 기술적 지식이 필요
Flow Chart Activity Diagram Database Schema
https://ko.wikipedia.org/wiki https://www.smartdraw.com/activity-diagram/ https://ko.wikipedia.org/wiki
9. 시스템 디자인에서 중요한 것
괴상한 차트나 다이어그램을 만드는 것보다
하나의 레퍼런스를 보여주며 의도를 설명하는 것에 집중!
주의!
10. 시스템 디자인에서 중요한 것
• 의도를 전달하게 되면?
➢ 의도를 충족시킬 방법을 같이 모색할 수 있음
➢ 내가 미처 생각하지 못한 더 좋은 방법이 있을 수도
➢ 구현 중 의도를 더 빛나게 해줄 추가 아이디어 상상이 가능해짐
➢ 시스템의 확장 및 변동 범위를 예측할 수 있음
12. 시스템과 콘텐츠의 구분
• 클라크(Clark,C.G)에 의한 산업 분류에 게임 디자인 비유
➢ 1차 산업 = 시스템 디자인
▪ 콘텐츠를 만들기 위한 기본 재료 생산
➢ 2차 산업 = 콘텐츠 디자인
▪ 만들어진 다양한 시스템을 활용해 유저가 먹을 수 있는 콘텐츠로 가공
➢ 3차 산업 = 서비스 디자인
▪ 만들어진 콘텐츠를 유저에게 판매하는 전략 설계
• 구분 정의
➢ 시스템 : 콘텐츠를 만들 수 있는 기본 틀을 제작
➢ 콘텐츠 : 틀 안에서 내용을 바꾸어 만들어진 결과물
우리는 이 단계를 시작하려 함
13. 시스템과 콘텐츠의 구분
• 붕어빵 제작을 예시로
➢ 붕어빵 시스템 디자인
▪ 붕어빵 제작 프로세스 및 파라미터 설계
✓ 붕어빵 틀 제작 - 콘텐츠 의도에 맞게 틀을 선택할 수 있도록
✓ 재료 선택 후 반죽 - 반죽 재료를 선택할 수 있도록
✓ 붕어빵 틀 가열 및 반죽 투입 - 틀을 얼마나 가열할지 선택할 수 있도록
✓ 속 재료 선택 - 속 재료 선택할 수 있도록 (팥, 크림 등등…)
✓ 다시 반죽 투입 - 다시 반죽을 넣는 구간을 선택할 수 있도록
✓ 덮개 덮고 달구기 - 달군 정도에 따라 맛이 변화할 수 있도록
➢ 붕어빵 콘텐츠 디자인
▪ 하나의 시스템으로 다양한 붕어빵을 만들 수 있도록
▪ 프로세스에 기반한 파라미터 설정
✓ 어떤 붕어빵 틀을 선택할지?
✓ 반죽 재료는 무엇인지?
✓ 속 재료로 무엇을 넣을지?
15. 시스템 디자인, 왜 어렵나?
• 인지의 어려움
➢ 콘텐츠는 유저로써 몇 번이고 자연스럽게 경험했지만, 시스템은 겉으론 보이지 않기 때문에 인지의
어려움이 있음
➢ 우리가 밥을 먹을 때 쌀 한 톨의 제작 과정이 보이지 않듯, 유저 입장에서 시스템은 겉으로 드러나지
않음
➢ 보이지 않으니 알 수 없고, 알 수 없으니 당연히 만들 수도 없다!
(우리가 매일 쌀밥을 먹지만, 쌀농사를 할 수 없는 것처럼)
➢ 평소 게임 플레이 중 처리되는 현상에 대한 로직을 생각하는 습관이 필요함
• 프로그래밍 관련 지식의 필요성
➢ 시스템은 확장성과 재사용성을 위해 객체 지향적(OOP)으로 설계되어야 함
▪ Ex1. A ,B 스킬 모두 ‘사거리’라는 값을 가지지만, 사거리가 길고 짧음으로 인해 근거리 스킬, 원거리 스킬의 두 종류의 스킬
이 하나의 파라미터에 의해 만들어질 수 있음
➢ 데이터 테이블을 다루기 위한 데이터 유형에 대한 지식이 필요
▪ Int, float, string, bool 등
16. 시스템 디자인, 왜 어렵나?
• 데이터베이스 관련 지식의 필요성
➢ “아트는 그림으로, 플머는 코드로, 디자이너는 데이터로 말한다”
➢ 신입 디자이너는 대부분 간단한 데이터 작업부터 업무를 시작 (String 수정 등)
➢ 데이터를 잘 다루기 위해선 구조 분석 능력이 필요
▪ 아이템이나 스킬과 같은 대규모 시스템은 다수의 데이터 테이블이 연관되어 있음
▪ 각 테이블 간의 관계성 파악이 가능해야 함
➢ 데이터 모델링
▪ 데이터베이스 구축하기 위한 데이터 간의 관계 분석 및 설계가 가능해야 함
▪ 어떤 데이터를 어디서 참조 받아 어떻게 사용할지?
• 사실 시스템은 우리 근처에 있다
➢ 카페에서의 커피 주문
▪ 커피를 주문한 후 나에게 오기까지의 과정이 어떤 식으로 이루어지는지?
➢ 가위바위보
▪ 플레이어는 어떤 행위가 가능한지?, 가위바위보의 규칙은?
관계형 데이터베이스 관리 시스템
(RDBMS)
https://ko.wikipedia.org/wiki
데이터베이스 정규화
1차 정규화
2차 정규화
3차 정규화
BCNF
18. 나도 한번 해보자, 시스템 디자인
• 의도 설정
➢ 도대체 왜?! 이 시스템을 만들어야 하는지에 대한 의도를 설명
➢ 이 시스템이 무엇을 하기 위한 시스템인지? 이 시스템으로 무엇을 하고 싶은지?
➢ 간단하게 작성해 방향성을 먼저 확인하자!
• 구성 요소 분해
➢ 시스템이 어떠한 요소(객체)들로 구성되어 있는지 파악
➢ 유사 시스템이나 게임을 보며 어떤 요소들이 시스템을 움직이고 있는지 리서치
➢ 구성 요소를 분해해 하나씩 나열해보자
▪ 커피 주문 시스템의 구성 요소
✓ 고객, 캐셔, 바리스타 등
19. 나도 한번 해보자, 시스템 디자인
• 파라미터 설계
➢ 구성 요소를 움직이기 위해 어떤 데이터(파라미터)들이 필요할지 분석
➢ 구성 요소들이 어떤 데이터(Input, Output)를 주고받는지?
▪ 커피 주문 시스템의 파라미터
✓ 돈, 메뉴, 커피 등
➢ 명확하게 데이터화할 수 있는 것들로 구성
• 기능 설계
➢ 설계한 파라미터를 이용해 구성 요소들은 어떠한 행동이 가능한지?
▪ 커피 주문 시스템의 기능
✓ 메뉴 선택하기, 주문하기, 결제하기, 커피 만들기 등
➢ 구성 요소마다 할 수 있는 기능의 차이도 있을 수 있음
20. 나도 한번 해보자, 시스템 디자인
• 상태 설계
➢ 상태에 따라 사용할 수 있는 기능이나 파라미터의 변화가 있는지?
➢ 상태가 변화하는 조건은 무엇인지? (기능과 파라미터를 이용)
▪ 커피 주문 시스템의 캐셔의 상태
✓ 대기, 주문받기, 결제 요청, 결제 확인, 제조 요청 등
• 규칙 설계
➢ 각 구성요소의 상태, 기능, 파라미터가 작동할 때 필요한 규칙은 어떤 것이 있을지?
➢ 구성 요소들 이외에 시스템 전체를 아우르는 규칙은 무엇이 있을지?
➢ 각 규칙이 서로 충돌했을 경우, 규칙 간의 우선순위는 어떻게 되는지?
➢ 논리적인 허점이 생기지 않기 위해선 어떤 규칙을 정해줘야 할지?
▪ 커피 주문 시스템의 세부 규칙
✓ 고객이 메뉴판에 없는 메뉴를 주문한다면?
✓ 결제를 시도했는데 고객의 돈이 충분하지 않다면?
21. 나도 한번 해보자, 시스템 디자인
• 데이터가 시스템을 숨 쉬게 한다
➢ 디자이너가 변경할 수 있도록 설계해야 하는 파라미터는 무엇일지?
➢ 설계한 파라미터들을 보고 담당 작업자가 실제 작업이 가능하도록 데이터 추상화와 모델링 작업 실시
➢ 효율적인 작업과 휴먼 에러를 줄이기 위한 데이터 정규화 실시
• 테스트 & 피드백
➢ 가상의 Input을 넣어 Rule에 따른 Output 도출 시뮬레이션 진행
➢ 주변 사람들이나 담당 작업자에게 피드백 요청
• 폴리싱
➢ 테스트와 피드백을 통해 발견한 개선점을 보완
23. 좋은 시스템이란?
• 확장성과 재사용성을 고려
➢ 게임 개발 프로세스 특성상 디자인 및 개발 과정 중에 시스템 내용이 바뀔 수 있음
▪ 작업자들이 시스템의 확장과 변동 범위를 예측할 수 있도록 (의도 전달)
➢ 일회성 시스템이 아닌, 재사용할 수 있도록 설계
• 허점 없는 규칙
➢ 시스템 흐름 상 논리적으로 막히는 부분이 없도록 설계
▪ 여러 케이스로 시뮬레이션해 보자
▪ 일반적이지 않은 예외 사항에 대해서도 충분히 고민해보자
➢ 시스템의 허점을 노린 편법으로 의도에 빗나간 행위가 가능하진 않은지?
▪ 어뷰징, 허점을 찌른 반복성 플레이 등
24. 좋은 시스템이란?
• 단계별로 항목을 나눠 설명
➢ 시스템 흐름의 단계를 나눠 구성 요소들이 어떻게 유기적으로 동작하는지 설명
➢ 작업자가 각 작업의 크기나 시간을 산정해 개발 우선순위를 결정할 수 있음
➢ 무엇보다 문제 발생 시 추적에 용이함
• 다른 시스템과의 연계
➢ 최근의 콘텐츠는 복잡도가 상승해 하나의 시스템이 아닌 여러 시스템이 서로 맞물림
➢ 여러 시스템이 서로 잘 연계될 수 있도록 설계
➢ Ex1. 아이템
▪ 제작, 분해, 강화, 합성, 각성 등등…
➢ Ex2. 스킬
▪ 조작 -> 유효성 검사 -> 액션 출력 -> 대상 수집 -> 충돌 판정 -> 계산식
26. 주의사항
• 완벽함에 집착하지 말라
➢ 우리는 유한한 자원(시간, 돈, 인력) 속에서 개발을 진행 중
➢ 모든 것을 다 할 수 있는 완벽한 시스템이란 없고, 만들 수도 없다
➢ 한 시스템 내에서 의도에 부합한 개발 우선순위를 설정하라
• 기술의 함정
➢ 기술은 의도를 표현하는 수단일 뿐
➢ 의도가 없는 기술은 어디에도 쓰일 수 없다
➢ 먼저 의도를 표현하고 전달하는 것에 집중하라
30. 참고 서적 및 사이트
게임을 움직이게 하는 기본 구성 요소에 대한 기술적 소개 시스템 기획의 기본 개념 및 기초 다지기
31. 참고 서적 및 사이트
• 프로그래머에게 사랑 받는 게임 기획서 작성법
➢ https://www.slideshare.net/iyooha/20101002-53482961
• 게임 기획자를 위한 데이터 테이블 Guide
➢ https://cafe.naver.com/gamecanvas/367
• 시스템 기획의 기본 원리
➢ https://www.youtube.com/watch?v=iIjCkkzpDIc
• 게임 기획자와 프로그래밍 공부
➢ http://sstorm.egloos.com/5534178
• 기획 의도에 충실한 시스템 설계
• https://blog.naver.com/onlybest01/221260745391