게임기획자는 프로그래밍 공부를 얼만큼 어떻게 해야 하나 (5) by storm

지난 포스팅에 이어 '추상화'와 '모델링' 이야기를 이어가 봅시다.


(프로그래밍에서 말하는) 모델링이란?

앞에 '프로그래밍에서 말하는 모델링'이라는 단서를 붙였다시피, 지금 말하고자하는 모델링(modeling)이란 용어의 의미는 3D 그래픽에서 사용하는 모델링과는 다른 의미입니다. 쉽게 말하면 모델링은 '어떤 대상을 목적과 필요에 따라 다루기 쉽게 단순화하는 것'을 뜻하죠. 그렇다면 목적과 필요에 따라 다루기 쉽게 단순화한다는 게 도대체 무엇을 말하는 것일까요?

예를 들면, 우리가 흔히 볼 수 있는 지하철 노선도는 지하철의 각 노선별 경로가 모델링된 것입니다. 만약 우리가 수도권 지하철을 타는데 아래와 같이 단순화된 노선도가 아닌 '전국관광지도' 같은 것을 봐야 한다면 얼마나 필요한 정보를 찾는데 시간도 오래 걸리고 불편할까요. 하지만 노선도는 불필요한 정보를 빼는 대신 각 노선을 색상으로 구분하고, 역은 동그라미로 표현하는 식으로 모델링하여 지하철 이용객들이 필요한 정보를 쉽고 빠르게 찾아볼 수 있게 한 것입니다.

(지하철 노선도는 우리가 가장 흔하게 접할 수 있는 모델링된 정보)


따라서 '모델링'을 잘 하려면, 모델링된 정보를 볼 사람이 어떤 정보를 원하는지를 파악해서, 그 정보를 쉽게 이해할 수 있도록 정보를 단순화시킬 필요가 있습니다.

그러면, 전편에서 살펴보았던 스킬 시스템을 놓고 생각해봅시다. 일단 스킬 시스템을 1차적으로 모델링하면 아래와 같은 식의 다이어그램으로 표현할 수 있을 것입니다. (다른 형태로 할 수도 있지만 일단은 이렇게 갑시다)

만약 스킬 시스템을 이런식으로 모델링했다면 [시전 가능여부 판단] 영역에는 스킬의 사용조건, 즉 시전자의 마나량이나 시야, 위치, 대상과의 거리를 체크하는 처리들이 포함되겠죠. 그리고 [시전 행동 처리] 영역에는 스킬에 맞는 시전 동작, 필요한 이펙트, 시전 동작 애니메이션, 발사체 생성 등과 같은 처리가 들어갈 것이고, 마지막으로 [시전 이후의 처리]에서는 스킬이 시전된 이후이므로, 스킬의 대상에게 스킬의 효과를 주는 처리와 시전자로의 마나를 줄이고 해당 스킬의 쿨타임을 돌리는 등의 처리가 들어갈 것입니다.

뭐 얼핏보면 그럴듯(!)해보이죠. 아마 초보 기획자분들은 '오~ 이렇게 보니까 뭐 순서도보다 더 간단하네. 생각보다 쉽잖아!'라고 생각하겠지만, 사실 스킬 시스템의 모델링이란 게 이렇게 쉽게 끝날일이면 예로 들지도 않았을 것이고 굳이 이렇게 애써서 설명하지도 않을 겁니다. 사실은 이제부터 진짜 시작인 것이죠.

만약 게임의 모든 스킬이 WoW의 화염구 따위와 같이 단순한 형식이라면, 기초 모델링은 위와 같은 수준으로도 충분할 겁니다. 하지만 그렇게 단순하지 않기 때문에 문제가 복잡해지는 겁니다.

예를 들어, WoW나 워크래프트3에 등장하는 눈보라(blizzard)와 같은 소위 말하는 '채널링 스킬'은 위와 같은 식으로 처리하는 것이 불가능합니다. 왜냐면 이런 스킬은 시전 가능여부를 판단한 뒤에 시전 행동과 시전후의 처리를 순서대로 한 번만 하고 끝나는 게 아니라, 시전 행동을 일정 시간 동안 유지하면서 주기적으로 시전 후의 처리가 발생하기 때문입니다.


따라서 이점을 감안한다면, 위에서 만든 [모델링 예시 1]은 아래에 있는 [모델링 예시 2]와 같이 수정할 필요가 있습니다. 무엇이 바뀌었냐구요? 맨 마지막이 '시전 이후의 처리'에서 '시전 행동의 결과 처리'로 바뀌었습니다. 뭐 별차이 없는 말장난이 아니냐고 생각할 수 있지만, 예시1이 단순히 시간 흐름에 따라 처리해야 할 작업을 구분한 것이라고 한다면, 예시2는 '인과관계'에 따라 구분했다고 보면 됩니다.

즉, 예시1과 같은 모델링은 시전행동을 처리하고 나면 무조건 시전 이후의 처리를 하고 그 스킬과 관련된 처리가 종료되는 개념이지만, 예시2와 같은 모델링은 시전 행동이 5가지이면, 시전 행동의 결과처리도 5가지라고 생각할 수 있는 것이죠. 게다가 '시간의 흐름'을 따른 것이 아니라 '인과관계'에 따라 나눈 것이므로, 시전 행동의 결과에 따라서는 이전 단계로 다시 되돌아갈 수도 있는 여지가 생긴 것입니다.

예를 들어, 여러분이 '간지나는 화염연발'이라는 마법을 기획한다고 칩시다. 이 마법은 채널링 스킬이라서, 한 번 시전을 하면 캐스팅 타임 5초 동안 매초마다 1회씩 총 다섯 번의 화염구를 날리는데, 그 다섯번 중 3회 이상 크리티컬이 터지면 마나 소모 없이 스킬의 시전이 한 번 더 반복됩니다. 이런식의 스킬은 [모델링 예시 1]과 같이 시간흐름에 따른 순서도 스타일로 시스템을 기획할 경우에는 제대로 처리하기가 곤란해집니다. (차마 불가능하다고는 말 할 수 없지만... 매우 비효율적이고 예외처리에 취약한 설계가 됩니다)

하지만 예시2와 같이 설계를 하면, 해당 스킬의 행동처리를 5번 반복 하면서 매 회마다 [시전 행동의 결과처리] 영역에서 크리티컬이 3회 이상 발동했는지를 체크한 다음, 조건이 맞으면, [시전 가능여부 판단] 영역에 한 번 더 시전 가능여부를 판단하라고 명령을 보내면 그만입니다. 아래의 [모델링 예시 3]을 보면 이해가 더 쉬울 것입니다.


자 이렇게 설명하면, 모델링 예시1과 예시3의 차이점을 이해할 수 있을 것입니다. [모델링 예시1]은 '순서'를 기준으로 구분한 것으로, 엄밀히 말하면 단지 순서도를 단순화시켜서 표현한 것에 지나지 않습니다. 하지만 요즘 게임의 시스템은 순서도로 표현하기에는 너무 복잡하고 예외상황도 많기 때문에, 순서도로 설명할 수 있는 시스템은 그리 많지 않습니다.

반면에 [모델링 예시 3]은 '순서'에 중점을 둔 것이 아니라, '관계'에 중점을 두었습니다. 그래서 시전 행동 처리와 그 결과의 처리가 서로 반복될 수도 있고, 일정 조건이 되면 다시 시전을 처음부터 다시 시작할 수도 있는 것이죠.

더 많은 이야기를 쓰고 싶지만, 또 출근을 위해 잠자리에 들어야 하기에 이번에는 여기까지만 하고, 다음 포스팅에서는 보다 본격적인 이해를 돕기 위해 모델링과 추상화(abstraction)에 대한 다른 예를 들어볼까 합니다.

to be continuded...

덧글

  • 세이지준 2011/09/26 00:37 # 삭제 답글

    던파 생각도 좀 나겠지만요
    챠징 , 조준 , 탑승 , 변신 , 잡기 , 거리조절 , 변환 , 지속타격 등등 처리할려면은... OTL

    그래도 노력은 하니깐 못하는건 없겠죠;;;;
  • 신기군 2011/10/01 00:20 # 삭제 답글

    정말 좋네요 ㅜㅜ 그리고 이런 좋은 강의를 올려주시는 거에 대해 정말로 감사하다는 말 밖에는..

    제 자신에 대해서 한 번 더 돌아보게끔 합니다 ㅜㅜ
  • 길고양이 2011/10/09 22:14 # 답글

    처음보고 어렵다포기! 했다가 다시 정독했어요. 다른 예시도 보고싶네요..( ^^)/
  • 템페스트 2011/10/31 20:14 # 삭제 답글

    스톰님 덕분에 조금씩 마음의 안개가 걷혀가는 느낌입니다.

    요즘 C언어도 조금씩 배우고있고, 습작 기획서도 써보면서 고입준비까지 하려니 벅차지만,

    그래도 목적지이자 출발지점을 알고있으니 기쁜 마음으로 시간을 보내고 있습니다.

    언제한번 동인 팀을 꾸려서 수험생되기전에 자랑스러운 경력과 추억을 싿는게 제 일차목표(ㅋㅋ)구요

    언제나 화이팅 먹으시기 바랍니다!
  • tomato 2012/01/12 19:39 # 삭제 답글

    기획의 길이 쉽지 않다는 것은 알고 있었지만...강의를 보니 앞길이 깜깜해보이기만 하네요.. ㅠㅠ
  • storm 2012/01/13 13:36 #

    쉬운것부터 하나씩 해나가시면 됩니다.
  • hia 2013/04/12 08:46 # 삭제 답글

    1부터 읽고있습니다만 정말 좋읗것 같습니다.
댓글 입력 영역



통계 위젯 (화이트)

2917
177
502137