[실전 시스템기획] 1.시스템을 정의하라 by storm

주말에 별 생각 없이 올렸던 시스템 기획과 콘텐츠 기획의 차이라는 포스팅이 예상 밖의 열화와 같은 성원(?)을 받아 이에 부응하고자 본격적으로 시스템 기획과 콘텐츠 기획의 기본에 대한 가이드를 올려보고자 한다. ▶ 이전 포스팅 보기: http://sstorm.egloos.com/5321192

만약 여러분이 신규 MMORPG의 시스템 기획을 맡았는데, 상부에서(아마도 기획팀장이나 메인 시스템 기획자일 것이다) 인스턴스 던전 시스템을 기획해보라는 지령이 떨어졌다고 가정하자. 과연 어디서부터 시작해야 할까?

"아, 그거 있잖아요~ WoW 인던처럼... 그러니까, 음...
파티별로 던전 생성되고... 그렇게 만들어주세요"

아마도 대부분의 지망생 및 초급 기획자들은 위와 같은 심정일 것이다. 초보야 초보니까 괜찮지만, 짬이 좀 되는 분들이 위 수준이라면....그게 사실이라면 좀 무섭군요...;

위의 경우보다 조금 나은 수준은 보통 이렇다.

"인스턴스 던전 시스템이란 파티별로 던전이 별도로 생성되는 시스템으로
인던에 입장하면 각각 동일한 던전 구성이지만 파티단위로 독립된 공간이 제공되어... 어쩌구 저쩌구...

이것도 말만 길어졌을 뿐이지, 개발팀의 프로그래머들이나 인스턴스 던전을 한 번도 경험해보지 못한 이들이 봤을 때는 결국 'WoW 인던 처럼 만들어주세요' 수준과 크게 다를 바가 없다.

반면에 실무에서 만날 수 있는 그래도 수준 높은 시스템 기획자들의 경우에는 일단 순서도(flowchart)를 그리면서 시스템을 설명하는 경향이 있다. 그러나 나는 개인적으로 기획서에다 순서도를 남발하는 것을 선호하지 않는다. 순서도만으로 명쾌하게 설명될 수 있는 시스템은 그리 많지도 않고 '개인적인 경험상' 요즘 프로그래머들은 순서도조차도 그리 좋아하지 않는다.

그렇다면 시스템 기획을 어떻게 시작해야 할까? 가장 우선적으로 해야 할 일은 그 시스템을 명확하게 정의하는 것이다. 하지만 불행하게도 대부분의 (초급)기획자들이 자기가 실컷 즐겨본 게임의 시스템조차도 명확하게 정의하지 못한다. 여러분은 WoW의 인스턴스 던전을 수십 번 이상 들락거려 봤는가? 그랬다면 WoW의 인스턴스 던전 시스템을 정의할 수 있는가? 아마도 99.3% 정도는 하지 못할 것이다.

자 그러면 한 번 인스턴스 던전이란 게 도대체 무엇인지 정의를 내려보자. 영어권 웹사이트에 나오는 '사전적 정의'를 보면...

In MMORPGs an instance of a given dungeon generated exclusively for a specific player or party of players; contrast to the overworld, shared by all players on the server. 라고 설명하고 있다. 우리말로 바꾸면, '인스턴스 던전이란, 서버에 있는 모든 유저들이 공유하는 전체 월드(일반 필드)와는 달리, 특정 플레이어나 플레이어들의 파티에게 독점적으로 생성되어 제공되는 던전의 인스턴스다.' 쯤 된다.

단, 여기서 주의할 것이 WoW에서는 인스턴트(instant)가 아닌 인스턴스(instance)라는 단어를 사용한다는 사실이다. 여기서 말하는 인스턴스가 객체지향 프로그래밍에서 말하는 인스턴스라는 용어, 즉 클래스를 통해 생성된 최종적인 결과물로서의 객체... (아 어쩌다보니 시스템 기획 가이드가 아니라 프로그래밍 개념 강의가...ㅜ.ㅜ) 그러니까, 에... 음...어...시, 실제로(서버의)메모리 공간을 점유하는 (게임상의) 실체라는 의미로 받아들여야 한다.

여러분이 객체지향에 대해서 잘 몰라서 인스턴스의 개념을 이해하기 어렵다면, 그냥 인스턴트 던전(instant dungeon)으로 이해해도 무방하다. 인스턴트 던전이라고 하면, 말 그대로 던전이 영구적으로 존재하는 것이 아니라 필요에 따라 '즉석으로 생성되어 제공되는 던전'인 셈이다.

어쨌거나 여기서 중요한 포인트는 인스턴스 던전이 특정 플레이어나 플레이어들의 파티에게 독점적으로 생성되어 제공되어야 한다는 사실이다. 즉 파티가 다르면 같은 던전 입구로 입장해도 공간 구조 및 내부 구성만 동일할 뿐 같이 있어서는 안 된다는 얘기다. 이 부분은 WoW와 같이 인던이 제공되는 게임을 해본 사람이라면 무슨 말인지 이해할 것이다.

그러나 문제는 여러분이 이해한다고 되는 것이 아니라 여러분과 함께 게임을 만들 다른 기획자와 개발팀의 다른 멤버들도 이해해야 한다는 점이다. 여러분 스스로도 정의내리기 곤란한 이놈을 어떻게 다른 이들이게 정확하게 전달해서 이해시킬 수 있을까? 고민 되지만 바로 이것이 기획자들에게 필수 능력인 커뮤니케이션 능력이기도 하다.

자, 그러면 본론으로 돌아와서, 인스턴스 던전 시스템을 정의해보자. 핵심은 특정 플레이어나 플레이어들의 파티에게 독점적으로 생성되어 제공된다는 점이다. 간추리면, 특정 인원과 (생성된)특정 인던이 독점적으로 연결되어야 한다. 즉 특정 인원과 특정 던전을 연결하는 연결고리가 필요하다는 결론이 나온다. 도대체 무엇으로 독점적인 연결이 가능할까?

앞선 포스팅에서 '소프트웨어는 알고리즘과 데이터의 조합'이라는 말을 인용한 바 있다. 여기에 정답이 숨어 있는데, 인던이 생성될 때 고유번호를 매기게 하고, 그 고유번호를 특정 인원과 연결하면 된다. 즉 여기서 필요한 데이터는 '(인던의 주인격인)특정인원을 지정하는 값''인던의 고유번호'이고 알고리즘은 '인던이 생성될 때 고유번호를 매겨 특정인원과 연결'하는 것이다.

예를 들어, 플레이어 고유ID값이 20941번인 플레이어가 인던에 입장해서 그 인던이 생성될 때 인던 고유번호 186번을 지정해놓으면, 186번 인던은 20941번 플레이어에만 독점적으로 제공할 수 있다.

자, 그러면 2명 이상의 플레이어가 파티를 맺은 상태에서 입장하는 경우, 그리고 인던 플레이 도중에 파티원이 교체되는 경우 등 예외 상황에서는 어떻게 해야 할까? 필자가 내일의 출근을 위해 잠자리에 들어야 하므로 이 문제는 지금까지의 포스팅 내용을 토대로 여러분이 한 번 고민해보자.

To be continued...


덧글

  • 김윤정 2010/07/27 08:52 # 답글

    역시 훌륭하신 글 T_T 알고 있는 것을 이렇게 차분하게 정리할 수 있는 스킬이야말로 기획자의 기본 소양이라고 생각합니다.
  • storm 2010/07/27 10:16 #

    그렇게 차분하게 정리했다고는 생각하지 않지만... 감사합니다 :)
  • AV! 2010/07/27 09:33 # 삭제 답글

    아........정말, 좋은말씀감사합니다. 오늘도 프린트 꾸욱!
  • storm 2010/07/27 10:16 #

    열심히 하셔서 좋은 기획자가 되시길
  • 레아라 2010/07/27 09:44 # 답글

    와아..... 굉장하네요.... 정말로 알기 쉬워요.....
    기획자의 말 한마디가 변함으로써 이렇게 바뀔줄이야...... -ㅂ-

    내가 신입만 아니었어도 우리 기획자에게도 이것좀 봐라 하고 싶은데 말이죠.. OTL
  • storm 2010/07/27 10:17 #

    경력을 쌓으셔서 메인이나 팀장이 되셨을 때라도 늦지 않을 겁니다 :)
  • 저승토끼 2010/07/27 11:22 # 삭제 답글

    개념적인 이해가 쉽네요~

    마지막의 2인 이상의 플레이어 A 던전에 입장하는 것에 대한 문제는..
    100번 101번 플레이어를 999번이 라는 번호 인덱스로 그룹으로 지정 후에
    A던전을 999번에게 공유하면 되는걸까요??

    그러면 999번 그룹에서 이탈하고 신규로 생성되는 유저는 그룹을 대상으로
    지정하면 자동으로 A던전을 동일한 형태로 사용할 수 있게 될거 같은데-ㅅ-;

    이게 맞을라나??

    그리고 지난번 포스팅이랑 이번 시스템 포스팅 좀 가져가도 될까요?
    앞으로 자주 두고두고 보면 좋을 것 같은데..
  • storm 2010/07/27 11:39 #

    포스팅 퍼가기는 자유입니다^^
  • 모기자 2010/07/27 11:40 # 답글

    체크포스트로 걸어놓고 보겠습니다 ㅎㅎ
  • storm 2010/07/27 15:15 #

    넵 :)
  • GKI_ 2010/07/27 11:48 # 답글

    2인 이상이라면.. 파티 개념이니까 파티 ID와 인던 ID를 연결하면 되겠네요. 그 파티와 개별 캐릭터를 연결하면 되겠고.. 다음 것도 기대하겠습니다.
  • storm 2010/07/27 15:15 #

    커밍쑨입니다
  • zeprid 2010/07/27 13:52 # 답글

    덧글로 와우의 경우를 정리해서 써보려다가 길어져서 패스;;;
  • storm 2010/07/27 15:15 #

    비겁한 변명입니다!!!
  • zeprid 2010/07/27 18:51 # 답글


    와우의 경우 / 인던ID - 캐릭터ID 별 귀속

    1. 인던의 생성 및 첫 입장
    1-1. 특정 캐릭터 입장시 해당 캐릭터와 귀속된 인던ID 가 없을 경우 새로운 인던ID 생성
    1-2. 이미 귀속되어 있을 경우 귀속되어 있는 인던ID로 입장

    2. 추가 입장
    2-1. 첫번째로 입장한 캐릭터 이외의 파티원은 인던 입장시 각 캐릭터가 이미 귀속된 인던ID가 없을 경우 먼저 입장한 사람에 의해 생성되거나 귀속되어 있는 인던ID 로 입장
    2-2. 파티원 캐릭터중 이미 귀속된 인던ID가 있을 경우 1-1의 경우와 같이 자신이 귀속되어 있는 인던 ID로 입장 (인던 갈림 현상)

    3. 귀속
    3-1. 새로 생성된 인던이 아닌 누군가 귀속되어 있는 인던에 귀속된적 없는 파티원이 입장했을 경우 일정시간동안 귀속경고문 뜸. (나감 선택시 인던밖으로 자동 추방, 옜날에는 바로 귀속되었다가 뒤늦게 귀속방지 기능이 패치되었죠.)
    3-2. 단 입장후 몬스터(잡몹까지 모두)를 잡는 행위에 동참(힐,딜 등)했을 경우 그순간 바로 귀속됨
    3-3. 귀속되는 던전(영던,공격대던전)의 경우 보통 보스(네임드몬스터) 처치시 해당 던전에 귀속, 귀속이 제거되는 시간까지는 해당 던전에 입장시 동일한 인던ID로 계속 입장하게 됨)

    4. 점유
    4-1. 캐릭터가 없던 인던에 먼저 입장해 인던을 점유한 파티에 속해있지 않은 사람은 해당 인던ID 에 입장 불가 (중복 파티의 동일 인던ID 입장시도에 대한 처리)
    4-2. 인던내에서 인던을 점유중인 파티에서 나갈 경우 일정시간내에 다시 해당 파티에 들어가지 않으면 인던에서 자동 추방
  • zeprid 2010/07/27 18:54 #

    위에 쓴 내용이외에도 한참 더 적어야 할 것 같은데 덥다고 회사일 제대로 못하고 있으면서 여기서 이런거나 적고있으면 월급도둑취급받게 될 것같아서 이만 줄입니다 ;;;;
  • zeprid 2010/07/27 18:58 #

    여튼 중요한 점은 와우에선 파티별 ID 관리 같은 것은 안한다고 봅니다. (철저히 인던ID 와 캐릭터ID 사이의 묶임처리에 선점 정도의 개념으로 중복된 파티의 입장을 제한하고 있지 않나 싶네요..)

    공대의 경우에도 선점한 공대내에 속해있지 않은 사람들은 약 2분후 튕기고 이미 해당 인던에 귀속된 사람들의 경우에도 최대 입장가능 인원 이상은 입장이 불가능합니다.
  • storm 2010/07/27 22:46 #

    잘 정리하셨네요. 다음 포스팅을 기대해주세요 :)
  • gump 2010/07/29 14:02 # 삭제 답글

    마치 제 글을 보는거 같아요 ....

    제가 글을 관련 내용으로 글을 풀어갔다면 저렇게 했을 거 같다는 뜻이예염 ㅋ
    근데 초기에 풀어가는 내용은 보면서도 와... 정말 나라도 이렇게 글 시작해서 예시 들었을 꺼 같은데
    라는 생각이 물씬...
    (혹 저테 영향 받으신건 아님? 캬캬캬캬 -_-;;; ㅈㅅ)
  • storm 2010/07/29 14:04 #

    검프님 아닌 거 같음. 너님 누구셈? 사칭하지 마세염
  • gump 2010/07/30 10:19 # 삭제

    쳇 님 못됐음
  • 레이지폭스 2010/07/29 23:44 # 답글

    아~ 오늘도 좋은 글 잘보았습니다. :)
    피가되고 살이되었어요~
  • storm 2010/07/30 00:09 #

    살이 포동포동 찌셨겠군요 :D
  • 업스 2010/11/03 12:16 # 삭제 답글

    짧은 지식이지만, 인스턴스를 간단하게 설명하자면...

    시장에서 사과를 5개 샀습니다.

    우리는 모두 '사과'로 부르지만, 실제 5개의 사과들은 각각 따로 존재합니다.

    그걸 내가 임의로 사과1, 사과2, 사과3, 사과4, 사과5라면, 이 5개는 '사과'의 인스턴스들입니다.

    사과라는 건 일종의 type이라고 생각하면 될 것 같네요.

    또 다른 예로, '사람'이라는 type이 있습니다.

    이 사람의 instance는 저, storm님, 그리고 이 글을 읽고 있는 당신... 모두가 '사람'이라는 type의 인스턴스인 것이지요.

    type의 실제화(realization)된 각각을 인스턴스라고 할 수 있습니다.

    '사람'은 실제하지 않습니다. 다만, 사람의 인스턴스만 실제할 뿐이지요.

    OOP(Oriented-Object Programming)에서는 이 type을 클래스라고 부른답니다.

    즉 와우에서의 던전 인스턴스 개념 역시...

    '놈리건'이라는 던전(type, class)이 있다면, 그것이 실제 게임으로 나타나는, 각 파티들이 경험하게 되는 놈리건 던전이 각각의 인스턴스인 것입니다.

    각각의 인스턴스는 고유ID로 구분이 되지요.
  • 업스 2010/11/03 12:18 # 삭제 답글

    반대로 말하면, 무수히 많은 인스턴스를 어떠한 공통점으로 그룹화(grouping)한 것이 type, class가 되겠지요.
  • 아즈가엘 2011/08/31 16:24 # 삭제 답글

    잘 봤습니다. 자주 와서 보고 있지만 아직도 많이 부족해서 난감한 부분이 많이 있네요 ㅠ.ㅜ 크헑;;
  • 예리한 2013/07/17 16:46 # 삭제 답글

    컴퓨터공학과 학생인데 아직 전공지식이 사실상 많이 부족한 게 사실인 실정입니다. 개인적으로는..
    물론 ^^; 어찌보면 핑계일수도 있지만 ㅎㅎ오..파티별 던전의 개념 자체는 알고있었지만
    인스턴스 던전이라는 말을 듣는 순간..'오...!!!! 파티별 던전이 저런 개념으로 만들어질 수 있구나!!!!'
    라는 지금까지 학교에서 배워왔던 전공쪽의 '개념'과 '실무'적인 부분이랄까요
    두 가지를 접목시켜 이해하게 되는 가장 좋은 부분이었습니다! 느낌표가 너무 많네요..하하 ㅋㅋ
댓글 입력 영역



통계 위젯 (화이트)

3827
192
500410