★ 스톰 의 게임 기획 연구실 : 적절 한 시스템 기획 을 위한 추상 화 이야기 ( 2 ) 
 적절 한 시스템 기획 을 위한 추상 화 이야기 ( 2 ) by storm 
 2012 / 01 / 02 15 : 17 
 ■ 초보 기획 자 가이드 
 sstorm . egloos . com / 5590409 
 전편 에서 는 스타크래프트 유닛 의 이동 을 예 로 들 면서 재정 의 ( Override ) 를 이용 한 다형성 ( Polymorphism ) 에 대해서 간단 하 게 설명 해 보 았 습니다 . 하지만 아마도 C ++, JAVA 등 과 같 은 객체 지향 적 프로그래밍 언어 를 전혀 공부 해 본 적 이 없 는 사람 이 라면 아직 뭐 가 뭔지 제대로 이해 하 기 는 어려울 겁니다 . 하지만 너무 낙심 할 필요 는 없 습니다 . 현업 프로그래머 라도 경험 과 시행착오 가 쌓이 지 않 으면 제대로 활용 하 지 못하 는 것 이 바로 이 개념 이 니까요 . 
 그런데 , 두 번 째 포스팅 을 이어가기 전 에 한 가지 짚 고 넘어갈 점 이 있 습니다 . 기획 자 가 왜 프로그래머 의 영역 인 객체 지향 이나 추상화 를 알 아야 하 는가 하 는 ' 논란 ' 입니다 . 
 흔히 기획 자 가 프로그래밍 을 공부 하 는 경우 의 단점 으로 ' 창의 성 저하 ' 를 많이 언급 합니다 . 프로그래밍 을 공부 한 기획 자 는 어떤 아이디어 를 떠올릴 때 구현 여부 를 먼저 고민 하 기 때문 이 라는 이유 죠 . 물론 그런 기획 자 도 있 을 수 있 겠 지만 , 어설프 게 프로그래밍 을 공부 했 다고 해서 어떤 아이디어 가 기술 적 으로 구현 할 수 있 는지 를 정확 하 게 판단 하 는 것 자체 가 불 가능 한 일 입니다 . 그리고 게임 개발 에 있 어서 ' 이 아이디어 는 구현 할 수 없 다 ' 는 판정 을 받 는 경우 는 , 그것 이 기술 적 으로 불 가능 하 다기 보다 는 개발 의 효율 성 이나 최적화 의 관점 에서 포기 하 는 경우 가 대부분 입니다 . 
 즉 구현 이 불 가능 한 것 은 아니 지만 , 프로젝트 의 목적 에 부합 하 지 않 거나 , 혹은 개발 기간 이나 비용 , 엔진 성능 또는 유저 시스템 요구 사양 의 한계 때문 에 포기 하 는 것 이 죠 . 어떤 아이디어 의 기술 적 인 구현 여부 나 방법 을 최종 적 으로 결정 하 거나 판단 하 는 것 은 기획 자 가 아니 라 테크니컬 디렉터 ( TD ) 정도 의 실력 과 짬밥 이 쌓여야 가능 한 일 입니다 . 
 그렇 다면 게임 기획 자 , 그 중 에서 도 시스템 기획 자 는 왜 프로그래밍 을 공부 하 고 객체 지향 이나 추상화 의 개념 을 알 아야 할까요 ? 그것 은 기획 자 가 어떤 아이디어 의 구현 여부 를 1 차 적 으로 판단 하 기 위한 것 이 아니 라 , 자신 의 기획 아이디어 를 프로그래머 들 에게 정확 하 게 전달 하 고 소통 하 기 위함입니다 . 기획 자 혼자 서 게임 을 완성 시킬 수 있 는 툴 을 쓰 지 않 는 한 , 여러분 의 아이디어 는 대부분 프로그래머 를 통해 실체 화 됩니다 . 그렇 기 때문 에 프로그래머 가 이해 하 기 좋 은 표현 을 통해 아이디어 를 전달 하 면 기획 의 도대 로 더욱 정확 하 게 구현 할 수 있 고 더 효율 적 인 개발 을 할 수 있 게 됩니다 . 
 그러면 이번 에 는 좀 더 실무 적 인 추상화 의 예 를 들 어 보 겠 습니다 . 
 제 가 게임 기획 강의 를 할 때 , 수강 생 들 에게 WoW 마법사 의 스킬 을 분류 해 보 라고 하 면 보통 은 분류 방법 이 두 가지 로 나뉩니다 . 
 ( 1 ) 화염 , 냉기 , 비전 
 ( 2 ) 캐스팅 ( 주문 의 시전 시간 이 필요 한 스킬 ) , 즉시 시전 , 광역 마법 . .. 
 1 번 같 은 분류 는 일반 적 인 유저 의 입장 , 즉 그냥 게임 에서 보여 주 는 대로 분류 하 는 개념 이 죠 . 콘텐츠 기획 서 라면 모를까 시스템 기획 서 에서 는 적합 하 지 않 은 분류 입니다 . 반면 에 2 번 과 같 은 분류 는 1 번 보다 는 조금 낫 지만 , 아직 도 좀 부족 하 죠 . 하지만 여전히 많 은 시스템 기획 자 들 이 2 번 정도 의 수준 으로 기획 을 합니다 . 
 그런데 문제 는 2 번 같 은 식 으로 스킬 의 명세 를 기획 서로 써서 프로그래머 에게 전달 하 면 , 구현 하 는 것 자체 는 가능 하 지만 확장 성 이나 유연 성 이 떨어지 는 결과물 이 나온다는 점 이 문제 입니다 . ( 프로그래머 의 입장 에서 는 코드 의 중복 , 유지 보수성 의 문제 도 발생 함 ) 
 구체 적 인 예 를 들 어 보 죠 . WoW 를 접 은지 꽤 오래 되 서 정확 한 스킬 명칭 은 기억나 지 않 지만 , 흑 마법사 의 마법 중 에 는 처음 엔 시전 시간 이 2 . 5 초 지만 , 해당 스킬 의 시전 시간 을 줄여 주 는 특성 을 찍 으면 0 . 5 초 씩 시전 시간 이 감소 해서 5 포인트 의 특성 을 투자 하 면 , 즉시 시전 스킬 로 바뀌 는 경우 가 있 습니다 . 만약 2 번 과 같 은 식 의 분류 에 기초 한 스킬 시스템 기획 서 를 그대로 구현 했 다면 , 이 와 같 은 예외 적 인 스킬 은 코드 를 갈 아 엎 거나 , 아니면 이런 예외 적 인 스킬 을 구현 하 기 위한 별도 의 코드 를 새로 작성 해야 만 합니다 . 
 게다가 시전 시간 이 필요 하 면서 도 광역 마법 인 경우 라든지 , ' 화 염구 ' 와 같이 특정 대상 을 향해 발사체 를 시전 하 는 캐스팅 스킬 이 지만 , 발사체 가 대상 에 명중 한 후 에 광역 효과 가 발생 하 는 스킬 같 은 경우 등 기존 의 설계 와 다른 예외 상황 이 조금 만 발생 해도 코드 를 갈아엎 거나 아예 별도 로 작성 해야 하 는 엄청난 비 효율 이 발생 할 것 입니다 . 게다가 이런 비 효율 만 발생 하 고 끝나 는 것 이 아니 라 , 계속 된 예외 상황 의 추가 에 따른 고질 적 인 버그 도 함께 따라다닐 겁니다 . 
 따라서 시스템 기획 단계 에서부터 객체 지향 적 설계 방식 을 숙지 하 고 있 는 기획 자 가 기획 아이디어 를 1 차 적 으로 추상 화 하 거나 혹은 추상화 의 단서 를 제공 하 여 프로그래머 와 함께 조율 을 하 는 것 이 서로 에게 도 좋 고 개발 프로세스 전체 에 있 어서 도 바람직 하 다는 것 이 필자 가 이 포스팅 을 통해 전하 고 싶 은 핵심 입니다 . 
 그러면 추상 화 는 대체 어떻게 해야 할까요 ? WoW 의 스킬 을 예 로 들 자면 , 화 염구 , 얼음 회오리 , 돌진 , 방패 막 기 , 각종 버프 등 과 같 은 각각 의 스킬 은 구체 화 된 객체 ( object ) 라고 할 수 있 습니다 . 객체 지향 프로그래밍 에서 는 이렇게 구체 화 된 최종 결과물 을 인 스턴스 ( instance ) 라고 부르 죠 . 여러분 들 이 만약 스킬 시스템 을 기획 한다면 , 초기 기획 단계 에서 구상 한 스킬 목록 을 바탕 으로 공통점 을 추려내 서 비슷 한 것 끼리 분류 하 는 작업 이 바로 추상화 입니다 . 
 그런데 문제 는 , 객체 지향 에서 말 하 는 추상화 를 제대로 이해 하 지 못한 상태 에서 공통점 을 추려내 면 , 바로 위 에서 말 한 1 번 이나 2 번 과 같 은 분류 정도 밖 에 는 할 수 없 다는 사실 입니다 . 그렇 다면 객체 지향 을 공부 하 고 C ++ 같 은 언어 를 좀 만져 봐야 만 하 느냐 ? 물론 공부 를 하 는 것 이 좋 습니다 . 적어도 여러분 이 시스템 기획 자 로 성장 하 기 를 원한다면 , 최소한 C ++ 책 한 권 쯤 은 독파 하 시 기 를 권합니다 . 저 는 오래 전 에 객체 지향 적 인 프로그래밍 언어 를 공부 하 지 않 은 상태 에서 이론 적 으로 만 객체 지향 을 공부 한 적 이 있 었 는데 , 확실히 직접 코드 를 만지 면서 공부 하 는 것 보다 훨씬 이해 하 기 힘들 었 습니다 . 하지만 이런 저런 이유 로 아직 프로그래밍 을 공부 할 상황 이 안 되 거나 공부 해도 잘 이해 하 기 어렵 다면 , 일단 은 워크래프트 3 에디터 같 은 좋 은 에디터 툴 을 다뤄 보 면 아주 큰 도움 이 됩니다 . 
 워 3 에디터 의 경우 , 툴 의 오브젝트 에디터 에 워 3 에서 기본 적 으로 제공 하 는 유닛 과 스킬 , 기타 오브젝트 들 에 대한 데이터 를 볼 수 있 습니다 . 그런데 이것 들 을 잘 살펴보 면 , 그 다른 건 전혀 건드리 지 않 고 단지 데이터 만 수정 해서 새로운 유닛 이 되 거나 새로운 스킬 이 만들 어 질 수 있 습니다 . 
 예 를 들 어 화 염구 와 같 은 스킬 은 이름 을 냉기 화살 로 , 데미지 속성 값 을 냉기 타입 으로 , 발사체 모델링 을 얼음덩어리 로 수정 하 면 화 염구 가 아닌 냉기 화살 이 돼 죠 . 워터 엘레 멘탈 소환 스킬 은 소환 물 데이터 를 드래곤 으로 바꾸 면 드래 곤 소환 스킬 로 변합니다 . 이런 일 들 이 가능 한 이유 는 처음 시스템 을 설계 할 때 부터 확장 성 과 유연 성 을 가질 수 있 도록 철저 한 추상화 를 거쳤 기 때문 입니다 . 그리고 이 와 같이 데이터 ( 값 ) 만 바꿔서 구현 할 수 있 는 것 은 하나 의 공통 성 을 가지 고 있 다고 할 수 있 으며 , ' 개발 ( 구현 ) 의 관점 ' 에서 본다면 하나 의 객체 로 간주 할 수 있 습니다 . 
 그럼 다음 포스팅 에서 는 추상 화 에 대해서 보다 깊이 있 게 들어가 봅시다 . 다음 포스팅 이 올라올 때 까지 여러분 이 즐기 는 게임 에서 특정 시스템 을 놓 고 데이터 만 다르 고 나머지 는 같 은 공통 성 을 가진 객체 들 을 분류 하 는 연습 을 한 번 해 보 시 길 바랍니다 . 
 / / 본 포스팅 은 게임 개발 포 레버 www . gamedevforever . com 의 기획 카테고리 에 동시 연재 됩니다 . 
 태그 : 객체 지향 , 추상 화 , 시스템 기획 
 트랙백 ( 0 ) 덧 글 ( 22 ) 
 storm 2012 / 01 / 02 18 : 13 # 답글 
 이 글 은 오늘 늦 은 밤 에 나머지 내용 이 채워질 예정 입니다 . 
 mistforg 2012 / 01 / 02 19 : 53 # 삭제 답글 
 늦 은 밤 에 와서 확인 할 예정 입니다 ( >_<//) 
 mistfrog 2012 / 01 / 02 19 : 54 # 삭제 
 헉 ! 방심 하 고 뎃글 써 버렸 다 . 
 으악 ! 어찌 되 었 건 , 항상 잘 보 고 있 습니다 . 감사 합니다 . 굽신굽신 ( __) 
 storm 2012 / 01 / 02 22 : 48 # 
 ' ㅅ '/ 이제 다시 쓰 는 중 에 요 
 미친 고양이 2012 / 01 / 02 20 : 23 # 답글 
 하악 , 절묘 한 절단 신공 이 다 . 
 storm 2012 / 01 / 02 22 : 49 # 
 적절 한 절단 
 마이 즈 2012 / 01 / 02 21 : 16 # 답글 
 [ 글 등록 ] 이 실수 가 아니 라는 데 에 캔 커피 한 개 겁니다 ! 
 [ 미리 보 기 ] 누르 다가 잘못 눌러 써 용 
 mistfrog 2012 / 01 / 03 01 : 07 # 삭제 답글 
 감사 합니다 ! 올해 도 ! 건강 하 시 고 좋 은 일 가득 하 시 길 ! 
 아트리아 2012 / 01 / 04 22 : 21 # 삭제 답글 
 묶 는다는 것 을 . . 
 수치 만 변경 해서 다른 것 으로 바꿀 수 있 게 묶 는다는 의미 인 건가 여 ? 
 이해 하 기 는 어려워 도 다른 공부 들 도 하 다 보 면 이해 가 될까 여 ? ㅎㅎ . .. 
 storm 2012 / 01 / 04 23 : 38 # 
 추상 화 는 정답 이 정해져 있 는 문제 가 아닙니다 . 
 해당 시스템 의 용도 , 향후 확장 가능 성 등 에 따라서 접근 방법 이 달라지 거든요 . 
 그러니까 일단 자신 의 생각 대로 묶 어 보 는 연습 부터 해 보 세요 . 
 그런 연습 없이 이론 만 보 면 ' 암기 ' 만 되 고 ' 이해 ' 가 안 됩니다 . 
 저 도 지금 수준 까지 이해 하 는데 몇 년 이 걸렸 지요 . 
 ipkn 2012 / 01 / 13 00 : 49 # 삭제 답글 
 게임 프로그래머 입니다 . 좋 은 글 이 네요 : ) 학교 에 있 을 때 도 프로그래밍 은 추상화 의 학문 이 라고 얘기 하 시 던 분 이 있 었 죠 . 
 과일 소주 2012 / 01 / 22 17 : 59 # 삭제 답글 
 월드 에디터 를 추상화 의 결과 로 볼 수 있 군요 . 
 storm 2012 / 01 / 22 20 : 49 # 
 오브젝트 에디터 만 잘 살펴봐도 게임 Entity 들 의 추상화 를 역추적 할 수 있 죠 . 
 Cheese 2012 / 02 / 17 01 : 19 # 삭제 답글 
 지금 까지 글 을 쭈욱 일 어 보 고 나 서 느낀 것 은 카테고리 형식 의 거꾸로 라는 느낌 이 맞 는 걸까요 ? 
 storm 2012 / 02 / 17 08 : 59 # 
 sstorm 74 @ 네이버 닷컴 입니다 
 루트 쉽 2012 / 02 / 24 18 : 43 # 답글 
 스톰 님 제 가 작년 부터 스톰 님 이글루스 에 들리 면서 기획 자 꿈 을 키웠 습니다 . 
 지금 현재 꿈 을 꾸 는 중 입니다 항상 감사 합니다 
 - 사무실 안 에서 
 storm 2012 / 02 / 27 08 : 54 # 
 오호 현업 에 입성 하 셨 나 보 군요 . 
 계속 초심 처럼 열심히 하 셔서 좋 은 기획 자 가 되 시 기 를 ' ㅅ '/ 
 starman 2013 / 03 / 08 14 : 03 # 삭제 답글 
 항상 스톰 님 글 잘 보 고 있 는 시스템 기획 지망 생 입니다 . 
 시스템 역기 획 서 를 작성 하 면서 스톰 님 글 이 정말 큰 도움 되 네요 . 
 하지만 어려운 부분 이 많이 있 어 시스템 역기 획 서 를 작성 이 쉽 지 않 네요 . 
 혹시 따로 메일 을 통해서 질문 이 가능 한가요 ? 
 storm 2013 / 03 / 09 00 : 00 # 
 궁금 한 거 있 으시 면 메일 로 보내 주 세요 
 개머리 국밥 2015 / 01 / 18 22 : 24 # 답글 
 아하 , , 파이어볼 , 아이스 볼 이런 식 으로 하 면 아예 각 스킬 을 코딩 해야 하 고 
 캐스팅 스킬 , 단일 스킬 , 광역 스킬 이런 식 으로 하 면 두 가지 가 섞이 는 경우 나 변수 가 있 을 때 다시 코딩 해야 한다는 거 군요 
 그래서 아예 스킬 그림 , 래 벨 , 시전 거리 , 캐스팅 등등 으로 나누 어 유 , 무 를 따지 거나 하 는 식 으로 모든 스킬 을 유동 성 있 게 묶 어 버리 는 것 이 라고 이해 했 는데 
 맞 습니까 ? ?.. 
 그런데 만약 버 서 크 모드 라던 가 에 돌입 해서 A 스킬 이 A + 스킬 로 바뀌 는 경우 에 는 어떻게 해야 하 는 건가요 ? ?.. 
 storm 2015 / 01 / 19 19 : 58 # 
 뭐 꼭 만드 는데 단 하나 의 방법 만 있 는 것 은 아닙니다 . 예 를 들 어 스킬 이 딱 열 몇 가지 이내 로 만 등장 하 는 게임 과 수백 가지 가 나올 수 있 는 게임 과 는 만드 는 방식 이 다를 수 있 구요 . 캐릭터 의 스킬 을 몬스터 도 사용 할 수 있 느냐 하 는 것 도 영향 을 미칩니다 . 
 ' 버 서크 모드 ' 의 경우 실제 구현 은 크 게 보 면 이런 식 이 면 됩니다 . 
 클라이언트 처리 : 버 서크 시전 동작 , 이펙트 효과 등등 처리 ~~~ 
 서버 처리 : 버 서 크 상태 에서 적용 되 는 능력 치 를 캐릭터 에게 적용 함 . 
 즉 , 웬만 한 것 들 은 ' 버프 ' 와 같 은 체계 로 구현 할 수 있 습니다 . 화면 에 보여 주 는 방식 에 따라서 유저 는 각각 다르 게 받아들이 지만 요 . 
 버 서 크 상태 에서 만 사용 가능 한 스킬 이 추가 되 는 경우 
 클라이언트 : 버 서크 시전 이 성공 하 면 스킬 바 에 버 서 크 전용 스킬 아이콘 활성 화 
 서버 처리 : 버 서크 전용 스킬 을 시전 할 경우 사용 한 유저 가 버 서 크 모드 인지 를 체크 한 후 스킬 시전 여부 판정 
 다음 글 : 게임 회사 의 회계 이야기 ( 1 ) - 누구 에게 나 회계 는 있 다 
 이전 글 : 2011 년 내 이 글 루 결산 
 이 얘기 는 누가 지어낸 도시 전설 입니다 . 사실 이 아니 예요 . by 없 음 1 / 2 
 510495 
 시 게루 횽지못미 예산 이 크 고 아름다워 시스템 기획 이러 다가 스톰 의 게임 회계 연구실 되거 따 훗 그래야 개발자 답지 NDC 게임 회사 회계 내이 글 루 결산 예산 계획 스타트업 믹 마 2 GDC 2012 믹스 마스터 재무관리 닌텐도 아이디어 창조 기술 ndc 12 추상화 헨치 오로라 게임즈 창업 사 장실 로 텨 오 세요 저 도 GDC 보내 주 세요 평균 연봉 객체 지향 파이널 테스트 게임 회사 의 회계 이야기 디아블로 3 언제나 오냐 회계 같 은 걸 끼얹 나 재무제표