[실전 시스템기획] 2.시스템 요구사항과 객체 by storm

지난 포스팅에서는 시스템을 정의하는 법에 대해서 알아보았다. 다시 정리하자면 시스템 기획의 첫걸음은 만들어야 할 시스템이 정확하게 무엇인지를 규정하는 것이다. 전편을 읽어보았다면 시스템을 정의하는 것이 생각보다 어렵다고 느꼈을 것이다. 그것이 왜 어렵냐면 여러분들이 그런 정의를 내리는 훈련을 해본 적이 없기 때문이다. 그래서 앞으로 본 포스팅 시리즈물은 여러분들이 체계적인 시스템 기획을 위해서 무엇을 어떻게 훈련해야 할지에 대해서 이야기할 것이다.

그러면 전편에 이어서 인스턴스 던전 시스템을 계속 기획해보자. 인스턴스 던전의 정의는 특정 플레이어나 플레이어의 파티에게 독점적으로 생성되어 제공되는 던전(의 인스턴스)이다. 이렇게 정의를 내린 이후에는 도대체, 하물며, 그럼에도 불구하고 무엇을 해야 할까?

사실 시스템을 정의하는 것은 프로그램 개발 프로세스로 따지면 ‘개발해야 할 시스템을 이해하는 단계’와 마찬가지이다. 즉 시스템이 구체적으로 무엇인지 규정하는 일은 그 시스템을 통한 최종 결과물(인스턴스 던전)이 기본적으로 어떤 기능을 해야 할지를 사전에 이해하기 위한 과정인 셈이다. 결과물을 구체적이고 정확하게 상상할 수 있어야만 그것을 제대로 만들어낼 수 있지 않겠는가!


시스템의 요구사항 정리
시스템의 정의를 내려서 개발해야 할 시스템을 이해했다면, 이제는 그 이해를 바탕으로 시스템의 요구사항을 정리하는 단계에 들어선다. 시스템에 있어서 요구사항이란, 다른 말로 바꾸면, 그 시스템이 해야 할 일을 뜻한다. 그렇다면 인스턴스 던전 시스템은 어떤 일을 해야 할까? 기본적으로 다음과 같은 일을 해야 할 것이다.

  • 인던을 생성하고 제거할 수 있어야 한다.
  • 플레이어가 인던에 입장을 시도하면 그 플레이어에게 적합한 인던으로 보내야 한다.
  • 플레이어가 인던에서 퇴장을 시도하면 출구로 내보내야 한다.
  • 인던에 있어서는 안 되는 플레이어를 강제로 퇴장시켜야 한다.

일반적인 인스턴스 던전(WoW로 치면 공격대용이 아닌 평범한 5인용 던전)이라면 일단 위와 같은 요구사항으로 정리될 수 있겠다.



요구사항을 수행할 객체는?
시스템의 요구사항을 정리했다면, 다음은 정리된 요구사항을 기반으로 필요한 객체(object)가 어떤 것들이 있는지를 알아볼 차례다. 엇? 갑자기 객체라니? 의사 양반, 이게 무슨 소리요? 객체라니! (내가) 객체라니!!! (내가) 객체라니~이!!!

사실 지난 주말에 처음 시스템 기획과 콘텐츠 기획의 차이에 대한 글을 작성할 때만 해도 하루만에 객체지향이 어쩌구 하는 글을 쓸 줄은 상상도 못했다. 하지만 이왕 시작한 김에 게임기획 가이드 시즌2에서 다루려고 했던 ‘객체지향적 시스템 기획’ 이야기를 여기서 좀 풀어볼까 한다.

객체지향에 대해서 전혀 아는 바가 없는 사람들에게는 객체라는 말보다 오브젝트라는 용어가 더 쉽게 와닿을 것이다. 객체를 객체라고 하든 오브젝트라고 하든 그 자체는 별 문제가 없는데 진짜 문제는 일반인들이 객체라고 인식하는 것과 객체지향에서 말하는 객체에는 꽤 큰 차이가 있다는 사실이다.

다른 예를 들 것 없이, 지금 이야기하고 있는 인스턴스던전 시스템에 필요한 객체들을 한 번 생각해보자. 인던 시스템의 부속물은 아니지만 일단 플레이어 캐릭터라는 객체가 필요하다. 누군가는 인던에 입장을 해야 인던 시스템이 의미가 있는 것이니까. 그다음엔 무엇이 필요할까? Warcraft III 에디터라도 만져본 사람이라면 '던전 출입구'가 필요하다는 생각을 쉽게 떠올릴 수 있을 것이다. 물론 실제로 인스턴스 던전을 구현하려면 던전 내부에 들어갈 구조물이나 몬스터, NPC 등도 필요한 객체의 일부다. 하지만 이런 것들까지 언급하면 너무 수가 많아지니까 레벨 디자인 영역은 제외하고 순수하게 인스턴스 던전 시스템 자체, 즉 바로 위에서 언급한 '시스템의 요구사항'에 필수적인 객체만 생각하자.

아마도 대부분의 (초보 또는 지망생) 기획자들이 여기서 딱 막힐 것이다. 왜냐, 눈에 보이는 객체는 이게 전부이기 때문이다. 하지만 시스템에는 눈에 보이지 않는 객체, 즉 게임 화면에 나타나지 않는 객체들이 있다는 사실을 알아야 하며, 이렇게 보이지 않는 객체가 무엇인지를 잘 짚어내는 것이 객체지향적인 프로그래밍으로 게임을 개발하고 있는 요즘 세상에서 유능한 시스템 기획자가 되는 비결이다.

자 그러면 여러분들이 직접 인던시스템 구현에 필요한 객체와 그 객체들이 하는 일(기능)이 무엇인지 고민해보라. 이미 바로 앞에서 언급한 던전 출입구는 어떤 일을 하고, 아직 언급되지 않은 다른 객체는 무엇을 해야 할지 찾아내야 한다. 힌트는 위에서 이야기한 시스템의 요구사항이다. 저 요구사항을 각각의 객체들이 어떻게 분담해야 할지 생각하면 답이 나올 것이다.

To be continued...


덧글

  • 저승토끼 2010/08/03 00:45 # 삭제 답글

    오늘도 퍼갑니다^---^
    어찌 오늘은 좀 어렵군요... 객체는 머가 있을라나...
    이미 클리어한 인던인가하는 정보?
    파티원 중 이미 해당 던전을 클리어 한 사람이 있는가?(wow경우..?)
    음.. 어렵다;;
  • storm 2010/08/03 11:07 #

    후후 고민 좀 해보세요 :)
  • AV! 2010/08/03 07:44 # 삭제 답글

    오늘도 좋은 글이네요 그동안 참고문서들을 보고, 또 직접 체험한 것이 정리되어가는 느낌이에요 ㅎ
  • storm 2010/08/03 11:07 # 답글

    (고블린 말투) 헤헤! 도움이 됐다니 다행이야!
  • 코르닉스 2010/08/04 03:34 # 삭제 답글

    1번문제는 쉽게 풀었는데...2번에서 난이도 급상승;;
    흠..막막혀라~.
  • storm 2010/08/04 14:27 #

    첨엔 다 그렇습니다
  • 화이트로리 2010/08/05 11:53 # 삭제 답글

    항상 좋은글 감사합니다.
    계속 보기만 하다가 왠지 찔리는 마음에 댓글 살짝 남겨봐요^-^
  • storm 2010/08/05 13:58 #

    감사감사 :)
  • 코르닉스 2010/08/09 00:48 # 삭제 답글

    공장에서 계속 보고 생각 중입니다.

    아는게 없다보니, 맵 에디터를 기준으로 삼고 있는데 그게 편견에 사로잡힌 것 같네요.
    보이지는 않지만 반드시 맵 상에 존재는 해야하는건지...UI도 오브젝트라고 볼 수 있는건지 고민입니다.
  • storm 2010/08/09 10:41 #

    그 고민이 개념을 익히는데 큰 도움이 됩니다 :)
  • 너에게로 2010/11/03 11:21 # 답글


    시스템기획공부할려다가 왜라는 질문에

    쉽게 떠날수 없어 답을알기위해 글을쓰내요 :)

    객체라..필요한객체는 흠.. 캐릭터, 캐릭터의 클리어 인지, 캐릭터의 조건

    인던의 몬스터,오브젝트등...이라고 생각은드내요..틀리겟지만 ㅠㅠ

    하는일이라..흠.. 레벨디자인에 따른 클리어 방법이틀려지고 배치에따라

    변수가 생기니 흠...ㅠㅠ 머리가 아프냉 ㅠ
  • 업스 2010/11/03 13:03 # 삭제 답글

    OOP에서 객체(오브젝트)와 인스턴스는 같은 뜻으로 사용합니다.

    즉, 오브젝트는 실제화된 어떤 것이라 할 수 있지요.

    (제가 지금 두드리고 있는 '저의 자판'은 키보드의 인스턴스이며 오브젝트죠.)

    결국 플레이어가 경험할 수 있는 모든 것이 오브젝트라고 할 수 있습니다.

    (경험이란 것에 대한 정의도 내려야 하는 것인가... OTL)
  • 헤리언 2012/06/18 23:23 # 삭제 답글

    던전안의 스위치나 트리거? 또한객체라고하나?
  • storm 2012/06/21 22:19 #

    레벨 디자인에서는 그런 것들도 객체(object)입니다.
  • 슭꼼 2013/04/05 17:08 # 답글

    인던 생성할때 각 인던의 고유 번호를 매겨주는 객체, 던전 입구에 들어섰을때 던전에 들여주는 객체,
    던전 플레이 도중이나, 클리어 후 다시 던전 출구(입구)로 내보내는 객체, 허락되지 않은 객체를 쫓아내는 객체... 이렇게 일까요..???
  • 슭꼼 2013/04/05 17:08 #

    이건 함수 아닌가 @_@?
  • storm 2013/04/05 17:34 #

    객체라는 게 결국 여러개의 함수와 여러개의 데이터 조합 입니다.
  • 슭꼼 2013/04/05 17:49 #

    그런데요 시스템 실전기획은 2에서 끝인가요?? 왠지 더 있을것 같은데...
    저 문제에 대한 답도 아직 확인 못했고 이래저래 아쉬운...
댓글 입력 영역



통계 위젯 (화이트)

3017
177
502138