게임 범용 스크립트 '루아' 도입
2008.08.29 08:55
- 멀티미디어 브라우저 'ONE' -
안녕하세요. 제프입니다.
오랜만에 인사드립니다. 음악, 동영상, 2D-3D 이미지를 망라하는 멀티미디어 브라우저 'ONE'을 제작중인 군인입니다.
이전에는 자체 스크립트였던 ODS를 사용해오던 프로젝트에 루아 스크립트를 도입했습니다.
자체적인 스크립트를 사용함으로써 사용자들이 자체 스크립트를 따로 공부하고,
나중에 또다른 언어를 사용할때 또다시 다른 공부를 해야하는 불편이 있는관계로,
이미 있는 언어중 하나를 연동시키는 것이 더 낫겠다는 생각에 찾아본결과 가장 합당한 언어로 루아를 선택했습니다.
창조도시 여러분들은 루아보단 RPG XP에서 사용중인 루비가 더 와닿는 스크립트 일지도 모르겠습니다.
루아는 'World of Warcraft'라는 MMORPG에서도 성공적으로 UI 및 NPC처리에 사용된 사례가 있는 믿음직한 언어로써,
하늘아리 같은 UI만 제작하는 팀이 따로 있을정도로 루아를 알고 있는사람들이 적지 않습니다.
다만 이번 'ONE'에서 사용되는 루아는 그 사용폭이 광범위해진 것이 특징이라면 특징이겠습니다.
기존에 사용되던 스크립트들이 각 부분에 한정된 기능만을 사용할 수 있는 작은 붓이었다고 한다면,
이번에 전폭적으로 사용되는 루아는 프로그램의 로직 전체를 휘두를 수 있는 마법지팡이라고 할 정도입니다.
이렇게 스크립트를 광범위하게 사용할 수 있게된 이유는 기존의 프로그래머들이 스크립트와 C/C++ 등의 네이티브 프로그램을 전혀 다른 개체로 보고 작업도 따로 진행했습니다.
'ONE'에서는 C++은 루아를 위한 전폭적인 기능지원과 실제 프로그램을 주어진 상황에 맞게 표현하는 기능을 수행하며,
이미 C++ 상에 마련되어있는 각각의 자원객체들에는 자신을 컨트롤 하기위한 변수들이 들어있습니다.
루아는 프로그램이 어떻게 실행돼어야 하는지, 방향을 정하고 C++ 객체의 변수값만 바꿔주는 역할을 하게 됩니다.
예를 들면 다음과 같은 방식이 되는 것이지요.
===================================================
C/C++ 프로그램 : 어떤 물체를 자기 위치에 맞게 그린다.
루아 : 물체의 위치를 1씩 증가한다.
결과 : 물체의 이동 애니메이션
===================================================
이렇게 역할 분담을 함으로써, 논리적인 부분과 하드웨어적인 코드가 분리되고, 논리적인 수정이 쉽고 빠릅니다.
이는 C/C++ 프로그래밍 언어와 루아간의 통신이 가능하기 때문입니다.
- C/C++ 언어와 루아의 함수가 서로 호출한 결과화면 -
(C언어에서는 lua_func함수를, 루아에서는 cpp_func함수를 호출하는 코드로 이루어져있다.)
물론 C/C++로 모두 수행할 수도 있지만, 이경우 특정 개발환경이 반드시 필요하고, 변경을 하려면 소스코드를 바꾸어 실행파일을 다시 만드는 과정을 거쳐야 합니다.
스크립트는 파일 자체를 메모장으로 살짝 고쳐주는 것만으로 끝납니다.
게다가 루아는 현재까지 나와있는 가장 빠른 (기능이 안정적으로 모두 구현된) 스크립트이며,
'ONE'의 전폭적인 지원으로 복잡한 부분은 모두 C++상에 구현이 완료되어 있어, 스크립트를 사용하는 것에 있어서 실행속도가 떨어지는 것을 최소화 할 수 있습니다.
루아는 기본적으로 C코드와 비슷한 모습을 가지고 있습니다. 이는 나중에 정식으로 프로그래밍 언어를 공부하실때 도움이 될 것입니다.
다만, 각종 복잡한 개념이나 언어적인 기능지원은 ONE에 있어서 필요하지 않습니다.
(사용하면 조금은 더 키보드를 두드릴 일이 줄어들겠지만...)
이번 루아 도입으로 인해, 많은 분들이 더욱 자유로운 멀티미디어 환경을 조작 할 수 있다면 좋겠습니다.
PS. 루아언어는 바로 차기 버전부터 사용되며, 현재 홈페이지에 공개되어있는 브라우저는 ODS라는 자체 스크립트를 사용합니다.
댓글 5
-
백치
2008.08.29 10:51
-
Lie&Hell。
2008.08.30 01:45
c언어를 몰라서;; |+rp2+|288507|+rp3+|free -
A. 미스릴
2008.08.30 17:23
루아를 쓰면 C++는 입출력만 합니까?
그리고 txt파일을 수정하는거면 데이터 다루는게 간편하겠네요|+rp2+|288556|+rp3+|free -
Zeprod
2008.08.30 20:42
C++에 마련돼어있는 함수 몇가지만 알고 있으면 실제로 프로그래밍에 대한 지식은 없어도 프로그램을 만들 수 있게 돼는 것이죠.
몇가지라고 해봐야 10~20개정도, 손에 꼽을 정도로 적으니 금방 익숙해질 수 있습니다.
(저도 루아는 처음 접하는 것이지만, 자세한 건 몰라도 ONE의 기능을 끌어내는데에는 문제가 없습니다.) |+rp+|288556|+rp2+|288560|+rp3+|free -
Zeprod
2008.08.30 20:47
즉, C++로 구현됀 ONE은 각 데이터들이 자기 맡은 일을 수행할 기반을 제공하는 것이고,
루아는 데이터 자체에 명령을 내리는 간단한 작업만 수행하면 돼는 것입니다. |+rp+|288556|+rp2+|288561|+rp3+|free
|+rp2+|288478|+rp3+|free