[GpGiki 대문으로]

범용 RPG 스크립트 설계


제안

범용적인 RPG 스크립팅 언어의 사양을 만들어 보면 어떨까요? 언어의 사양이 RPG 게임 개발자들의 관심을 끈다면 실제 구현이 만들어 질 수도 있겠죠...

범용적 스크립팅 언어가 어떤 의미를 가질까요? 월드 와이드 웹을 생각해 보면 상당한 매력을 느낄 수 있을 것입니다.

월드 와이드 웹은 HTML로 작성된 페이지들로 이루어 집니다. 이 때 HTML은 하나의 표준적인 언어이고, 인터넷 익스플로러 같은 브라우저들은 HTML 언어로 작성된 페이지들을 표시하는 엔진입니다. HTML 언어는 단지 언어의 사양만을 규정할 뿐이며, 그것을 실제로 구현하는 것은 브라우저 제작자들의 몫입니다. 이 때 언어 작성자와 브라우저 작성자는 서로 독립적입니다(물론 브라우저 제작자가 언어 작성자들에게 영향을 끼치기는 하지만 그건 다른 문제...). 마찬가지로, 브라우저에 표시되는 HTML 페이지들을 만들어 내는 사람들은 언어 작성자나 브라우저 제작자와는 독립적으로 내용을 생산합니다.

언어-브라우저-내용 생산자가 각자 독립적으로 움직일 수 없었다면 웹 세상이 지금처럼 다양한 모습으로 발전하지는 못했을 것입니다....

이러한 방식을 RPG에 적용한다면 어떨까요? 아마도 같은 내용의 게임을 텍스트로도, 풀3D로도 돌릴 수 있게 되겠죠...

범용 RPG 스크립팅 언어는, RPG의 특성을 생각한다면 크게는 다음과 같은 언어들로 이루어질 것 같습니다.

의견

'범용' 이라고 하니깐 일단 '이건 무리다'라는 생각이 제일 먼저 듭니다. RPG들이 서로 워낙 달라야 말이죠 -_-; 조금 더 범위를 좁히면 어떨까요. 예를 들어 rogue-like 라든가 ultima1-like 라든가 하는 식으로 말이죠.

또한 스크립트 '언어'라고 하면 막막하고, 그저 스크립트라고 한다면, 구상을 해 볼 수도 있겠습니다. 예를들어 DIKU MUD 스크립트 같은 식으로 말이죠.

어쨌건, 이런 것들은 조금 더 발걸음을 작은 데서부터 시작하는게 좋을 것 같습니다.

--파연

범위를 "한정"하게 되면 결국에는 "종속"되는 이른바 어떤게임의 "엔진과 툴"에 불과하게 되어 범용이란 단어가 무색해 질수도, 포괄적으로 "무한한" 가능성을 두게되면 그 복잡성과 방대함 때문에 RPG에 한정하는 것을 넘어서는건 물론 지금의 스크립트들과 다를바가 없게 될거라고 봅니다. 저의 짧은 생각으론 명확한 목표와 방향이 우선이라고 생각합니다만.. ;; (약간 잡설입니다만 얼마전 손노리의 RPG 스크립팅이 UML 툴처럼 비쥬얼 방식(?)을 사용한다고 들었습니다. GUI적 스크립팅의 구현도 꽤 멋질듯 싶더군요..) 에.. 어째 횡설수설이 되어버린.. ;; - levites


levites 님 의견에 동의합니다...

일단 생각이 나는 것은 기획자나 작가가 쓴 대본보다는 더 기계적(프로그래밍적으로 해석 또는 변환이 가능한)이고 실제 프로그래밍or스크립트 코드보다는 추상적인 어떤 중간적인 수준의 문서 사양입니다... 예를 들어

전적으로 사람을 위한 대본:

 주민 1 : (주인공에게 다가가서) 잠깐! 정체를 밝혀라!

프로그램이 비교적 직접적으로 해석 가능한 위한 스크립트:

 actor = selectActor("주민1");
 actor.turnTo( party.member[1] );
 actor.walkTo( party.member[1] );
 actor.say("잠깐! 정체를 밝혀라");

이벤트 서술 언어로 작성된 이벤트 서술 스크립트라면 위의 두 가지 예의 중간 형태가 될 것입니다...

$NPC("주민1") : ( $PC("주인공").로.다가가서 ) "잠깐! 정체를 밝혀라!"

이런 수준의 서술에서는 예를 들어 파판과 울티마의 차이가 별로 중요하지 않을 것입니다..

--류광


뭔가 '범용'을 만드는 가장 좋은 방법 중 하나는 먼저 '한정'적인 버젼을 만든 후 이것을 '범용'으로 발전시키는 것입니다.

예를 들어 울티마1이나 rogue-likes의 경우 경험치 일정 이상 획득 시 레벨이 오르게 되고, 이 때 diablo 2의 경우 스킬 포인트가 늘어나는 식이 되겠지만, 울티마 온라인 방식이라면 skill-based 이므로 레벨업이나 경험치라는 것 자체가 없지요.

다른 예를 들자면 울티마1 등의 경우 지도가 제한적이고 미리 정해져 있지만, 네트핵의 경우 지도 자체가 완전히 랜덤생성이므로 울티마와 같은 RPG에서 통용되는 스크립트가 전혀 먹히지 않을 것입니다.

아이템 관련 스크립트의 경우, 디아블로 씨리즈와 같이 몇가지 특징들의 조합으로 수 천가지의 아이템을 만들어내는 경우와, 울티마1과 같이 처음부터 아이템의 종류가 다 정해져 있는 시스템, 그리고 네트핵과 같이 여러 아이템들의 특성이 처음엔 드러나지 않고 플레이어가 밝혀내야하는 시스템입니다. 이렇게 서로 다른 게임들에 쓰이는 스크립트는 동일하지 않을 것입니다.

이 모든 것을 동시에 다 고려해서 스크립트 설계를 하는 것은 상당히 부담스러운 방법이 아닐까 생각합니다. 조금 한정적으로 설계한 후 이를 발전해나가는 것이 훨씬 좋은 접근방법이 아닐까 하는 겁니다.

뭔가 시작은 하고 싶지만, 막상 이 페이지에 오면 막막한 생각부터 드는 것은 '범용'이라는 말이 주는 부담감 때문이 아닐까 생각합니다. 천리길도 한걸음부터 내딛어야 되지 않을까요?

--파연


범용이라고 해서 모든 것을 고려해서 만들 필요는 없을 것입니다. 어쩌면 그 반대로 가장 공통적인 것들만 고려해서 만들 수도 있겠죠... 어쨌든 천리길도 한걸음부터라는 부분에는 동의하구요. 첫 걸음을 특정 시스템을 염두에 둔 것으로 시작하느냐, 아니면 추상화된 시스템으로부터 시작하느냐의 문제가 될 것 같습니다... 저로서는 HTML - 브라우저 - 웹 페이지 모델의 매력을 떨쳐버릴 수가 없네요...

제 생각에는 XML에 기반한 GameScenarioMarkupLanguage 를 만드는 것으로 시작하면 재미있을 것 같습니다. XML에 기반한다면... XML의 특징 상, 다른 형태로의 변환이 항상 보장되니까요...(쉽다 어렵다 차원을 떠나서...)

--류광

형태

일단 C 언어와 비슷한 방식으로 시작합니다 (xml 방식은 조금 맞지 않는 듯하여..;).

일단 이까지입니다. 천천히 추가해 봅시다^^


엥 로직 측면에서 시작하시려구요?? 저는 RPG의 게임 세계를 구성하는 여러 요소들을 '서술'하는 측면에서 출발을 했으면 하는데요.... (스크립트를 코드보다는 연극 대본에 가까운 것으로 간주하고..)

그 측면에 대한 고민은 GameScenarioMarkupLanguage 에서 좀 더 구체화해보겠습니다..

--류광


분류 스크립팅


제일 위로
최종 수정 일시: 10월 27일(2003년) 01:03 AM 편집 | 정보 | 차이 | 비슷한 페이지 DebugInfo
유용한 페이지들: 분류 분류 | 자유로운 연습장 SandBox | 무작위 페이지들 RandomPages | 인기있는 페이지들 MostPopular