본문 바로가기

[ C/ C++ 프로그래밍 ]/[ 루아 ]

[ 루아 ] 스크립팅 언어란?

[ 참고 및 출처 ] 
루아를 이용한 민첩하고 효과적인 게임 개발



스크립팅 언어는 컴퓨터의 기능성을 사람이 손쉽게 사용할 수 있도록 하는 수단이다.
원래 스크립팅 언어는 일괄적인 명령 수행 도구로 쓰였다. ==> 초기의 스크립팅 언어를 일괄(Batch)언어 또는 작업 제어(job-control)언어라고 불렀던
이유도 여기에서 비롯된다
ex) MS-DOS 시절의 *.bat 파일

스크립팅 언어들은  빠른 개발을 위해 쓰이며( 실행속도와 효율은 조금 희생하더라도), 비 프로그래머가 읽고 쓰기 쉬운  텍스트 기반 구문을
채용하는 경우가 많다.

핵심은, 일정한 교양을 갖춘 사용자라면 프로그래머의 개입 없이도 스스로 그크립트를 작성하고 사용할 수 있다는 점이다.
스크립팅 언어의 능력을 확장하기 위해, 다른 어떤 저수준 언어로 만든 기능성을 스크립팅 언어로 링크하기도 한다.

스크립트 파일은 실행시점에서 해석되기도 하고,  적재(loading, 불러오기) 시점에서 컴파일되기도 한다.
루아의 경우 적재 시점에서 이진코드로 컴파일하고, 이후 부터는 이진코드를 사용한다.

○ 루아
루아는 포르투갈어의 '달' 해당하는 말로, 1993년 Pontifical Catholic University(브라질) 에서 탄생했다.
Tecgraf의 한팀이 루아 언어를 개발하고 프리웨어로 공개 했다.
루아 개발팀의 목표 중하나는 C프로그래밍 언어와 잘 맞는 작고 효율적인 프로그래밍 언어를 만들자는 것었다.
루아는 스크립팅 언어들 중에서 가장 빠르고 효율적인 축에 속하며, 덕분에 게임 개발에 이상적인 후봐 되었다.

루아 핵심 모튤은 크기가 120K 이하이다. 그래서 게임 개발 시스템에 통합했을 때의 용량 부담이 작다.


 루아는 '접착체(glue)' 언어라는 점에서 전통적인 스크립팅 언어와 구별된다. 
기존의 전통적인 스크립팅 언어들은 반복적인 과제를 처리하는 용도로 만들어진 것이지만, 접착제 언어는 사용자가 다른 언어의 기능과 공정을
함께 "접착해서 통합하기 위한 도구로 만들어진것이다.
이런 방식은 프로그래머는 저수준 함수들을 구축요소로 사용해서 새로운 명령을 만들어 낼 수 있다.
루아를 이용해서 게임 개발의 주요 요소인 GUI, AI, 게임 자료등에 관련된 C++ 함수들을 통합하는 방법에 대해 배우게 될것이다.

루아는 그 자체로 단순하지만 강력한 언어이다. 루아로 할 수 있는 일은 무궁무진하다.
루아는 강력한 문자열, 수학 함수들과 유연한 자료 형식, 그리고 사용자가 함수를 직접 정의할 수 있는 능력을 갖추고 있다.
다만 루아를 다른 환경에 연결하는 어떠한 '접착제'가 없다면 그런 능력은 모두 무용지물이 된다.

루아는 C++ 같은 좀 더 강력한 저수준 언어와 함께 사용할 때 진정한 힘을 발휘한다.
그런 방식에서 게임 개발자는 게임 상황들을 빠르게 프로토타이핑할 수 있으며 게임 자체를 빠르게 완성시킬 수도 있다.
프로그래머의 개입 없이도 게임의 GUI 전체를 만드는 것이 가능하다. 또한 게임 자료를 이진 파일보다 읽고 디버깅하기 편한 행텨로
저장, 적재하는데 루아를 사용하는 것도 가능하다.

루아를 만든팀에 따르면, 루아는 응용 프로그램 안에 내장 할 수 있는 '언어 엔진'이다.
루아는 그 자체로 하나의 완전한 언어일 뿐만 아니라, 다른 언어로 개발된 응용 프로그램과 자료 교환할 수 있는 API까지 제공한다.
루아 안에서 호출할 수 있는 C++ 함수를 만드는 식으로 루아를 확장하는 것도 가능하다. ==> 그런 함수가 바로 앞에서 언급한 '접착제'
함수이다. 응용 프로그램 개발 언어와 함께, 쓰일 떄, 우라는 고유한 프로젝트 국한 언어를 구축하기 위한 하나의 틀 역할을 할 수 있다.
이러한 확장성 덕분에 루아는 게임 개발에 매우 잘 맞는다.

기본적인 명령줄 환경에서 실행되는 독립적인 언어로서의 루아는 상당히 제한적이며, 오직 학습 도구로 유용할 뿐이다.
루아는 다른 언어와 통합해서 사용하도록 만들어진것이며, 그럴때 진정한 힘을 발휘한다.