로블록스 스튜디오로 로블록스(ROBLOX) 게임 만들기 06: "Hello Lua"

아 드디어 스크립트까지 어찌어찌 넘어왔네요~.

단순히 게임을 만들어야겠다는 생각으로 시작했는데, 디자인부터 프로그래밍, 그리고 퍼블리싱, 마케팅까지 다 해야 하는 이 플랫폼을 공부하고 이해하는 것이 쉽지는 않네요.

로블록스는 새로운 세상에 발을 들여놓은 느낌인 것 같습니다. 아직 조작도 미숙하고 엉성한 플레이에 게임을 만들 수 있을까? 하는 의구심이 들기도 합니다.

그래도 하다 보면 익숙해지겠지요.

사설이 길었습니다. 오늘부터는 루아 스크립트에 대해 알아보려고 합니다. 로블록스 스튜디오에서는 프로그래밍을 하기 위해 루아 스크립트라는 언어를 사용합니다.

모든 프로그램 언어를 배우기 위해서는 문법을 알아야 합니다. 문법이라는 말에 벌써 지겹기 시작합니다.

하지만, 외국에 나가도 그 나라 언어는 몇 가지 알고 있어야 인사 정도는 하면서 친해지지 않나요?

로블록스 스튜디오를 시작하면 explore 창이 나오는데 거기에서 SeverScriptSevice 항목을 찾습니다.

마우스를 가져다 놓으면 옆에 +버튼이 생기는데 클릭을 하게 되면 아래와 같이 사용할 수 있는 오브젝트들을 선택할 수 있습니다.

Script를 선택해서 들어갑니다.

에? 작성하지도 않았는데,

라고 나옵니다. 어느 프로그램에서나 맨 처음에는 "Hello world"가 나옵니다. 루아 스크립트도 마찬가지였네요~

플레이 버튼을 눌러서 실행시켜보면 output 창에

Hello world! 가 출력된 것을 확인하실 수 있습니다.

제일 처음 만난 Lua의 첫 스크립트 문법은 Print() 내장함수입니다. 괄호 안에 쌍따옴표로 묶인 텍스트를 아웃풋 창의 출력하는 문법입니다.

그럼, 꼭 " "로 묶인 것을 출력하는 걸까요? 아닙니다. 실제의 문법은 아래와 같이 매개변수를 입력하는 방식입니다.

즉, 매개변수로 전달된 것을 출력하는 것입니다.

실행시켜보면, Hello lua"가 출력되는 것을 확인하실 수 있습니다.

이것은 단순히 텍스트만을 출력하는 것이 아니라는 것을 눈치채셨을 겁니다.

위의 스크립트에 이어서 이렇게 작성하면은 점수에 대해 출력하는 스크립트가 됩니다.

간단하게 생각하면 텍스트뿐만 아니라 숫자도 같이 출력할 수 있다는 말이죠.

여기에서 숫자는 즉 스코어는 변수를 사용했습니다.

  • [jd

    score라는 변수에 100이라는 숫자를 집어넣습니다.

    score라는 변수에 100이라는 숫자를 집어넣습니다.

  • [jd

    점수를 출력합니다.

    점수를 출력합니다.

  • [jd

    score 변수에 score 변수에서 -50을 해준 값을 집어넣습니다.

    score 변수에 score 변수에서 -50을 해준 값을 집어넣습니다.

  • [jd

    점수를 출력합니다.

    점수를 출력합니다.

    그럼, 이렇게 100점을 출력했다가 바로 50점을 출력합니다. 지금까지는 별로 어려운 것이 없습니다.

    텍스트와 순자를 연결시켜주는 ".." 은 "," 로 사용해도 됩니다. 대신 잘 보시면,로 연결하게 되면 빈 여백이 한 칸이 붙는 것을 알 수 있습니다.

    큰 차이는 없지만 .. 을 쓰시는 것을 권장 드립니다.

    여기서 사용된 score는 변수인데요, 전역변수입니다.

    앞에 local이라는 지역변수로 선언하지 않고 사용한 것인데요. 변수는 이렇게 전역변수와 지역변수로 나눠집니다. 전역변수는 스크립트 전체에서 사용하는 변수를 의미합니다. 지역변수는 일부에서만 사용되는 변수를 말하고요.

    간단히 예를 들어드리겠습니다.

    두 개의 은행이 있습니다.

    한 개는 전국에 지점을 가지고 있는 은행이고,

    다른 한 개는 지방에 딱 하나 있는 은행입니다.

    전국에 지점을 가지고 있는 은행은 어디에서나 돈을 찾을 수 있습니다. 하지만 지방에 있는 은행은 그 지방에서만 돈을 찾을 수 있습니다.

    전국에서 돈을 찾을 수 있는 은행이 바로 전역변수입니다. 지방에서만 돈을 찾을 수 있는 은행이 바로 지역 변수입니다.

    그럼 왜 변수를 이렇게 나눌까요?

    바로 메모리 사용량을 줄이기 위해서입니다. 전역변수를 이용하면 컴퓨터의 많은 리소스를 사용하게 됩니다. 리소스 남발은 느려지는 원인이 되겠죠. 그래서 메모리가 적게 드는 지역변수를 사용합니다. 그렇다고 전역변수를 사용하지 않는다는 것은 아닙니다. 전체적으로 계속 사용되는 변수가 필요하면 전역변수를 써야지요. 지금처럼 Score 같은 점수를 사용할 때 말입니다.

    전역변수는 앞에 아무것도 선언하지 않습니다.

    지역변수는 앞에 local이라고 선언합니다.

    아차차! 제가 가장 중요한 부분을 설명을 안 했네요.

    변수는 사용자가 원하는 것을 메모리에 할당한다고 생각하시면 됩니다. 게임을 만들다가 이 오브젝트는 나중에 사용해야겠는데 하고 변수에 넣어도 되고, 스크립트를 작성하다 보니 이 부분 식은 변수에 넣어두고 계속 꺼내 써야겠어 하는 수학식을 넣어도 되고, 초깃값을 넣어도 됩니다.

    변수는 국어사전의 뜻대로 어떤 상황의 가변적 요인, 어떤 관계나 범위 안에서 여러 가지 값으로 변할 수 있는 수라고 이해하시면 됩니다. 그것이 꼭 숫자일 필요는 없다는 말이죠.

    오늘은 여기까지 하겠습니다.

    두 개의 단어를 배웠네요. "출력하라"와"넣어놔라"입니다. 꽤 괜찮은 단어이지 않나요? 이런 기본적인 것들이 쌓이면 꽤 훌륭한 대화를 할 수 있게 됩니다.

    저도 루아는 처음이지만, 베이직, 자바스크립트, 액션스크립트, 파이썬을 거치다 보니 언어는 굉장히 기본적인 것들만 알고 있으면 되고 그 외는 플러그인으로 가져다 쓰면 되더라고요. 실제로 여러분들도 한국어를 잘 하시지만 정확한 문법이나 띄어쓰기를 확실하게 알고 계신 것은 아니잖아요. 어려운 말이 궁금하거나 모르겠다면 국어사전을 찾아보면 되는 겁니다.

    그럼, 다음 시간에는 기초적인 문법에 대해 알아보겠습니다. 다음 시간에 만나요~