스크립트에 대한 물음
게임기획자 지망생들에게 가장 많이 질문을 받은 것들이 몇 가지가 있는데, 그 중에 하나가 "스크립트를 얼마나 잘해야 하는가?" 또는 "스크립트는 어떻게 배워야 하는가?"에 관한 질문이었습니다.
많은 게임기획자 및 지망생들에게 스크립트란 계륵같은 존재하고 생각합니다. 많은 프로젝트들의 채용공고를 보면 필수능력 또는 우대 사항에 스크립트 사용 가능자를 명시해 두고 있기 때문입니다.
스크립트를 배우자니 어려울 것 같고, 안 배우자니 필요로 하는 곳이 너무나도 많은 것 같고 애매하죠. 하물며, 어디서 어떻게 배워야 하는지도 잘 모르겠고, 가뜩이나 프로그래밍에 대한 지식이 약한 기획자들에게는 가장 큰 고민거리가 되곤하죠.
수 많은 게임 개발자들에게 스크립트에 관한 이야기를 들어보셨을 겁니다. "나름 괜찮았다.", "스크립트는 정말 다신 하고 싶지 않다." 등등의 수 많은 이야기들을 들어보셨을 겁니다.
스크립팅 언어란?
그 동안 LUA, XML 및 자체개발 스크립트들을 사용하면서 의외로 스크립트란 무엇일까와 같은니다. 근원적인 질문은 던져보지 않았던 것 같습니다. 루아를 이용한 민첩하고 효과적인 게임 개발이라는 책에 보면 스크립팅 언어에 대해서 다음과 같은 정의를 내리고 있습니다.
"스크립팅 언어는 컴퓨터의 기능성을 사람이 손쉽게 사용할 수 있도록 하는 수단이다. 원래 스크립팅 언어는 일괄적인 명령 수행 도구로 쓰였다. (...중략...) 일반적으로 스크립팅 언어들은 빠른 개발을 위해 쓰이며(실행속도와 효율은 조금 희생하더라도), 비 프로그래머가 읽고 쓰기 쉬운 텍스트 기반 구문을 채용하는 경우가 많다. 핵심은, 일정한 교양을 갖춘 사용자라면 프로그래머의 개입 없이도 스스로 스크립트를 작성하고 사용할 수 있다는 점이다. (...중략...) 특히 게임 개발 분야에서 스크립팅 언어를 저수준 언어와 통합함으로써 개발자는 실행시점 환경을 좀 더 세밀하게 제어할 수 있게 되고, 또 개발 공정 도중 그 환경 안에서 소프트웨어를 좀 더 자유롭고 유연하게 수정, 실험해 볼 수 있게 된다."
또 다른 책인 Programming in Lua에서는 다음과 같은 내용이 나옵니다.
"우리는 처음부터 C언어를 비롯한 여러 전통적인 언어로 작성된 소프트웨어와 통합할 의도로 루아를 설계했다. 이렇게 함으로써 루아를 작고 간단한 언어로 유지할 수 있다. 이미 C를 사용해도 좋은 부분은 거의 수용하지 않아도 되기 때문이다. 그리고 루아는 뛰어난 하드웨어와의 독립성, 동적 구조체, 쓸데 없는 반복 제거, 손쉬운 테스트와 디버깅과 같은 C언어로 구현하기에는 다소 까다로운 기능들을 제공한다."
스크립트 언어들은 간단한 텍스트 파일에 담아두고 실행 할 수 있는 배치파일의 형태로 출발해서 이제는 파이썬, 루비, 루아 등등 수 많은 스크립트 언어들로 세분화 되었습니다. 스크립트 언어는 진짜 컴퓨팅 언어만큼은 아닐 지라도 유연함과 다양한 능력을 보여주고 있습니다. 기획자에게 있어서 스크립트를 다루는 가장 큰 장점이라고 하면, 바로 실제 자신의 손으로 뭔가 개발이 이루어지고 있다는 점을 느끼는 것입니다.
게임 개발과 변동성
소프트웨어를 개발 할 때 요구명세서들은 굉장히 변동이 심합니다. 특히나 게임 같은 주관적인 재미가 더해지는 소프트웨어는 특히나 더 어렵죠. 예를 들어 몬스터의 체력이라든가, 캐릭터의 경험치라든가 하는 부분들은 기획자의 기획의도나 밸런싱에 의해서 하루에도 몇 번씩이나 수치를 바뀔 수 있는 것들입니다. 이런 부분들은 소프트웨어에서 부드러운 부분이라고 말하죠. 그런데, 이런 단순한 자료입력이나 확인 작업 때마다 프로그래머의 손을 거쳐야 한다면 굉장히 자원의 낭비가 심해질 것입니다.
사실, 정작 프로그래머가 해야할 일은 데이터를 변경해 주는 일이 주업무가 아니죠. 오히려 더 큰 개념의 기능들을 구현해줘야합니다. 공격에 따른 체력의 변화 라든지, 일정 경험치에 도달하면 레벨업 등등. 실제로 프로그래머들이 구현해야할 기능은 상당히 많습니다. 이런 부분들은 특별한 일이 아니면 크게 변동이 없는 부분들이죠. 소프트웨어에서는 이런 부분들을 딱딱한 부분이라고 표현합니다.
좋은 게임을 만들기 위해서는 이러한 부드러운 부분과 딱딱한 부분을 잘 구분해서 손댈 수 있게 해주는 것이 좋습니다. 그래야 기획자도 기획의도를 수시로 테스트해 볼 수 있을 것이고, 프로그래머도 더욱 많은 기능들을 만들어 냄으로써 다양한 것들이 가능해지도록 만들어 줄 수 있겠죠.
그럼 대체 어디까지 해야하는가?
기획자가 어디까지 건드려야 하는가에 대해서는 프로젝트마다 다르겠죠.
현장에서의 경험을 살려 봤을 때,
첫 째, 우선 데이터는 기본으로 변경할 수 있어야 합니다. 게임 내에 들어가는 수 많은 데이터들이 있습니다. 캐릭터, 몬스터, 아이템, 퀘스트 등등 수 많은 데이터들을 직접 만들어 낼 수 있을 정도는 되야 합니다.
스크립트로 만들어 내던지, 테이블로 만들어 내던지 이런 것들이 중요한 것이 아니라 일단은 요소를 직접 만들어 낼 수 있을 정도는 되야 한다는 것입니다. 복잡한 절차는 단순화 하면 됩니다. 문제는 만들어 내지도 못하면 안된다는 것입니다.
둘 째, 프로토 타이핑이 가능해야 한다. 가지고 있는 함수들을 조합해서 아이디어를 완벽하진 못해도 어느정도 의도에 맞춰서 보여줄 정도는 만들 수 있으면 좋습니다. 또한, 다른 리소스들을 활용해서 뭔가 보여줄 수 있을 정도라면 더욱 좋겠죠.
그림 한장, 애니메이션 한 동작, 프로그램 함수 몇개를 만들기에는 너무 많은 사람들의 손길이 닿아야 할테니까요. 본격적으로 만들어 내기 전에 최소한의 자원들로 재미있는지 정도는 보여줄 정도가 되야겠죠.
셋 째, 타이핑 코딩은 못하더라도 이미 다른 부분에 구현되어 있는 함수나 변수 부분들을 복사-붙여넣기해서 뭔가 동작가능하게 만들 줄 알면 됩니다. 아니면, 오픈소스를 뒤져서 조금 손봐서 뭔가 만들어 낼 수 있을 정도라도 되면 다행입니다.
이 정도 실력이면 일단 어디가서 스크립트는 조금 다룰줄 안다고 해도 됩니다. 기획자의 본분은 완벽한 프로그래밍 지식과 스크립트 실력이 아닙니다. 간혹, 어떤 회사에서는 기획자들에게 코루틴이니 리팩토링이니 하는 것들에 대해서 물어보는 회사가 있는데 이런 질문은 프로그래머에게 하는 것이 더 어울리는 것 아닌가 합니다.
무엇보다도 전문적인 기획자는 어떤 수단을 동원해서든 더 큰 재미를 만들어 내는 것이 첫째이고, 다른 사람들의 아이디어들을 잘 정리해 주는 것은 둘째라고 생각합니다. 스크립트는 세번째 옵션 정도 됩니다. 내가 코딩을 못한다면 만들고 싶은 부분을 잘 설명해서 프로그래머나 다른 스크립터들이 구현해줄 수도 있을 것입니다. 재미란 것을 만들어 내기 위해서 쓰이는 다양한 도구중에 하나가 스크립트일 뿐입니다.
저는 스크립트를 딱 3일 정도 가르쳐 봅니다. 가르쳐서 할 수 있으면 시키고 못하면 안시킵니다. 최소한의 교양이 있는 사람이라면 누구나 할 수 있는 것이 스크립트인데, 안되면 기초 지식들이 모자라다는 소리이기 때문에 그 부분을 더 공부하기 전에는 스크립팅을 시켜봐야 의미가 없다는 것입니다. 어짜피 이해를 못할것이기 때문입니다. 오히려 이럴 때는 스크립트를 제껴놓고 그냥 아이템 만드는 법, NPC 만드는 법 이런식으로 교육을 시켜줍니다. 이 편이 오히려 쉽게 받아들입니다.
기획자의 스크립트 능력에 대해
기획자가 더 많은 부분을 건드리면 건드릴 수록 장점도 있고 단점도 있습니다. 너무 많은 부분을 스크립트 할줄 알게 되면 기획자 뿐만 아니라, 스크립터를 넘어 프로그래머에 가까워지겠죠.
필요성부터 얘기해주자면, 스크립트를 전혀 할줄 모르면 당장 게임에 들어가는 경험치 테이블 하나도 반영 시킬 수 없는 무능한 기획자가 될 가능성이 높습니다. 그리고, 한가지 염두해 둬야 하는 부분을 말씀드리자면 기획자는 모두가 가져야할 패시브 능력이라는 것을 알려드리고 싶습니다.
프로그래머도 기획자이고, 아티스트들도 기획자이고, 스크립터도 기획자이고, 프로듀서, 시나리오 라이터 모두가 기획자입니다. 기획이란 것은 누구든지 할 수 있는 영역에 있습니다. 다만, 표현 방법이 다를 뿐입니다. 여러분이 게임 기획자라서 게임기획을 다른 팀원보다 더 잘한다고는 볼 수 없습니다. 오히려, 프로그래머 또는 아티스트가 더 좋은 아이디어를 내 놓는 경우들을 많이 봐왔습니다.
프로젝트의 분위기에 따라 기획력과 구현력의 균형을 갖춰야 합니다. 이상적인 소리로 들리겠지만, 기획력을 극대화 한 상태에서 최소한의 구현력을 동원해서 만들어 낼 수 있는 구조가 이상적이라고 봅니다.
"게임기획, 그 이상" - YK아이디어스쿨
카카오톡 상담 - ykideaschool, @와이케이아이디어스쿨
게임기획/게임개발/게임디자인아카데미/게임기획자매니지먼트
'게임개발자 > 게임개발컬럼' 카테고리의 다른 글
[가마수트라] 콘솔 게임의 시대에 인디 업계가 반향을 일으킨 방법 (0) | 2014.07.28 |
---|---|
판타지 작명생성기 - 판타지 세계관에 어울리는 이름 짓는 프로그램 (0) | 2014.07.28 |
[컬럼] 반도의 흔한 게임기획자 마인드 (0) | 2014.07.23 |
[컬럼] 게임기획자란 직업을 넘어 삶의 태도입니다. (0) | 2014.07.18 |
게임 기획자 지망생들이 만들어야할 포트폴리오와 좋은 기획자 선별하는 방법에 대하여 (0) | 2014.07.17 |