Differences

This shows you the differences between the selected revision and the current
version of the page.


kr:wmebook:ch1 2008/02/09 17:57 kr:wmebook:ch1 2008/09/20 14:10 current
Line 1: Line 1:
-====== 1. WME가 무엇인지 알아보자 ======+|}}====== 1. WME를 파헤쳐 보자 ======
-윈터뮤트 엔진(Wintermute Engine, WME)을 내려받았다면 WME가 무엇인지 정말 궁금할 겁니다. WME는 크게 두 가지로 구성된 전문 어드벤처 게임 개발 킷입니다. 어드벤처 게임을 만드는 데 사용되는 상당히 진보적인 개발 도구들과 여러분이 만든 게임에 생명을 불어넣어주는 WME 인터프리터가 바로 그것입니다.+윈터뮤트 엔진(Wintermute Engine, WME)을 내려받은 당신은 WME에 대해 궁금한 것이 많을 겁니다. WME는 크게 두 가지로 구성된 전문 어드벤처 게임 개발 킷입니다. 그 두 가지란, 어드벤처 게임을 만드는 데 사용되는 상당히 진보적인 개발 도구들과 여러분이 만든 게임에 생명을 불어넣어주는 WME 인터프리터입니다.
-설명을 시작하기 전에, 몇몇 어드벤처 게임들을 예로 들며 당신이 당신의 생각에 맞는 도구를 선택했는지 알아봅시다. '어드벤처 게임'이란 말은 여러 사람에게 많은 유형의 게임으로 불립니다. 누군가는 어드벤처가 '인터랙티브 픽션'이라고 합니다. 인터랙티브 픽션에서는 '문을 열어라, 버튼을 눌러라, 트롤을 죽여라' 같은 명령어를 타이핑하며 텍스트나 간단한 그림으로 구성된 게임 세계를 진행합니다. 그런가 하면 이 레버 저 레버를 잡아당기라는 것을 어드벤처라고 하는 액션/어드벤처 게임들도 많이 있습니다. 아마 WME로도 그런 게임들을 만들 수는 있겠지만, 그것은 이 엔진이 지향하는 바가 아닙니다.+설명을 시작하기 전에, 몇가지 어드벤처 게임들을 예로 들어 WME가 당신의 생각에 맞는 도구인지 알아봅시다. '어드벤처 게임'이란 말은 여러 사람들에게 많은 유형의 게임으로 불립니다. 누군가는 어드벤처가 '인터랙티브 픽션'이라고 합니다. 인터랙티브 픽션에서는 '문을 열어라, 버튼을 눌러라, 트롤을 죽여라' 같은 명령어를 타이핑하면서 텍스트나 간단한 그림으로 구성된 게임 세계를 진행합니다. 그런가 하면 이 레버, 저 레버를 잡아당기는 것을 어드벤처라고 하는 액션/어드벤처 게임들도 많이 있습니다. WME로도 그런 게임들을 만들 수는 있겠지만, 이 엔진이 지향하는 바는 아닙니다.
-WME는 포인트 앤 클릭 어드벤처 게임에 초점을 맞추고 (하지만 그것에 제한되지는 않습니다) 있습니다. 그런 게임들은 인벤토리가 있을 수도 있고 없을 수도 있고, 주인공이나 다른 등장인물들을 표현하는 아바타가 있을 수도 있고 없을 수도 있습니다. 게임플레이는 주로 퍼즐 해결, 난해한 대사, 논리 혹은 인벤토리 퍼즐과 게임 세계와의 상호작용에 집중하고 있습니다. 역사 속에는 그러한 게임들이 수백여개나 있습니다. 루카스 아츠의 게임들인 <매니악 맨션>이나 <풀 쓰로틀>, <그림 판당고>부터 시작해서, 최근의 <사이베리아>나 <롱기스트 저니>까지 살펴볼 수 있습니다. 이런 게임들의 핵심은 바로 스토리에 있습니다. 당신은 기본적으로 그런 게임을 매개로 하여 이야기를 말해야 합니다. 그것에는 퍼즐 어드벤처라 불리는 하위 분류도 있습니다. 스토리는 있지만 퍼즐의 해결보다는 중요하지 않은 게임들입니다. <미스트>나 그 다양한 아류작들처럼 스토리가 더 단순한 것들을 예로 볼 수 있습니다. 최근에는 <그림 판당고>나 <사일런트 힐>처럼 키보드를 사용하여 캐릭터를 조작하는 어드벤처 게임도 있습니다. 당신이 그런 것들을 만들고자 엔진을 필요로 하는 거라면, WME가 바로 올바른 선택입니다.+WME는 포인트 앤 클릭 어드벤처 게임에 초점을 맞추고 (하지만 그것에 제한된 것은 아니다) 있습니다. 그런 게임들은 인벤토리가 있을 수도 혹은 없을 수도 있고, 주인공이나 다른 등장인물들을 표현하는 아바타가 있을 수도 혹은 없을 수도 있습니다. 그것의 게임플레이는 주로 퍼즐 해결, 난해한 대사, 논리 혹은 인벤토리 퍼즐과 게임 세계와의 상호작용이 주를 이룹니다. 역사 속에는 그러한 게임들이 수백여개나 있습니다. 루카스 아츠의 게임들인 <매니악 맨션>이나 <풀 쓰로틀>, <그림 판당고>부터 시작해서, 최근의 <사이베리아>나 <롱기스트 저니>까지 살펴볼 수 있습니다. 이런 게임들의 핵심은 바로 스토리에 있습니다. 당신은 기본적으로 게임을 그런 이야기를 말하는 매체로 사용해야 합니다. 퍼즐 어드벤처라 불리는 하위 분류도 있습니다. 스토리는 있지만 퍼즐의 해결보다는 중요하지 않은 게임들입니다. <미스트>나 그 다양한 아류작들처럼 스토리가 더 단순한 것들을 예로 볼 수 있습니다. 최근에는 <그림 판당고>나 <사일런트 힐>처럼 키보드를 사용하여 캐릭터를 조작하는 어드벤처 게임도 있습니다. 당신이 그런 것들을 만들 엔진이 필요했다면, WME가 바로 올바른 선택입니다.
-그렇다면 이제 WME의 패키지에 어떤 것들이 들어있는지 살펴봅시다.+자, 그럼 이제 WME의 패키지에 어떤 것들이 들어있는지 살펴봅시다.
-  * **프로젝트 관리자**(Project Manager)는 프로젝트 트리를 볼 수 있는 게임 제작의 수뇌부입니다. 또 당신이 만드는 게임의 전역적인 매개변수((전체에 영향을 미치는 매개변수))들을 설정할 수 있는 곳이기도 합니다. 여기서 게임을 실행시킬 수도 있으며, 주로 여기서부터 작업을 시작하게 됩니다. +  * **프로젝트 관리자**(Project Manager)는 게임 제작의 수뇌부로 프로젝트 트리를 볼 수 있습니다. 또 당신이 만드는 게임의 전역적인 매개변수((전체에 영향을 미치는 매개변수))들을 설정할 수 있는 곳이기도 합니다. 여기서 게임을 실행시킬 수도 있으며, 주로 여기서부터 작업을 시작하게 됩니다. 
-  * **씬 편집기**(Scene Edit)는 개별 씬들을 편집하는 도구입니다. WME는 아직 완전한 3D 엔진이 아니기 때문에, 당신은 화면들(WME 용어로는 씬이라 합니다)을 하나하나 만들어야 합니다. 플레이어가 게임 세계를 진행해나가면, 당신이 씬과 씬 사이를 이동하게 하는 것입니다. 하나의 씬은 보통 하나의 게임 화면이지만, WME는 해상도보다 큰 배경을 위해 씬을 스크롤하는 기능도 지원합니다. +  * **씬 편집기**(Scene Edit)는 개별 씬들을 편집하는 도구입니다. WME가 아직 완전한 3D 엔진이 아니기 때문에, 화면들(WME 용어로는 씬이라 합니다)을 하나하나 만들어야 합니다. 당신이 씬과 씬을 바꾸어 주면서 플레이어가 게임 세계를 탐험하는 것입니다. 하나의 씬은 보통 게임 화면에 꽉 차게 되지만, 해상도보다 큰 배경을 가진 씬을 스크롤하는 기능도 지원합니다. 
-  * **스프라이트 편집기**(Sprite Edit)는 WME에서 사용할 움직이는 2D 스프라이트(애니메이션)의 제작을 지원하는 도구입니다. +  * **스프라이트 편집기**(Sprite Edit)는 WME에서 사용할 '움직이는 2D 스프라이트'(애니메이션)의 제작을 지원하는 도구입니다. 
-  * **스트링 테이블 관리자**(String Table Manager)는 당신이 만든 게임의 현지화에 사용됩니다. 오른쪽에서 왼쪽으로 쓰는 언어까지 포함해 가능한 모든 언어로 게임을 현지화할 수 있습니다. 이 도구는 스크립트나 씬에서 문자열(스트링)을 추출해 번역하기 용이하게 만들어 주기 때문에 값을 매길 수 없을만큼 귀중한 도구입니다.+  * **스트링 테이블 관리자**(String Table Manager)는 당신이 만든 게임의 현지화에 사용됩니다. 오른쪽에서 왼쪽으로 쓰는 언어까지 포함해 가능한 모든 언어로 게임을 현지화할 수 있습니다. 이 도구는 스크립트나 씬에서도 문자열(스트링)을 추출해 번역하기 용이하게 만들어 주는 정말 귀중한 도구입니다.
  * **디버깅 콘솔**(Debugging Console)은 지원 모듈로, 게임 프로그램에서 무슨 일이 일어나고 있는지 왜 스크립트가 제대로 작동되지 않는지를 추적하는 데 도움을 줍니다.   * **디버깅 콘솔**(Debugging Console)은 지원 모듈로, 게임 프로그램에서 무슨 일이 일어나고 있는지 왜 스크립트가 제대로 작동되지 않는지를 추적하는 데 도움을 줍니다.
  * **신규 게임 항목을 위한 템플릿과 데모 프로젝트**는 WME의 다양한 기능들을 시연합니다.   * **신규 게임 항목을 위한 템플릿과 데모 프로젝트**는 WME의 다양한 기능들을 시연합니다.
-위의 도구들이 기본적인 설계에 중요한 것이라면, 당신이 작성하게 될 스크립트는 당신의 게임에 들어가는 심장이자 영혼입니다. WME는 클릭만으로 모든 것을 헤쳐나갈 수 있는 도구는 아닙니다. 하지만 스크립트 작성함으로써 WME는 더욱 유연한 어드벤처 게임 엔진이 되고 각각의 기능에 직접적으로 접근할 수 있게 됩니다.+위의 도구들이 기본적인 설계에 중요한 것이라면, 당신이 작성하게 될 스크립트는 당신이 만드는 게임의 심장이자 영혼입니다. WME는 클릭만으로 모든 것을 헤쳐나갈 수 있는 도구는 아닙니다. 스크립트의 작성을 통해 WME는 더욱 유연한 어드벤처 게임 엔진이 되고, 각각의 기능에 직접적으로 접근할 수 있게 됩니다.
-자, WME로 게임을 제작하는 일에 빠져들기 전에, 일반적인 게임 디자인의 과정에 대해 조금 말하고 싶은 것이 있습니다. 똑같거나 비슷한 결과로 가는 길은 아주 많이 있습니다. 그러니까 당신만의 길이 더 낫다고 생각한다면 그냥 그걸 가지고 가야 합니다. 어떻게 해야할지를 모르거나 다른 사람들이 일을 어떻게 하는지에 너무 관심이 많은 사람들에게 하는 충고입니다.+자, WME로 게임을 제작하는 일에 빠져들기 전에, 일반적인 게임 디자인의 과정에 대해 조금 말하고 싶은 것이 있습니다. 다른 이들과 똑같거나 비슷한 결과로 가는 길은 아주 많이 있습니다. 그러니까 당신만의 길이 더 낫다고 생각한다면 그냥 그걸 가지고 가야 합니다. 어떻게 해야할지 모르거나 다른 사람들이 일을 어떻게 하는지에 너무 관심이 많은 사람들에게 하는 충고입니다.
먼저 게임을 코딩하기 전에 스스로에게 물어봐야 할 기본적인 질문들이 있습니다. 먼저 게임을 코딩하기 전에 스스로에게 물어봐야 할 기본적인 질문들이 있습니다.
Line 32: Line 32:
  * 실제로 게임을 만들 재료가 충분한가?   * 실제로 게임을 만들 재료가 충분한가?
-보다시피, 처음의 세 질문은 매우 실전적이고, 나머지는 개념적인 질문입니다. 그래도 이것들은 기본적인 질문으로, 게임 제작에 대한 기본적인 접근 방법을 결정합니다. 특히 마지막 질문은 더욱 주목해야 합니다. 어떤 게임에 대한 생각을 가지는 것은 아주 쉬운 일입니다. 그게 아주, 아주, 정말로 엄청나고 무지막지하게 멋진 생각일 수도 있지만, 생각에서 완전한 게임으로 가는 길은 정말 어렵습니다. 만약 일년간 격렬하게 작업을 하다 막혀서 나아갈 길을 모른다면 어떤 기분일까요?+보시다시피, 처음의 세 질문은 실전적이고, 나머지는 개념적인 질문입니다. 기본적인 질문들로 게임 제작에 대한 기본적인 접근 방법을 결정합니다. 특히 마지막 질문은 더욱 신경써야 합니다. 어떤 게임에 대한 아이디어를 가지는 것은 아주 쉬운 일입니다. 그게 아주, 아주, 정말로 엄청나고 무지막지하게 멋진 생각일 수도 있지만, 생각에서 완전한 게임으로 가는 길은 정말 어렵습니다. 만약 일년간 격렬하게 작업을 하다 막혀서 나아갈 길을 모른다면 어떤 기분일까요?
-그러니까, WME와는 조금 관계없는 이야기일 수도 있지만, 당신이 불필요하게 엄청난 양의 작업을 하게 될 수도 있다는 것입니다. 스토리를 써놓았을 수도 있고(실제 게임 제작에 들어가면 이것에 투자할 시간이 많지 않습니다), 퍼즐 설계에 관한 생각들이 있을 수도 있고(단지 누를 수 있는 그림들을 늘어놨다는 것을 인정하고 싶진 않겠지만), 대사를 쓰거나 인물들을 살찌우고 사운드나 음악, 그래픽 스타일 등등에 관한 생각을 가질 수도 있습니다. 이 모든 것들은 디자인 문서라 불리는 것에 들어갑니다. 그것은 당신이 게임에 관해 생각한 모든 것들을 집중할 수 있는 문서입니다. 물론 모든 것이 문서로부터 나와 게임에 들어가는 건 아닙니다. 보통 그런 일은 더 적습니다. 하지만 문서란 모든 게임 개발자들에게 필수적인 것입니다. 특히 게임 디자인에 진지한 사람이라면 말입니다.+그러니까, WME와는 조금 관계없는 이야기일 수도 있지만, 당신이 불필요하게 엄청난 양의 작업을 하게 될 수도 있다는 겁니다. 스토리를 써놓았을 수도 있고(실제 게임 제작에 들어가면 이것에 투자할 시간이 많지 않습니다), 퍼즐 설계에 관한 생각들이 있을 수도 있고(단지 누를 수 있는 그림들을 늘어놨다는 것을 인정하고 싶진 않겠지만), 대사를 쓰거나 인물들을 살찌우고 사운드나 음악, 그래픽 스타일 등등에 관한 생각을 가질 수도 있습니다. 이 모든 것들은 디자인 문서라 불리는 것에 들어갑니다. 그것은 당신이 게임에 관해 생각한 모든 것들을 집중할 수 있는 문서입니다. 물론 모든 것이 문서로부터 나와 게임에 들어가는 건 아닙니다. 보통 그런 일은 더 적습니다. 하지만 문서란 모든 게임 개발자들에게 필수적인 것입니다. 특히 게임 디자인에 진지한 사람이라면 말입니다.
-자, 이제 지루한 잡담은 충분하다고 생각하니, WME스러운 것에 안달이 난 당신을 위해 앞으로 나아갑시다.+자, 이제 지루한 잡담은 충분하니, WME스러운 것에 안달이 난 당신을 위해 앞으로 나아갑시다.
-먼저 일반적인 WME 게임의 구조부터 살펴봅시다. 아래에 주어진 WME의 기능들을 단순화시킨 다이어그램을 보면 그 기본 개념을 알아볼 수 있습니다.+먼저 일반적인 WME 게임의 구조부터 살펴봅시다. WME의 기능들을 단순화시킨 아래의 다이어그램을 보면 그 기본 개념을 알아볼 수 있습니다.
{{wmebook:ch1diag.jpg|다이어그램}} {{wmebook:ch1diag.jpg|다이어그램}}
-보다시피, 기능을 크게 두 가지로 나눠볼 수 있습니다. 게임 전체를 위한 전역적인 기능과 개별 씬을 위한 지역적인 기능입니다.+보다시피, 기능을 크게 두 가지로 나눠볼 수 있습니다. 게임 전체를 위한 전역적인 기능과 개별 씬을 위한 지역적인 기능입니다.
-책의 나머지는 이 다이어그램 하나하나를 깊게 파고들어 설명하고 있습니다. 그 전에 다이어그램에서 쓰인 용어를 몇가지 설명하고 넘어가겠습니다.+책은 이 다이어그램 하나하나를 깊게 파고들어 설명하고 있습니다. 그 전에 다이어그램에서 쓰인 용어를 몇가지 설명하겠습니다.
-  * **스크립트**(script)는 프로그램의 지시사항을 포함하는 텍스트 파일입니다. 이것에 대해서는 스크립트를 설명하며 자세히 설명할 것입니다. +  * **스크립트**(script)는 프로그램의 지시사항을 포함하는 텍스트 파일입니다. 이것에 대해서는 스크립트를 설명할 때 자세히 설명할 것입니다. 
-  * **액터**(actor)는 2D 혹은 3D 아바타로, 게임 속에서 당신이 플레이하는 캐릭터나 다른 캐릭터들을 표현합니다. 액터는 걷기, 말하기, 아이템 줍기의 능력들을 가지고 만들어지지만, 그것들을 제외하고 게임을 (<미스트>, <다크폴>, <바로우 힐>, <시버>처럼) 만들 수도 있습니다. 액터에는 꽤 많은 시간을 들이게 됩니다.+  * **액터**(actor)는 2D 혹은 3D 아바타로, 게임 속에서 당신이 플레이하는 캐릭터나 다른 캐릭터들을 표현합니다. 액터는 걷기, 말하기, 아이템 줍기의 능력들을 가지고 만들어지는데, 액터 없이도 게임을 (<미스트>, <다크폴>, <바로우 힐>, <시버>처럼) 만들 수도 있습니다. 액터는 꽤 많은 시간을 들이게 됩니다.
  * **인벤토리**(inventory)는 플레이어가 게임 세계에서 취한 아이템들을 보관하는 곳입니다.   * **인벤토리**(inventory)는 플레이어가 게임 세계에서 취한 아이템들을 보관하는 곳입니다.
  * **속성**(attribute), **메소드**(method), **오브젝트**(object), **변수**(variable)는 스크립트를 설명하며 자세히 설명할 것입니다.   * **속성**(attribute), **메소드**(method), **오브젝트**(object), **변수**(variable)는 스크립트를 설명하며 자세히 설명할 것입니다.
-  * WME에서 **데몬**(daemon)은 어두운 지저 어딘가에서 기어나온 괴물이 아니라, 게임이나 씬의 뒤에서 중요한 일을 수행하기 위해 실행되는 코드입니다. 예를 들어 마우스를 핫스팟((hotspot, 마우스를 사용하는 그래픽 유저 인터페이스에서 무언가 상호작용할 것이 있는 지점. 즉, 어드벤처 게임에서 핫스팟은 클릭하면 이벤트가 일어날 지점이라 할 수 있다.))에 올려 어떤 것을 감지했다면, 그에 맞는 표제를 출력해주는 것이 일반적으로 발견할 수 있는 데몬입니다. 이것은 모든 씬에 필요한 동작이기 때문에 이 데몬은 전역적인 데몬이라 할 수 있습니다. 물론 씬에 종속되어 있는 지역적인 데몬도 가질 수 있습니다. 예를 들어, 당신이 씬에 들어서자 산소가 소모되고, 탈출하지 못 하면 죽게 된다고 합시다. 이 경우, 지나간 시간을 계산하여 탈출하지 못 하면 플레이어를 죽이는 데몬이 씬에 첨부되어 있다고 할 수 있습니다. +  * WME에서 **데몬**(daemon)은 어두운 지저 어딘가에서 기어나온 괴물이 아니라, 게임이나 씬의 뒤에서 중요한 일을 수행하기 위해 실행되는 코드입니다. 예를 들어 마우스를 핫스팟((hotspot, 마우스를 사용하는 그래픽 유저 인터페이스에서 무언가 상호작용할 것이 있는 지점. 즉, 어드벤처 게임에서 핫스팟은 클릭하면 이벤트가 일어날 지점이라 할 수 있다.))에 올려 어떤 것을 감지했다면, 그에 맞는 표제를 출력해주는 것이 일반적인 데몬입니다. 이 기능은 모든 씬에 필요하기 때문에, 이 데몬은 전역적인 데몬이라 할 수 있습니다. 물론 씬에 종속되어 있는 지역적인 데몬도 있습니다. 예를 들어, 당신이 씬에 들어서자 산소가 소모되고, 탈출하지 못 하면 죽게 된다고 합시다. 이 경우, 지나간 시간을 계산하여 탈출하지 못 하면 플레이어를 죽이는 데몬이 씬에 첨부되어 있다고 할 수 있습니다.
  * **스트링 테이블**(string table)은 게임 내의 문자열을 식별하는 키와 값으로 이루어진 텍스트 파일입니다. 이 파일을 교체하여 당신의 게임을 러시아어나 중국어 등 여러 언어로 만들 수 있습니다.   * **스트링 테이블**(string table)은 게임 내의 문자열을 식별하는 키와 값으로 이루어진 텍스트 파일입니다. 이 파일을 교체하여 당신의 게임을 러시아어나 중국어 등 여러 언어로 만들 수 있습니다.
  * **개체**(entity)와 **지역**(regions)은 씬 편집기를 설명할 때 자세히 설명할 것입니다.   * **개체**(entity)와 **지역**(regions)은 씬 편집기를 설명할 때 자세히 설명할 것입니다.
Line 56: Line 56:
이제 엔진의 기본적인 모습과 그 구조를 알아보았습니다. 도구들에 대해 알아보기 전에, 준비 작업을 조금 해둡시다. 이제 엔진의 기본적인 모습과 그 구조를 알아보았습니다. 도구들에 대해 알아보기 전에, 준비 작업을 조금 해둡시다.
-=> WME가 위치한 디렉토리로 가서 projects라는 폴더를 찾아봅시다. 그리고 이 폴더 안에 있는 wme_demo 폴더를 다른 이름으로 복사합니다. 이것이 바로 우리가 WME가 데모에서 어떻게 작동하고 구성되는지를 알아보는 연습장이 될 겁니다. 새로 복사된 폴더 속을 보면, **wme_demo.wpr**이라는 파일이 있습니다. 이 파일은 WME의 프로젝트 파일로 WME가 제대로 설치되어 있다면 열어볼 수 있습니다. 파일은 우리가 처음 다루게 될 도구인 **프로젝트 관리자**에서 열리게 됩니다.+=> WME가 위치한 디렉토리로 가서 projects라는 폴더를 찾아봅시다. 그리고 이 폴더 안에 있는 wme_demo 폴더를 다른 이름으로 복사합니다. 우리는 데모를 연습장으로 써서 WME가 어떻게 작동하고 구성되는지를 알아보게 될 겁니다. 새로 복사된 폴더 속을 보면, **wme_demo.wpr**이라는 파일이 있습니다. 이 파일은 WME의 프로젝트 파일로 WME가 제대로 설치되어 있다면 열어볼 수 있습니다. 파일은 우리가 처음 다루게 될 도구인 **프로젝트 관리자**에서 열리게 됩니다.
[[kr:wmebook:ch1|위로]] [[kr:wmebook:ch1|위로]]
 
kr/wmebook/ch1.1202576239.txt.gz · Last modified: 2008/02/09 17:57 by perplexing
Recent changes RSS feed Creative Commons License Driven by DokuWiki