최상단 광고

2012년 4월 9일 월요일

Lua에 대한 간단한 세미나를 했을 때 문서

회사에서 클라이언트 팀에서 처음으로 세미나라는 것을 했다.
그때 발표를 할 때 내머리 속의 지우개가 있는 듯 했다.
그때 아직 3개월도 채 되지 않은 나이기에.... 음. 다시 생각 해보니 지금은 3개월 하고 일주일이 넘었군...
아무튼 그때 발표할 때 썼던 문서를 다시 정리 해 보겠다. 귀찮아서... 대충만... ㅡ.,ㅡ;;
완전 허접하지만 이뿌게 봐주시길...


* 스크립트란?
 초기 스크립트언어는 일련의 반복적인 명령들을 일종의 명령 처리기에 집어넣는 수단이었다.
이가 발전 함에 따라서 용도가 변하여 빠른 개발을 위해 쓰이며 비 프로그래머가 읽고 쓰기 쉬운 텍스트 기반 구문을 채용하는 도구로 변모하였다. 
일정한 지식을 갖춘 사용자라면 프로그래머의 개입 없이도 스스로 스크립트를 작성하고 사용할 수 있다.


* 루아란?
 루아는 “접착제(glue)” 언어라는 점에서 위의 스크립트언어와 차별된다. 
기존의 스크립트 언어들은 반복적인 작업을 처리하는 용도지만 루아는 사용자가 다른 언어의 기능과 공정을 함께 “접착해서” 통합하기 위한 도구로 만들어진 것이다. 
이런 방식은 단순히 명령들을 수행하는 것 이상의 일을 할 수는 강력한 도구이다.


* 루아의 장단점
- 장점
루아는 애초부터 좀 더 큰 응용 프로그램에 내장 시킬 것을 목적으로 고안된 언어이기에
확장성이 크다. 루아와 C언어의 통신이 쉬우며 기술적 설계안에서 구현하기 비교적 쉽다.
루아는 작고 빠르며 이식성이 뛰어나다. 이 말인즉 실행시점 메모리 사용량 측면에서 부담이 적고, C보다는 느리지만 파이썬과 같은 언어보다 빠르다. 
그리고 새로운 하드웨어로 옮긴다해도 큰 수정없이 가능하다.


- 단점 
루아는 파이썬에 비해 지원 라이브러리가 부족하다.
루아에 대한 소개자료가 아직은 부족한 편이다.
단독 실행 인터프리터로서 사용하기에는 빈약하다.


* 루아가 게임 개발에 적합한 이유
- C++과 연동이 잘되며 C++을 이용해서 확장할 수 있다.
- 확장성이 뛰어나 기술적 설계안에서 구현하기 쉽다.
- 작고 빠르며, 이식성이 뛰어나다.
- C를 접해본 사람이라면 배우기 쉽다.
- 그리고 무료이다.


* 루아의 사용처
- 게임내의 UI를 제작
 UI는 루아를 이용하여 조작할 수 있고 유저가 루아를 통해서 UI로 커스텀마이징 가능하다.
- 게임의 자료의 정의, 저장, 관리
 데이터 주도적 설계를 할 수있다. 모든 객체의 매개변수와 특성을 정의하여 하드 코딩을 통한 구현보다 외부 데이터로 관리하는 편이 데이터 수정이나 추가면에서 많은 이득을 볼 수있다.
- 실시간 게임 사건들의 관리
 일반적으로 게임 내부에서 상호작용간에는 이벤트가 발생하는데 , 이러한 것을 관리 할 수있다.
- 게임의 인공지능 시스템을 작성
 인공지능을 루아로 제어가 가능하다. 이를 이용하여 스크립트 작업자가 프로그래머 없이 작성이 가능하고, 이후에 유저가 직접 AI를 구성할 수 있다.




* 루아 스택이란?
- 루아는 C에서 사용하는 메모리 공간과는 별도의 메모리 공간을 사용을 하는데
이를 스택이라고 부른다. 스택은 루아의 명령 및 변수등의 데이터를 저장하고 있다. 
이 스택은 아래에서 부터 쌓여 나가며 이에 접근하기 위해서 인덱스를 사용하고 있는데
인덱스는 문자열을 이용하여 인덱스로 변환을 해서 사용을 한다. ( 이 부분은 뒤에 자세한 설명 )












에구... 연신 붙여넣기 하면서 귀찮은 부분은 않했는데...
나중에 다시 작업 하겠습니다.


흐미... 몇일 지나서 하는거야... ㅡ.,ㅡ;;;


현재 되는 기능을 나열 해보겠다.
나열하기 전에 용어에 대해서 정의를 하고 넘어 간다.
C는 우리가 작업을 하는 C, C++을 통합적으로 말하는 것이고 당연히 닷넷등의 컴파일러상의 언어를 말한다. 
루아는 루아문법을 말한다. 
값( Value )은 Value 즉 포인터가 아닌 실제 값을 말한다.


1. C 와 루아간의 함수 호출
  C함수를 루아스택에 등록을 하고 루아 함수를 C에서 호출 가능하고
2. C 와 루아간의 Value를 주고 받을 수 있다.
3. C의 클래스를 루아 스택에 등록을 한다.
4. 루아 스택에 등록이 된 C 클래스의 인스턴스 포인터를 넘겨서 
   루아 스택에서 바로 조작이 가능하다. 


개인적으로 4번이 가장 유용하고 많이 쓰이는 것 같다. 
언리얼 엔진은 메인 뷰어를 두고 밑에 에디트 창을 통해서 메인 뷰어( 게임 화면 )의 객체를 조잘 할 수 있다고 한다.
현재 작업은 그런식으로 가능하게 되는데 상당히 유용한 듯하다.
이번주에 작업을 해서 화면의 싸이즈를 변경한다 든지 백그라운드 색상을 바꿀수 있는데 
어찌나 좋던지...^^ㅋㅋㅋㅋ


앞으로는 AI와 UI의 이벤트 처리를 해볼 것이다. 
다른 사람들은 어떻게 사용하는지 모르겠지만 어째든 유용하게 사용하고 있는듯 하다.

댓글 없음: