본문 바로가기

Game Dev.../게임만들기

원맨코더의 온라인 게임 만들기 (서문)

원맨코더의 온라인 게임 만들기

One-man Coder??

World Creating MMORPG

 

첫번째 문서 : 2004-02-03

작성자 : 신현묵

 

서문. 이 문서에 대해서(About this Document)

 

‘온라인 게임을 만든다’ 라는 하나의 문장을 만족하기 위하여 얼마나 많은 것을 준비하여야 하며 어떤 점들을 고민하고 어떻게 대처 하여야 하는가?

 

바로 이러한 질문에 대하여 긴 세월을 고민하였고, 실행에 옮길때마다 시행착오를 거치며 다양한 경험을 하게되었습니다. 아마도 진행하던 프로젝트가 성공적으로 이어졌다면 이 문서는 몇 년후에나 만들게 되었을 것입니다.

 

몇 가지 아쉬운 점은 있으나 이러한 연구와 준비를 통하여 느낀 점 들을 나름대로 문서로 정리할 필요가 있다고 생각을 하게 되었습니다.

 

제가 진행하던 이 온라인 게임 개발 프로젝트는 나름대로의 의미 있는 프로젝트이며 이렇게 진행하였던 프로젝트들을 다시금 커다란 하나의 틀을 중심으로 정리하고 하나의 문서로 만듦으로써 이러한 짧은 지식에 새로운 생명을 부여하고 이러한 길을 걷고자 하거나 혹은 관심있어하는 다른 후배 프로그래머 분들이 읽었을때에 도움이 되는 내용이 되었으면 합니다.

 

앞으로 만들어질 문서의 방향에 대하여 몇 가지 정의 하고 넘어가겠습니다.

 

0. 이 문서에서 나열되고 정의되는 개념들에 대하여

 

이 문서에 나열되고 정의되는 내용은 저자의 생각과 경험을 중심으로 서술됩니다. 당연히 틀린 점도 있고 좋게 이야기하면 독특한 점이고 나쁘게 이야기 하자면 별볼일 없는 내용일 수 있습니다.

 

하지만, 이 문서를 만드는 목적이 단순한 기술을 나열하는 것이 아니고 저자가 경험한 지식에 대한 나열을 하는 것이기 때문에 이러한 지식이 틀릴 수 도 있다는 점을 초반에 명확하게 이야기 하겠습니다.

 

1. 온라인 게임 개발과 자금

 

저는 온라인 게임 개발을 생각할 때에 몇 가지 오류를 범하고 이 개발 프로젝트에 참여하게 되었습니다. 특히나 회사의 자금 관련 부분이나 기타 정치적(?)인 부분은 이 책의 범주를 넘어가는 것이기 때문에 이러한 요소는 생략하도록 하겠습니다. 다만, 이러한 프로젝트가 성공하기 위해서는 가장 중요한 요소이고 다른 부분이 다 틀어지더라도 자금 부분 하나만 해결되면 모든 것이 해결된다는 가장 단순한 논리도 이해하였습니다.

 

후배 분들은 실질적으로 어떠한 프로젝트를 수행함에 있어 이러한 자금과 관련된 부분에 대한 확실한 기준점이나 대책을 마련하고 프로젝트에 임하시는 것이 도움이 되실 것입니다.

 

2. 온라인 게임 개발이란?

 

사실.. 온라인 게임 개발과 일반 게임 개발의 차이점은 크게 존재하지 않습니다. 다만, 제가 느낀 점은 다음과 같습니다.

 

일반 게임 개발

 

             1) 스토리 라인이나 명확한 주제 의식과 전반적으로 통제되어 있는 세계관에서 기획 되어진 작품이며 애피소드별로 완성된 형태로 제공되어진다.

             2) 한번 제품이 패키징 됨으로써 제품의 업데이트가 상당히 곤란하다.

             3) 보통 1인 플레이를 중심으로 구성됨으로써 게임 기획자와 게임을 즐기는 유저와 1대 N으로 대화(?)나 액션, 정보를 주고 받는 구조를 가지고 있으며 이러한 다수의 N을 기획자가 고려하여야 한다.

             4) 무엇보다 이펙트와 오브젝트들간의 상관관계가 제일 중요하다.

             5) 그래픽데이타에 대한 작업에 있어서 특정 상위시스템이나 특정 시스템의 특성과 연관지어서 개발할 수 있다.

             6) 서비스팀은 아주 극소로 운영되며 개발진에 비해 중요도가 떨어진다.

             7) 시스템의 불안정성을 극복하기 위한 다양한 기술적인 시도를 사용할 수 있다.

             8) 잦은 업데이트는 이 프로젝트를 망치는 지름길이다. 적절한 수준의 배치가 필요하다.

 

온라인 게임 개발

 

             1) 단품제품이 아닌 일종의 서비스 제품이다.

             2) 스토리라인은 있으나 이 부분이 아주 명확하지는 않다. 기획자의 의도나 철학을 전달하기가 상당히 어렵다. 유저들의 느낌과 행동, 커뮤니티성에 따라 전혀 의도하지 않은 부분이 부각되며 기획자의 통제권을 상실할 위험이 크다.

             3) 서비스팀은 아주 중요하며 특정시점에는 개발진보다도 중요한 위치를 차지한다.

             4) 무엇보다 캐릭터들간의 커뮤니티성과 네트웍 관련 정보, 동기화가 제일 중요하다.

             5) 시스템의 안정성 확보를 위한 다양한 시도가 어렵고 특정 방법을 써야 하는 경우가 많다.

             6) 잦은 패치를 통한 시스템의 변화가 오히려 게임의 흥미를 유발하나. 마이너스 적인 업데이트는 게임의 흥미를 떨어틀인다.

 

서문이라 단순하게 몇 개만 나열하였지만 두 프로젝트에는 아주 많은 차이가 있다. 실질적으로 이러한 팀을 구성하고 운영하는 방법에 대해서는 본문에서 다둘 것입니다.

 

특히나 이 문서는 단순하게 서술되어지는 기술적인 문서가 아니라 커다란 방법론을 중심으로 각각의 기술적인 내용과 제작의 History, 연계기술 및 연구대상에 대해서서 서술하도록 노력할 것입니다.

 

이 문서는 여러가지 방법론중에 OMT의 방법론을 접목한 방식으로 서술하려고 노력할 것이다. 여러가지 방법론을 도입하겠지만 UML을 기반으로한 OMT, XP등의 도입도 충분히 구상할 예정입니다.

 

1장은 온라인 게임 제작을 위한 객체지향방법론 으로써 온라인 게임 제작을 하기 위하여 나름대로 제시하는 객체지향방법론 입니다.

 


1. 게임개발 객체지향 방법론

 

여기서 제시하는 방법론은 소프트웨어 공학 프로세스에 의한 방법론입니다. 특히나 온라인게임 개발 조직내에서 작업(Task)와 책임(Respomsibility)를 배분하기 위한 원칙적인 접근방법을 제공하려고 노력할 것입니다.

 

이것의 목표는 온라인 게임 개발을 하는데 있어서 예정된 스케쥴과 비용내에서 온라인 유저의 요구사항과 일치하는 고품질의 온라인 게임 소프트웨어를 생산하는 것입니다.

 

여러 객체지향 방법론의 경험을 토대로 폭넓은 프로젝트 및 조직에 맞게 테일러링 될 수 있도록 변화할 수 있다.

 

이 방법론은 반복적인(iterative)프로세스입니다. 온라인 게임 개발이라는 것은 하나의 큰 시나리오를 중심으로 단계별로 완성시켜 나아가며 초기의 첫 번째 형태라 하더라도 완성되어진 서비스의 형태를 가져야 하는 중간 완성 형태를 가지고 있으며, 이러한 이 각각의 단계를 거치면서 계속적인 정제를 통하여 문제점과 요구 조건에 대하여 다수의 개발자 조직을 통하여 효율적인 솔루션을 취득할 수 있도록 하고 있습니다.

 

이 접근 방법은 온라인 게임 개발의 새로운 요구 사항 또는 전술적인 변화에 대하여 융통성

있게 대처해 나갈 수 있는 방법을 제공하여 줄 것입니다.

 

이 방법론은 통제되기 위하여 각각의 체크 포인트가 존재하고 있습니다. 이러한 통제를 통하여 기본적인 단계별 품질수준을 보장하도록 노력하며 관련된 비용과 스케쥴을 보다 잘 조정할 수 있게 합니다.

 

이 방법론은 아키텍쳐를 가지고 있으며 모델을 생산하고 유지시킵니다. 문서의 작성은 최소화하며 각각의 단계별로 만들어지는 모델을 개발하며 유지하는 것을 중요시 합니다.

 

이 방법론은 개발초기단계를 중요시 여기며 여기에 맞추어 각각의 개발자 조직의 권력이동과 관련된 내용도 기술할 것입니다. 또한, 기본적인 온라인 게임개발에 필요한 가장 필수요소를 완성한 후에는 확장과 보수를 통한 새로운 서비스 제품을 구성할 수 있게하는 방법론을 서술하려 합니다. 이런 방법을 보통 CBD(Component-based Software Development)라고 부르는데.. 온라인 게임 개발에 있어서 이러한 CBD는 약간 개념이 다르게 형상화될 수 있습니다.

 

또한, 온라인 게임 개발의 요소는 80%이상이 패턴화되어서 나열되어 질 수 있으며 이 패턴화를 통하여 중복화요소를 거의 제거해나아갈 수 있습니다.

 

객체지향방법론의 가장 중심은 유스케이스의 도출이라고 이야기하지만, 온라인 게임 개발에 있어서 가장 중요한 것은 아키텍쳐를 설정하는 것을 가장 중요하다고 하겠습니다.

 

가상 최상위의 컨셉과 원작자의 단어, 개념을 통하여 하위의 기본적인 기술적, 디자인적으로 제공되어지는 패턴을 통하여 기본적인 배치를 하며 이러한 배치는 원작자와 수석엔지니어와 수석기획자와의 대화와 회의를 통하여 이러한 객체지향 모델을 완성하여 나아갑니다.

 

이렇게 만들어진 소프트웨어 아키텍쳐는 UML(Unified Modeling Language)를 통하여 서술되어지며, UML 1.2를 기준으로 서술하도록 하겠습니다. 또한, UML이나 객체지향을 잘 모르는 분들을 위하여 객체지향방법론과 UML에 대해서도 설명하면서 문서를 만들도록 하겠습니다.

 

이 방법론은 재구성이 언제든지 가능합니다. 또한, 지침서와 관련된 부분도 가능한한 쉽게 작성할 수 있도록 구성하도록 노력하겠습니다.

 

또한, 이 방법론을 통하여 지속적인 QC가 가능하도록 QC 프로세스를 통하여 모든 개발활동에서 원작자와 기획자, 그리고 알파테스터나 베타테스터들이 제시하는 기준점을 이용하여 이러한 품질과 관련된 내용을 별개로 취급하지 않고 방법론 내부에 제시하도록 노력하겠습니다.

 

가능하다면 다양한 모델링툴과 RAD툴인 Delphi를 활용하여 원맨코더가 갖추고 준비하며 진행할 수 있는 지침서 수준의 방법론을 제시하도록 노력하겠습니다.

 

 


좀더 상세한 내용을 서술하기 전에 몇가지를 더 언급하겠습니다.

 

 

'Game Dev... > 게임만들기' 카테고리의 다른 글

컴퓨터그래픽스이론-part I  (0) 2005.01.07
컴퓨터그래픽스 개론 - part I-II  (0) 2005.01.07
[펌] 실시간 지형 관련 책..  (0) 2004.06.29
[펌] Unreal Engine3  (0) 2004.06.02
서버시스템의 스크립팅화  (0) 2004.05.27