'공모전'에 해당되는 글 1건

lua를 이용한 게임 프로그래밍.. :: 2007/11/10 01:30   by 김기환(17기)

흔히 lua는 게임에 특화된 스크립트 언어라고들 합니다.
원래 게임용으로 개발된 언어는 아니지만 게임에 적용하기 좋은 여러가지 조건을 가지고 있기 때문에 게임 제작시에 많이 사용하게 되었고 현재도 국내외의 유수의 게임업체에서 온라인 게임이든 패키지 게임이든 게임을 개발하는데 적극 활용하고 있습니다.
저희가 이번에 게임을 개발하는데 적극 참고하려고 햇던 world of warcraft부터 시작해서 라그나로크, 그라나도 에스파다 등의 온라인 게임을 비롯, 홈월드나 네버윈터나이츠같은 패키지 게임에도 루아가 사용됬는데요
프로젝트를 기획하기 전부터 루아의 활용 사례나 유용성에 대해서 많이 들어왔던 터라 이번 프로젝트에서는 저희 팀에서도 루아를 도입하기로 결정하였습니다.

그렇지만 루아를 도입한다고 해도 루아가 맡은 부분을 어떤영역까지로 한정시킬 것이냐와 어느정도선까지 루아에게 제어권을 넘길것이냐 등에 대한 논의가 필요했습니다. world of warcraft같은 경우에는 인터페이스를 구성하는데에만 루아를 사용했고, 라그나로크 같은 경우엔 펫의 인공지능을 서술하는데 루아가 쓰였다고 합니다.
보통 유저들에게 자유도를 주기 위한 부분에,스크립트 언어의 특성을 잘 살릴 수 있는 부분에 루아가 쓰이고 있었습니다. 그렇지만 저희 팀에서는 논의 해 본 결과 더욱 더 범위를 확대하여 좀 더 많은 영역에 루아를 사용해보자고 결정했습니다. 인터페이스나 인공지능 등의 각각의 조그만 분야에 한정해서 사용하는것이 아니라 인터페이스를 포함해서 게임 전반적인 진행에 대한 제어를 전부 루아에게 맞기는 쪽으로 게임의 기본 설계를 잡았습니다. 이렇게 루아의 비중을 높여서 설계한 것은 제가 루아에 대한 부분을 담당하여 게임 인터페이스와 게임 구성 및 흐름 제어 등을 담당하게 하고 같은 팀원인 동훈이형은 엔진 프로그래밍에 전념할 수 있도록 하기 위함이었습니다. 스크립트 언어는 컴파일 되지 않은 상태로 들어가기 때문에 사용자가 마음대로 수정해선 안되는 게임의 로직 제어에 루아를 사용하는것이 위험해 보일수도 있을것 같은데요, 루아는 인터프리터 언어이지만 컴파일하여 바이트코드로 변환하여 사용하는것도 가능합니다. 실제 사용자에게 배포하거나 하는 경우에는 변경되어선 안되는 부분은 컴파일 하여 배포되게 됩니다.

우선 이번에 개발한 G3 engine을 이용해서 공모전에 출품하기 위한 게임을 제작하는데 위에서 말한대로 설계하고 제작하게 되었는데요, 공모전에 출품하고 난 지금 평가해보면 상당히 성공적이었다고 생각됩니다. 우선 엔진 프로그래밍과 루아를 이용한 프로그래밍이 완전히 분리되어 있었으므로 각자 맡은 분야의 완전한 모듈화가 가능했습니다. 서로 상대방의 구현 정도에 영향을 받지 않고 자신의 작업을 할 수 있었기 때문에 작업의 효율이 굉장히 좋았다고 생각합니다. 더욱이 source safe를 사용했기 때문에 서로 구현한 부분을 그때그때 통합해서 결과를 바로 확인 할 수 있었던 점이 좋았다고 생각됩니다.

그리고 이번 공모전 준비를 통해서 처음으로 lua를 접해보게 되었지만 루아라는 프로그래밍언어의 유용성에 대해서 제대로 체험 할 수 있었습니다. 배우는것도 쉬웠으며 책이나 인터넷에서 봤던 루아라는 언어의 특징(단순함, 사용의 용이성)등을 사용하는 내내 실감할 수 있었고 특히 테이블을 이용한 여러가지 테크닉 등은 C언어를 이용하여 프로그래밍 할 때 보다 훨씬 더 쉽게 생각했던 내용들을 구현 가능하게 했습니다. 더욱이 테이블과 메타테이블을 이용한 객체지향 프로그래밍 테크닉은 저같이 자바나 C++에 익숙한 사람이 쉽게 루아를 이용해서 객체지향적으로 프로그래밍 할 수 있도록 해 주었고 루아를 이용하여 복잡한 게임 안의 흐름 제어나 인터페이스 제어등의 로직을 구성하는데 큰 도움을 주었습니다.

개인적으론 이번 프로젝트를 통해서 루아라는 언어를 알게되었고 사용해 본 것이 굉장히 큰 수확이라고 생각합니다. 다음번에 출전 준비를 하게 될 imagine cup에서도 적극적으로 활용방안을 모색해 볼 것이고 사용법이 굉장히 쉽고 가볍기 때문에 게임 이외에도 앞으로의 프로젝트에서 여러 용도로 사용하게 될 것 같습니다.^^

☆ 글쓴이 소개☆
김기환(17기)님의 글입니다.

Trackback Address :: http://blog.swssm.org/trackback/93
Name
Password
Homepage
Secret