개인적인 루아 스크립트의 장단점

1,103 views
Skip to first unread message

redpixel

unread,
Dec 19, 2005, 4:20:21 AM12/19/05
to klug
메일링 관리자인데도 자주 글을 적지 못해
죄송합니다. 류광님이 번역하신 "Game Development with
Lua"라는 책을 받아 읽어보고 메일링 활성화 겸사겸사
짬짬히 글을 올려볼까 합니다. ^_^ 많은 정보교류
기대하겠습니다.

제가 아는한 현재 게임현업에서의 lua의 활용용도는
"프로그래밍가능한 config화일"입니다. 그러기에는
너무나 편한 테이블이라는 타입이 루아에 있기
때문이죠. 저는 개인적으로 100% 루아기반의
게임엔진을 현재 제작중에 있습니다만 그렇게
굴려본지라 많은 장단점을 느끼게 되었습니다.
생각나는데로 한번 나열해보겠습니다. 우선
장점입니다.

1. 라이센스 : 상업적용도든 소스를 고치든 법적으로
아무 문제가 없습니다. 그럼에도 불구하고 버그도
거의 없는 안정적인 코드를 보여주죠.

2. 작은 footprint 및 빠른 실행속도 : 제가 임베딩
winXP에서 실행시켜본 경험이 있었는데 C로 짠
프로그램이나 Lua로 얻어서 돌리나 거의
비슷했습니다. 조금 어려운점이었다면 gcstep 크기를
맞추는것이었는데, 이것은 프로젝트 종료시점에
극한테스트하면서 맞추면 되니 그다지 문제가 되지
않더군요. 요즘과 같은 기가급 CPU에서는 거의 CPU
Loss가 없다고 봐도 될정도입니다. (물론
구조나름이지만 말이죠)

3. 쉬운 바인딩 : 펄과 파이선, 심지어 자바에
바인딩작업을 해보시면 루아가 얼마나 쉬운
바인딩구조를 가지고 있는지 알수 있습니다. 게다가
5.1에서는 lightuserdata에 메타테이블을 걸수 있기
때문에 완벽한 enduser 스크립트시스템을 구성할 수
있죠. 보통 바인딩때 어려운점이 C/C++에서의
클래스/구조체들을 어떻게 반영하나인데, 루아는 꽤
일관성있는 API를 제공한다고 개인적으로 생각하고
있습니다. (__index/__newindex 메타메소드때 해쉬값으로
switch()를 걸어사용하면 문자열비교로 인한 상당한
과부하를 줄일수 있는 등의 꽁수도 많답니다^_^)

제가 생각하는 단점은 다음과 같습니다.

1. 비객체지향적 언어구조 : 이것은 스크립터는
자신만의 객체를 만들기가 힘이 든다는 얘기입니다.
메타테이블을 쓰면 되지 않냐라고 하실수 있지만
상속이라는 개념자체가 없으니 파이선과 같이
굴릴려는 생각이 있으시다면 루아는 좋은 선택이
아닙니다.

2. 거의 기본만 지원하는 확장기능들 : 파이선,루비와
같은 언어에 비하면 거의 없는거나 다름이 없습니다.
즉, 어느정도 규모가 되면 루아만으로는 어떤
완성품을 만드는건 기대할수 없고 꼭 C/C++ 코딩및
바인딩작업이 따라오게 됩니다.

3. C위주의 바인딩 라이브러리 : angelscript같은 경우는
요즘 트랜드인 C++에 맞추어져있습니다. 라이브러리가
C위주로 맞춰져있어 진정한(?) C++개념에 맞춰
만들어진 코드를 바인딩하려면 wrapper를 작업해야하는
단점이 있습니다. (헌데 이것은 파이선, 자바등등
대부분의 언어바인딩도 마찬가지입니다. 심지어 C#과
같은 .net 바인딩도 마찬가지죠)

5.1이 크리스마스에 정식 릴리스되면 레퍼런스 메뉴얼
번역작업을 들어갈까 생각중입니다. 분업번역에
생각있으신 분들은 저에게 메일을 주시거나 답글을
달아주시면 제가 따로 번역방법을 모색해보겠습니다.


- redpixel

Reply all
Reply to author
Forward
0 new messages