루아를 이용한 민첩하고 효과적인 게임 개발 (Paul Schuytema, Mark Manyen, 2005) 독후감

1 minute read

nil

3년 전쯤, 프로젝트에서 루아(lua)를 사용해 이 책을 처음 읽었다. 그리고 시간이 지난 지금 다시 사용할 일이 생겨서 펼쳐본 책. 그때 느낌 점을 기록으로 남기지 않아 가물가물하지만 지금 책을 읽고 느낀 점과 비슷했던 것 같다.

’루아 소개, 루아와 c++ 연동, 루아와 c++을 이용한 간단한 게임 작성’을 책에서 소개한다. c++ 연동까진 좋았는데, 간단한 게임을 만드는 과정은 지루하더라. 게임 제작 과정에서 어떻게 하면 루아를 효과적으로 사용하는지를 가르쳐준다기보단 그냥 게임을 쭉~ 만드는데 루아로는 이런 루틴을 이렇게 구현한다고 설명한다. 루아와 c++ 연동 이야기를 더 자세히 쓰고 “내가 써봤는데, 이렇게 하니 좋고 이렇게 하니 쉣이더라.”는 경험에서 우러나온 얘기가 많았으면 좋았을 텐데 아쉽다.

요즘 .NET Framework SDK를 보면서 클래스와 함수 설계를 많이 배우고 있다. 잘 만든 라이브러리를 사용하고 보는 것만으로도 공부 된다. 스크립트 언어라고 무시하면 안 된다. 루아 문자열 처리 함수 sub()에서 하나 배웠다. 문자열에서 웬만하면 마이너스 값을 사용할 일이 없는데, sub() 함수에서 아주 편리하고 직관적으로 사용했다. string.sub(myString, –5) 여기서 두 번째 인자는 시작 위치를 가리킨다. 인자로 사용한 -5는 제일 뒤에서 앞으로 5칸을 이동한 위치를 가리킨다. 어거지 같고 헷갈릴 것처럼 보이나 플러스는 맨 앞에서 뒤로 마이너스는 맨 뒤에서 앞으로 이동이니 이치에 맞고 직관적이다.

그리고 현재 상태를 저장하는 루틴도 충격. 난 이런 생각을 한 번도 못 해본 것 같다. 이 방법을 사용하면 게임 저장, 불러오기를 아주 간단히 구현할 수 있다. 변수에 값을 할당하는 정의문을 통째로 저장하고 저장된 파일을 dofile로 로드하면 간단히 구현 끝. 즉 파일에 저장할 때, currentLife = 48 처럼 바로 쓸 수 있는 정의를 저장하고 로드할때 저장된 파일을 그냥 실행한다. 역시 다른 언어도 다뤄봐야 해. 생각하는 폭이 달라진다.

스크립트를 메인으로 사용하는 방식이 신선했다. 보통 스크립트를 사용한다고 하면 UI 혹은 AI 등 사용할 부분을 정하고 거기에서만 사용하는데, 이 책에서는 될 수 있는 한 스크립트를 사용하고 속도가 중요한 부분을 c++로 빼는 방식으로 게임을 만든다. 신선하긴 한데, 난 이런 방식보단 범위를 좁혀서 사용하는 걸 선호한다. 요즘 게임 코드 복잡도가 상상을 초월해서 감당이 안 될 것 같다. 이런 스크립트를 메인으로 쓰는 방식은 작은 게임에나 어울린다.

게임 개발 경험이 있는 개발자는 별로 얻을 게 없는 책이다. 또한, 프로젝트에서 사용 중인 루아를 배우려는 게임 디자이너(기획자)가 보기에도 별로인 책이다. 이 게임 디자이너에겐 번역은 안 됐지만 wow 애드온으로 배우는 루아책들이 더 도움이 될 것이다. 그럼 누구에게 좋을까? 게임 개발 과정에 꼭 들어가는 렌더링, 충돌 처리, AI 등을 다루고 있어 루아에 관심있는 이제 막 게임 개발을 시작하는 프로그래머에겐 좋은 책이 될 것 같다.

Tags:

Categories:

Updated: