벌써(가 아닌가요..먼산) ‘프로그래밍 루아‘를 기다려 주시는 분들이 계시네요.

‘프로그래밍 루아’은 권태인 님이 번역을 하시느라 수고해 주셨고, 류광 님이 감수 작업을 해주셨죠. 그 이후로 원종훈 님, 이황춘 님, 윤종현 님, 이순규 님, 정한기 님, 차동렬 님의 리뷰까지 많은 분들이 ‘프로그래밍 루아’를 위해 애써주셨습니다.^^
이렇게 여러 과정을 거치느라 역사가 길어졌던 ‘프로그래밍 루아’가 이제서야 빛을 보게 되네요. (이렇게 말하면 바로 발간되는 것 같아, 포스팅하는 편집자 손이 좀 떨리긴 합니다만;)

루아(Lua)는 포르투갈어로 ‘달’을 뜻합니다. 루비(Ruby)도 그렇지만 루아도 참 이름이 예쁘다는 생각이 들어요. (왜 루아라는 이름을 붙였는지 아직 그 의미를 파악하지 못했는데 혹시 아시는 분…?)
루아는 WOW(월드 오브 워크래프트)의 애드온 개발용 언어로 사용되어, 게임 개발에서 그 유용성을 당당히 입증했고, 확장성이 뛰어난데다 C와 호환이 잘되고, 빠른 실행이 특징이라 하지요.
그 ‘루아’를 6월이 되면 보실 수 있으실 것 같아요.^^ (근데, 6월 중~후반;)

책이 나오길 기다려주시는 분들께 괜시리 애태우게 만드는 것 같아 죄송시려운 마음이 들기도 하고, 더불어 감사하는 마음도 드네요. 더욱 열심히 만들어야 겠습니다.^^
책이 나오기 전에 먼저, ‘라그나로크그라나도 에스파다의 개발자이자 게임 프로듀서인 김학규 님께서 써주신 추천사를 공개하려 합니다. 루아가 게임 개발에서 어떻게 쓰이는지, 살짝쿵 들여다 볼 수 있으실 듯.

진행하다 짬짬이 프로그래밍 루아에 대한 소식을 들려드릴 테니, 조금만 더 기다려 주시길~^^

—-
추천의 글(김학규, IMC게임즈 대표)

게임 프로그램을 만들다 보면, 프로그래머로서의 욕심이 점점 생기기 마련이다. 어떻게 하면 더 깔끔하고 빠르고 재사용하기 좋은 프로그램을 만들 수 있을까? 어떻게 하면 지금 만든 프로그램을 내가 아닌 기획자들이 직접 수정할 수 있도록 만들어주고 나는 놀 수 있을까? 이런 고민을 하면서 프로젝트가 끝나고 새로운 프로젝트를 반복하다 보면 내가 만들어야 하는 것은 단순한 게임 소프트웨어가 아닌 게임 엔진을 만들어야 한다는 것을 절실히 느끼게 된다.

 

게임 소프트웨어가 아닌 더 범용성이 높은 엔진이 되기 위해서는 기획자나 아티스트가 단순히 칸 안에 들어갈 값만 바꿀 수 있는 것이 아니라 칸 자체를 바꿀 수 있거나, 로직을 디자인할 수 있게 해줘야 할 것이다. 그런 로직을 디자인하려면 어떤 형태로든 로직을 기술할 수 있는 언어를 마련해야 하고, 그런 언어는 목적에 부합하면서 가볍고, 비 프로그래머가 쉽게 활용할 수 있도록 이해하기 쉬워야 한다.

 

초창기의 개발자들은 게임 개발 시간의 많은 부분을 자체적인 언어 제작에 할애해야만 했다. 게임이라는 인터렉티브한 특성상, 성능이 좋으면서 너무 무겁지 않으면서 융통성이 있는 언어를 구할 수 없기 때문이었다. 나의 경우에도, 악튜러스라는 패키지용 RPG 게임을 제작할 때에는 자체적으로 제작한 간이 스크립트 언어를 사용했었던 적이 있다. 그러나 언어를 제대로 만들어 활용하는 것은 상당한 노력을 요하는 일이며, 제약조건도 많아지곤 한다. 그러다가 언제부턴가 루아라는 언어가 게임 쪽에 도입되어 성공적으로 프로젝트에 적용되었다는 사례가 개발자들 사이에 알려지면서 루아에 대한 관심이 높아지게 되었다.

 

나의 경우에는 2002년까지 MMORPG를 만들고 나서 그라나도 에스파다라는 새로운 MMORPG 프로젝트를 준비하고자 여러 가지 기술적 준비와 검토를 하면서 루아를 접하게 되었다. 그 전작을 만들면서 기획자들에게 자유도가 높지 않은 게임 클라이언트/서버를 운용하면서 프로그래머의 부담이 컸던 문제점을 새로운 프로젝트에서는 개선하는 것을 목표로 하고, 최대한 기획자와 아티스트가 프로그래머에 의존하지 않으면서 데이터를 만들고, 로직을 만들고, 구조 자체도 유연하게 만들 수 있는 엔진이 필요하다는 것을 알게 되었다. 그 와중에서 가장 우려한 사항은 mmorpg의 특성상 서버가 최대한 많은 수의 접속자와 다른 오브젝트들의 처리를 수행해야 하는데 과연 인터프리터 방식으로 동작하는 스크립트 언어에게 실행의 많은 부분을 맡겨도 되겠는가 하는 점이었다. 게다가 그라나도 에스파다라는 게임의 특성상 한명의 플레이어가 3명의 캐릭터를 조작할 수 있고, 몬스터도 대량으로 등장하는 구성이었기 때문에 그 부담은 더욱 컸다. 그리고 기존 MMORPG에 루아가 적용된 사례가 있었는지 여부를 몰랐기 때문에 루아를 선택한 것은 상당한 리스크를 감수한 결정이었다.

 

결과적으로 루아는 그라나도 에스파다의 서버에 성공적으로 적용되었고, 지금도 서버는 잘 돌아가고 있다. 적절한 최적화를 위한 설계와 적용에 의해 충분한 성능을 확보할 수 있었으며, 기획자들의 자유도가 늘어남과 동시에 프로그래머들의 부하가 줄어들었음은 물론이다. 또한, 기획자들도 처음에는 루아의 기초적인 기능들만 사용하다가 점점 시스템에 익숙해지면서 프로그래머의 도움 없이 많은 기능을 스스로 만들어내는 것을 볼 수 있다. 지금도 많은 업데이트들이 프로그래머의 도움 없이 기획자들의 선에서 만들어지고 있다.

 

그 과정에서 한 가지 아쉬웠던 것은, 루아라는 언어에 대해 깊게 알 수 있는 자료가 별로 없었던 점이다. 루아라는 언어가 배우기 어려운 것은 아니지만, 루아를 쓰다보면 좀 더 효율적으로 사용할 방법과, 다양한 기능을 원하게 된다. 이 책의 원서인 Programming in Lua는 루아에 대한 가장 권위 있고 포괄적인 설명을 담고 있다. 그동안 번역서의 부재로 인해 아쉬웠던 차에 이 책이 출간되어 매우 다행스럽게 생각한다.

 

앞으로도 루아의 활용도는 점점 넓어질 것으로 기대하고 있다. 특히 루아는 단순한 스크립트 언어 이상의 고급 기능을 많이 지니고 있기 때문에 C나 C++위주로만 사고방식이 굳어지기 쉬운 게임 프로그래머들에게는 꼭 루아를 접하고 활용해볼 것을 권하고 싶다.