꽃미남 프로그래머 김포프가 창립한 탑 프로그래머 양성 교육 기관 POCU 아카데미 오픈!
절찬리에 수강생 모집 중!
프로그래밍 언어 입문서가 아닌 프로그래밍 기초 개념 입문서
문과생, 비전공자를 위한 프로그래밍 입문책입니다.
jobGuid 꽃미남 프로그래머 "Pope Kim"님의 이론이나 수학에 치우치지 않고 실무에 곧바로 쓸 수 있는 실용적인 셰이더 프로그래밍 입문서 #겁나친절 jobGuid "1판의내용"에 "새로바뀐북미게임업계분위기"와 "비자관련정보", "1판을 기반으로 북미취업에 성공하신 분들의 생생한 경험담"을 담았습니다.
Posted by 알 수 없는 사용자

안녕하세요. 알콜코더 민군입니다.

 

현대 게임 개발의 가장 기본적인 모토는 데이터 주도 개발(DDD. Data Driven Development)입니다.

바로 순수한 게임 클라이언트 자체는 일종의 게임 엔진과 같은 역할을 하면서, 외부의 데이터를 기반으로 게임을 제작하는 아키텍쳐입니다.

, C++로 제작된 게임 클라이언트는 게임의 핵심 요소만을 구성하면서,  외부에서 사용할 수 있는 API를 제공하고,  게임 코어 외부에서는 루아와 같은 스크립트로 게임 로직을 제작하고,  XML같은 데이터 파일로 게임의 요소등을 정의합니다.

이러한 방식을 가장 잘 활용한 것이 바로 WOW입니다. 와우의 경우에는 UI면에서 이러한 루아 스크립트와 XML을 유저들에게 제공하여, 유저들에게 맞는 다양한 커스터마이징 UI와 애드인들을 제작할 수 있게 되어 있습니다. 그리고 이러한 방법이 크게 성공하여, 수많은 유저들이 만든 다양하고 유용한 애드인 역시 상당히 많습니다.

그래서 와우 이후에도 수많은 게임들이 스크립트를  개발에 다양하게 활용하고 있고, 유니티나 언리얼 같은 게임 엔진은 스크립트만으로도 게임을 제작할 수 있는 형태입니다.

 하지만 제가 이야기 하려는 것은 이런 외부 사용자나 엔진 사용자를 위한 스크립트가 아니라,  실제 게임 개발 내부에서 사용되는 스크립트의 사용에 대해서 이야기를 하려고 합니다.

게임 개발에서 스크립트는 필수 불가결한 요소라는 의견도 많고, 저 역시 그런 의견들에 상당히 동의합니다. 그런데 과연 대한민국의 게임 개발에서 스크립트란게 정말로 유용할까요? 결론부터 이야기하면, 제 개발 경험에 비춰 보았을 때  저는 그렇지만은 않다고 생각합니다.

 

스크립트는 누가 작성하는가?

원래 스크립트의 용도는 앞서 이야기했듯이, 게임 코어에서 제공하는 API들을 가지고, 게임의 로직을 개발하는 용도입니다.

, 일반적으로 게임 코어는 프로그래머가 제작을 하고, 레벨 디자이너나 퀘스트 디자이너 같은 기획자들이 스크립트를 가지고 게임을 제작하는 형태입니다. 실제로 해외 게임의 포스트모텀들을 보면 이런 형태로 스크립트가 사용되어서 개발되고 있습니다.

그러면 과연 대한민국에서도 그럴까요? 아닙니다. 대한 민국의 대부분의 게임 회사에서는  루아 스크립트는 바로 프로그래머가 개발하고 코딩합니다! 전 이것이 가장 큰 문제라고 생각합니다.

한국 게임 개발에서의 스크립트 사용은 간단히 말해서 아래처럼 이루어 집니다.

1.    프로그래머가 게임 코어에서 API를 제작한다

2.    프로그래머가 루아 편집기를 열어서, 자신이 뽑아낸 API를 사용하여 로직을 구현한다.

3.    프로그래머가 만들어진 루아 스크립트를 호출하는 코드를 게임내에 작성한다

4.    게임을 돌려서, 루아 코드를 테스트한다.

5.    부족한 기능이 있으면, 또다시 API를 제작하고, 빌드하고, 루아 코드를 수정한다.

사실 이럴거면, 굳이 기능들을 루아 스크립트로 뽑아낼 필요가 없습니다. 그냥 C++ 코어단에서 직접 로직을 만드는게 훨씬 편하고 간단합니다.

굳이 API로 뽑아내고, 익숙하지 않은 루아 코드로 로직들을 어렵게 구현하고, 그것을 게임에서 다시 호출한 코드를 만들 시간과 노력이 왜 필요하겠습니까? 더불어 루아는 브레이크 포인트도 없고, 디버깅도 어렵습니다.. ==;

그냥 C++로 게임 내에서 작성하면 몇줄로 끝날 코드도, 굳이 루아 스크립트를 사용하기 위해서 코드를 작성하면 몇배의 코드와 몇배의 함수들이 생기는 경험은 다들 해보셨을 겁니다.

이것만큼 잘못된 프로세스가 또 어디있을까요? 이건 마치 억지로 루아를 사용하기 위해서, 개발 프로세스를 끼워 맞추는 꼴입니다.

 

프로그래머가 스크립트를 작성해야 하는가?

왜 위와 같이 잘못된 프로세스가 생겼을까요? 원래 루아를 사용할려는 것은 코어 개발자와 게임 로직/컨텐츠/UI 개발자를 구별하기 위한 것이 목적입니다.

, 기획자(디자이너)가 프로그래머가 제공된 기능들을 가지고, 기획 의도대로 마음껏 게임을 개발하고, 변경하고 테스트하기 위한 것이 목적이었던 것입니다.  그래서 프로그래머들은 그런 해외에서 성공한 프로세스들을 공부했고, 그것이 맞다고 배웠습니다.  그렇기 때문에 지금도 열심히 스크립트를 게임에 적용하고 있습니다.

하지만, 한국에서 정작 루아를 공부하는 기획자는 정말로  드뭅니다. 실제로 저도 10년 가까운 개발 경력동안 루아를 코딩할 줄 아는 기획자를 거의 못 봤습니다. 또한 공부하는 기획자 역시도 보지 못했습니다. …. 물론 루아를 공부하는 프로그래머라면 지겹게 봐왔죠. ==;;

실제로 기획자들과 스크립트에 관련된 회의를 하면 아래 처럼 됩니다.

 

프로그래머 : 캐릭터 FSM을 루아로 빼줄 테니, 직접 작성해서 만드세요

기획자 : ?? 내가 왜요? 내가 왜 코딩을 해야 합니까? 나 루아 할줄 몰라요. 그냥 테이블로 만들어 줄께요. 루아 하기 싫어요.

프로그래머: ..그럼 테이블로 만들어주세요. (해달라는데로 해줘야지.ㅅㅂ..)

(그리고 프로그래머는 FSM 관련 API를 만들고, 루아 스크립트로  FSM 코딩을 하고, 게임에 넣어서 개발한다)

 

이렇게 되면 처음 이야기한 것처럼, 굳이 필요없이 스크립트를 사용하는 프로세스가 됩니다. 다시한번 이야기하지만, 이럴 거면 걍 C++ FSM 만드는게코드도 훨씬 간결해지고, 로직도 간단해 집니다. FSM을 루아로 빼기 위해선, 수많은 상태 체크와 관련 함수들을 전부 루아 API로 빼줘야 하기 때문입니다.

 

억지로 스크립트를 써야만 하는가?

위에 언급했듯이 스크립트의 단점은 개발 프로세스가 복잡해지는 것만은 아닙니다.

l  스크립트는 디버깅이 상당히 어렵다

l  스크립트는 VS처럼 전문 개발툴이 없다

l  스크립트는 로딩과 실행 속도가 C++에 비해 몇십배나 느리다.

 

위와 같은 다른 문제점들도 많습니다. 사실 그래서 꼭 스크립트 안 써도 됩니다. 물론 개발하는 게임의 규모가 상당히 커서 스크립트가 꼭 필요한 경우도 많지만, 사실 안 써도 되는 경우도 훨씬 많습니다. 그냥 스크립트가 있으면, 스크립트를 사용하면 더 좋다는 막연한 잘못된 환상으로 억지로 스크립트를 사용하기 위해서 잘못된 프로젝트 구조를 만드는 경우를 훨씬 더 많이 봐왔습니다.

물론, 가장 좋은 사용법은 앞에서 언급했듯이 코어 프로그래머와 로직을 구현하는 디자이너가 분리되어 자신의 역할을 잘할 때 가장 효율적으로 스크립트를 사용할 수 있습니다. 그렇지 않은 것이 현재 한국 개발의 현실인 것을 감안하면굳이 억지로 스크립트를 사용해야 한다는 환상을 가지고 개발 프로세스를 더욱 복잡하게 만들어 버리는 케이스가 더욱 많습니다.

 

이러한 경우라면 저는 억지로 스크립트를 사용하지 않아도 된다고 생각합니다. 왜 굳이 무엇을 위해서 어렵게 코드를 만들고, 디버깅할때 C++에서 루아를 따라가야 하며, 제대로 디버깅도 되지 않는 스크립트를 써야 할까요? (디버깅하다가 루아 호출 함수를 만나면, 노트패드에서 루아 코드를 꺼내 봐야 하죠. 그것도 브레이크 포인트도 안걸리는 코드를…)

지금 혹시여러분도 억지로 스크립트를 사용해야 하기 위해서, 스크립트를 게임 코드에 붙이고 있지는 않나요? ^^;

반응형
,