SlideShare a Scribd company logo
DevRookie
권승진
목 차
 루아 스크립트란?
 루아 스크립트 문법 소개
 C++과 연동하여 사용하기
 실제 적용 예
 게임 개발에서 루아의 용도
루아 스크립트란?
 포르투갈어로 ‘달’이라는 뜻
 브라질의 Tecgraf의 한 팀에서 개발
 특징
 공짜
 파일 크기가 작다
 이식성이 좋다
 실행 속도가 빠르다
루아 스크립트란?
 프로그래머에게 루아의 의미
 C++함수를 루아에서 호출할 수 있게 한다.
 재 컴파일 없이 상수를 변형 시켜 테스트 할 수 있다.
 기획자에게 루아의 의미
 루아 문법만 알아도 프로그래머가 만든 코어 부분을 제
어하여 사건을 맘대로 구성할 수 있다.
루아 스크립트 문법 소개
 기초
 변수
 연산자
 제어 구조
 함수
루아 스크립트 문법 소개
 기초
 식별자 명명 규칙
 영어, 숫자, ‘_’로 구성
 첫글자가 숫자면 안된다.
 _로 시작하고, 그 다음이 대문자인 식별자 명명 피하기
 주석
행 주석 : --
블럭 주석 : --[[ ... --]]
루아 스크립트 문법 소개
 기초
 루아 콘솔
 인터프리터 방식
 한 줄씩 그때 그때마다 코드의 결과물이 적용된다.
루아 언어를 연습할 땐 콘솔도 좋다.
루아 스크립트 문법 소개
 변수
 선언 없이 사용한다.
 변수형을 미리 지정해줄 필요가 없다.
 nil, Boolean, String, Number, Table 등
 Local 붙으면 지역변수
루아 스크립트 문법 소개
 변수
 nil
 알 수 없는 값
 정상적인 값을 가지고 있지 않음을 의미
 예)
 변수 사용이 끝난 후 삭제 시에도 사용한다.
•a에 아무것도 넣지 않고,
a를 출력한다면 nil이 출력
루아 스크립트 문법 소개
 변수
 Boolean
 true 와 false 두 가지 값을 가진다.
 루아는 false와 nil값 이외의 값은 모두 true로 인정한다.
 예) 0도 true값으로 인정
루아 스크립트 문법 소개
 변수
 String
 문자열, 수치와 문자열을 상호변환
 ‘hello’ , “hello” 따옴표 둘 다 허용
루아 스크립트 문법 소개
 변수
 Number
 정수, 소수 구분 없이 ‘숫자’라는 개념만 존재
 c와 비교하면 모든 형을 double로 처리
루아 스크립트 문법 소개
 배열
 Table
 배열, 구조체, 연관배열 등으로 사용
루아 스크립트 문법 소개
 변수
 함수
 루아에선 함수도 변수에 속한다.
루아 스크립트 문법 소개
 연산자
 치환
 =
 오른쪽 값을 왼쪽 변수로 치환하는 기능
루아 스크립트 문법 소개
 연산자
 산술
 +, -, *, /, %, ^
루아 스크립트 문법 소개
 연산자
 관계
 >, <, >=, <=, ==, ~=
1이 2보다 큰가? 1이 2보다 작은
가?
변수 a와 변수 b가 같은가? 변수a와 변수b가 다른가?
1>2 1<2 a == b a ~= b
루아 스크립트 문법 소개
 연산자
 논리
 and, or, not
 말 그대로 논리에 대한 연산이다.
 예) 옳은 것과 옳은 것을 and연산하면 옳은 것
 예) 옳은 것을 not연산하면 옳지 않는 것
논리 연산자 의미
A and B A값이 false면 A 값을 반환하며, true면 B값을 반환한다.
A or B A값이 true면 A 값을 반환하며, false면 B값을 반환한다.
not A A가 true면 false를 반환하고, A가 false면 true를 반환한다.
루아 스크립트 문법 소개
 연산자
 논리
 and, or, not
 예)
루아 스크립트 문법 소개
 연산자
 기타
 ..
 문자열을 합치는 기능
 #
 배열의 길이 반환
루아 스크립트 문법 소개
 제어구조
 분기
 반복
루아 스크립트 문법 소개
 제어구조
 분기
루아 스크립트 문법 소개
 제어구조
 반복
 while
 for
루아 스크립트 문법 소개
 함수구조
함수 기본 구조 입력이 있는 함수 구조
출력이 있는 함수 구조 출력이 여러 개인 함수 구조
루아 스크립트 문법 소개
 함수구조
 인자 수가 정해지지 않은 함수 구조
 …으로 입력 받은 뒤
 arg라는 곳에서 꺼내온다.
C++과 연동하기
 구현 원리
 lua_State
 C++과 루아가 교신하기 위한 수단
 이것을 이용하여
 C++에서 루아 함수 호출
 루아에서 C++함수 호출
 이 가능하다.
C++과 연동하기
 루아 글루 함수
 C++과 루아의 접착제(glue) 역할
 루아에서 호출 할 수 있게끔 만든 C++함수
C++과 연동하기
 라이브러리 추가
 Lua_State를 생성하고, 루아 라이브러리를 연다.
C++과 연동하기
 루아에 C++ 함수 등록
 스크립트 파일을 로드하고,
C++과 연동하기
 스크립트를 실행한다.
 볼일이 끝나면 닫는다.
C++과 연동하기
C++과 연동하기
 관련 도구
 LuaBind
 LuaTinker
실제 적용 예
소스 코드
게임 개발에서 루아의 용도
 스크립팅 언어는 Native 코드만큼 빠르지 않다.
 고성능의 고유한 코드 함수와 프로세스 호출을 위한
제어 메커니즘으로 사용
 성능상의 이점이 있는 C++로 속도가 중요한 함수를 작
성 Lua에서 호출(Lua에 접착)
게임 개발에서 루아의 용도
 인터페이스 제작
 이벤트(사건) 관리
 게임 자료 저장, 관리
참고자료
 루아 다운로드 주소
 http://luabinaries.luaforge.net/download.html
 도서
 루아를 이용한 민첩하고 효과적인 게임 개발
 예제로 배우는 프로그래밍 루아

More Related Content

What's hot (20)

자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
Esun Kim
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
Gerke Max Preussner
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
Sunyoung Shin
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
 
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
강 민우
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
강 민우
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
 
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMERUE4を使用したバーチャルヒューマンの映像制作  UNREAL FEST EXTREME 2021 SUMMER
UE4を使用したバーチャルヒューマンの映像制作 UNREAL FEST EXTREME 2021 SUMMER
エピック・ゲームズ・ジャパン Epic Games Japan
 
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Game Tools & Middleware Forum
 
모션 매칭이란 무엇인가.pptx
모션 매칭이란 무엇인가.pptx모션 매칭이란 무엇인가.pptx
모션 매칭이란 무엇인가.pptx
sung suk seo
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개
Seungmo Koo
 
[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여
PandoraCube , Sejong University
 
기본적인 테스트에 대한 pytest 자동화 접근
기본적인 테스트에 대한 pytest 자동화 접근기본적인 테스트에 대한 pytest 자동화 접근
기본적인 테스트에 대한 pytest 자동화 접근
SangIn Choung
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話
Unity Technologies Japan K.K.
 
VBAで数値計算 08 行列
VBAで数値計算 08 行列VBAで数値計算 08 行列
VBAで数値計算 08 行列
Katsuhiro Morishita
 
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
Kieun Jang
 
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
강 민우
 
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
주형 고
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ
Yasuyuki Niwa
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
Esun Kim
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
Gerke Max Preussner
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
Sunyoung Shin
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
Chris Ohk
 
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
[IGC2018] 펄어비스 김광삼 - 대면 커뮤니케이션 주도의 게임 디자인과 게임 개발법
강 민우
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
강 민우
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
devCAT Studio, NEXON
 
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Python / BlueprintによるUnreal Engineの自動化 / GTMF2019
Game Tools & Middleware Forum
 
모션 매칭이란 무엇인가.pptx
모션 매칭이란 무엇인가.pptx모션 매칭이란 무엇인가.pptx
모션 매칭이란 무엇인가.pptx
sung suk seo
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개
Seungmo Koo
 
기본적인 테스트에 대한 pytest 자동화 접근
기본적인 테스트에 대한 pytest 자동화 접근기본적인 테스트에 대한 pytest 자동화 접근
기본적인 테스트에 대한 pytest 자동화 접근
SangIn Choung
 
Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話Unityアニメーションシステムの 今と未来の話
Unityアニメーションシステムの 今と未来の話
Unity Technologies Japan K.K.
 
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
[NDC2019] 전소현&장기은 - 시나리오 기획자는 대사만 잘쓰면 되는 거 아닌가요? ㅇㅅㅇ
Kieun Jang
 
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
[IGC 2016] 브러쉬온 안희철 - 재미있는 컨셉 아트를 만들기 위한 디자인 발상법
강 민우
 
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
유니티 UI - 텍스트, 버튼, 이미지, 씬 이동
주형 고
 
複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ複数人でのUnity開発ノウハウ
複数人でのUnity開発ノウハウ
Yasuyuki Niwa
 

Viewers also liked (20)

NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅
Seungjae Lee
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
Jaehoon Lee
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
MinGeun Park
 
Id142 plan
Id142 planId142 plan
Id142 plan
Seung Joon Choi
 
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
Ignite Masan
 
스크래치와 역사
스크래치와 역사스크래치와 역사
스크래치와 역사
Seung Joon Choi
 
Mesh slice 1
Mesh slice 1Mesh slice 1
Mesh slice 1
현찬 양
 
기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식
cancan21st
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
MinGeun Park
 
Data Structure - 1st Study
Data Structure - 1st StudyData Structure - 1st Study
Data Structure - 1st Study
Chris Ohk
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법
연우 김
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
현찬 양
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
MinGeun Park
 
Gpg study5.5
Gpg study5.5Gpg study5.5
Gpg study5.5
연우 김
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기
종규 우
 
3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초
Seung Joon Choi
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
Jaeseung Ha
 
NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅
Seungjae Lee
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
MinGeun Park
 
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이2nd ignite masan   이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
2nd ignite masan 이그나이트마산 09 설미정_ 기부, 기발함과 발칙함사이
Ignite Masan
 
스크래치와 역사
스크래치와 역사스크래치와 역사
스크래치와 역사
Seung Joon Choi
 
기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식
cancan21st
 
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들[0611 박민근] 신입 게임 개발자가 알아야 할 것들
[0611 박민근] 신입 게임 개발자가 알아야 할 것들
MinGeun Park
 
Data Structure - 1st Study
Data Structure - 1st StudyData Structure - 1st Study
Data Structure - 1st Study
Chris Ohk
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법
연우 김
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬
현찬 양
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기
MinGeun Park
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기
종규 우
 
3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초3D 컴퓨터 그래픽스 기초
3D 컴퓨터 그래픽스 기초
Seung Joon Choi
 
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
[NDC2015] C++11 고급 기능 - Crow에 사용된 기법 중심으로
Jaeseung Ha
 
Ad

Similar to Lua script (20)

하늘에 별따기
하늘에 별따기하늘에 별따기
하늘에 별따기
Jun-Seok Mun
 
Python 01
Python 01Python 01
Python 01
Dasom Im
 
Python
PythonPython
Python
J J
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
Jaehoon Lee
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
SeongHyun Ahn
 
Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
HoChul Shin
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
Yong Joon Moon
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
Yong Joon Moon
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
 
3주차 language
3주차 language3주차 language
3주차 language
준혁 이
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document
오석 한
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
Yong Joon Moon
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
Insuk (Chris) Cho
 
Welcome to ruby!
Welcome to ruby!Welcome to ruby!
Welcome to ruby!
성훈 김
 
How to use the Ruby programing language
How to use the Ruby programing languageHow to use the Ruby programing language
How to use the Ruby programing language
JaeYeoul Ahn
 
RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2
Sunwoo Park
 
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Sang Goo Kwon
 
RPG Maker와 Ruby로 코딩 시작하기 Day 3
RPG Maker와 Ruby로 코딩 시작하기 Day 3RPG Maker와 Ruby로 코딩 시작하기 Day 3
RPG Maker와 Ruby로 코딩 시작하기 Day 3
Sunwoo Park
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
jaypi Ko
 
하늘에 별따기
하늘에 별따기하늘에 별따기
하늘에 별따기
Jun-Seok Mun
 
Python
PythonPython
Python
J J
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
Jaehoon Lee
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
SeongHyun Ahn
 
Python3 brief summary
Python3 brief summaryPython3 brief summary
Python3 brief summary
HoChul Shin
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
Yong Joon Moon
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
Yong Joon Moon
 
클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)클로져 소개 강의 (한국정보통신산업노동조합)
클로져 소개 강의 (한국정보통신산업노동조합)
Sang-Kyu Park
 
3주차 language
3주차 language3주차 language
3주차 language
준혁 이
 
Perl Script Document
Perl Script DocumentPerl Script Document
Perl Script Document
오석 한
 
파이썬 기초
파이썬 기초 파이썬 기초
파이썬 기초
Yong Joon Moon
 
Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017Python vs Java @ PyCon Korea 2017
Python vs Java @ PyCon Korea 2017
Insuk (Chris) Cho
 
Welcome to ruby!
Welcome to ruby!Welcome to ruby!
Welcome to ruby!
성훈 김
 
How to use the Ruby programing language
How to use the Ruby programing languageHow to use the Ruby programing language
How to use the Ruby programing language
JaeYeoul Ahn
 
RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2
Sunwoo Park
 
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Sang Goo Kwon
 
RPG Maker와 Ruby로 코딩 시작하기 Day 3
RPG Maker와 Ruby로 코딩 시작하기 Day 3RPG Maker와 Ruby로 코딩 시작하기 Day 3
RPG Maker와 Ruby로 코딩 시작하기 Day 3
Sunwoo Park
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
C언어 들어가기
C언어 들어가기C언어 들어가기
C언어 들어가기
jaypi Ko
 
Ad

Lua script

  • 2. 목 차  루아 스크립트란?  루아 스크립트 문법 소개  C++과 연동하여 사용하기  실제 적용 예  게임 개발에서 루아의 용도
  • 3. 루아 스크립트란?  포르투갈어로 ‘달’이라는 뜻  브라질의 Tecgraf의 한 팀에서 개발  특징  공짜  파일 크기가 작다  이식성이 좋다  실행 속도가 빠르다
  • 4. 루아 스크립트란?  프로그래머에게 루아의 의미  C++함수를 루아에서 호출할 수 있게 한다.  재 컴파일 없이 상수를 변형 시켜 테스트 할 수 있다.  기획자에게 루아의 의미  루아 문법만 알아도 프로그래머가 만든 코어 부분을 제 어하여 사건을 맘대로 구성할 수 있다.
  • 5. 루아 스크립트 문법 소개  기초  변수  연산자  제어 구조  함수
  • 6. 루아 스크립트 문법 소개  기초  식별자 명명 규칙  영어, 숫자, ‘_’로 구성  첫글자가 숫자면 안된다.  _로 시작하고, 그 다음이 대문자인 식별자 명명 피하기  주석 행 주석 : -- 블럭 주석 : --[[ ... --]]
  • 7. 루아 스크립트 문법 소개  기초  루아 콘솔  인터프리터 방식  한 줄씩 그때 그때마다 코드의 결과물이 적용된다. 루아 언어를 연습할 땐 콘솔도 좋다.
  • 8. 루아 스크립트 문법 소개  변수  선언 없이 사용한다.  변수형을 미리 지정해줄 필요가 없다.  nil, Boolean, String, Number, Table 등  Local 붙으면 지역변수
  • 9. 루아 스크립트 문법 소개  변수  nil  알 수 없는 값  정상적인 값을 가지고 있지 않음을 의미  예)  변수 사용이 끝난 후 삭제 시에도 사용한다. •a에 아무것도 넣지 않고, a를 출력한다면 nil이 출력
  • 10. 루아 스크립트 문법 소개  변수  Boolean  true 와 false 두 가지 값을 가진다.  루아는 false와 nil값 이외의 값은 모두 true로 인정한다.  예) 0도 true값으로 인정
  • 11. 루아 스크립트 문법 소개  변수  String  문자열, 수치와 문자열을 상호변환  ‘hello’ , “hello” 따옴표 둘 다 허용
  • 12. 루아 스크립트 문법 소개  변수  Number  정수, 소수 구분 없이 ‘숫자’라는 개념만 존재  c와 비교하면 모든 형을 double로 처리
  • 13. 루아 스크립트 문법 소개  배열  Table  배열, 구조체, 연관배열 등으로 사용
  • 14. 루아 스크립트 문법 소개  변수  함수  루아에선 함수도 변수에 속한다.
  • 15. 루아 스크립트 문법 소개  연산자  치환  =  오른쪽 값을 왼쪽 변수로 치환하는 기능
  • 16. 루아 스크립트 문법 소개  연산자  산술  +, -, *, /, %, ^
  • 17. 루아 스크립트 문법 소개  연산자  관계  >, <, >=, <=, ==, ~= 1이 2보다 큰가? 1이 2보다 작은 가? 변수 a와 변수 b가 같은가? 변수a와 변수b가 다른가? 1>2 1<2 a == b a ~= b
  • 18. 루아 스크립트 문법 소개  연산자  논리  and, or, not  말 그대로 논리에 대한 연산이다.  예) 옳은 것과 옳은 것을 and연산하면 옳은 것  예) 옳은 것을 not연산하면 옳지 않는 것 논리 연산자 의미 A and B A값이 false면 A 값을 반환하며, true면 B값을 반환한다. A or B A값이 true면 A 값을 반환하며, false면 B값을 반환한다. not A A가 true면 false를 반환하고, A가 false면 true를 반환한다.
  • 19. 루아 스크립트 문법 소개  연산자  논리  and, or, not  예)
  • 20. 루아 스크립트 문법 소개  연산자  기타  ..  문자열을 합치는 기능  #  배열의 길이 반환
  • 21. 루아 스크립트 문법 소개  제어구조  분기  반복
  • 22. 루아 스크립트 문법 소개  제어구조  분기
  • 23. 루아 스크립트 문법 소개  제어구조  반복  while  for
  • 24. 루아 스크립트 문법 소개  함수구조 함수 기본 구조 입력이 있는 함수 구조 출력이 있는 함수 구조 출력이 여러 개인 함수 구조
  • 25. 루아 스크립트 문법 소개  함수구조  인자 수가 정해지지 않은 함수 구조  …으로 입력 받은 뒤  arg라는 곳에서 꺼내온다.
  • 26. C++과 연동하기  구현 원리  lua_State  C++과 루아가 교신하기 위한 수단  이것을 이용하여  C++에서 루아 함수 호출  루아에서 C++함수 호출  이 가능하다.
  • 27. C++과 연동하기  루아 글루 함수  C++과 루아의 접착제(glue) 역할  루아에서 호출 할 수 있게끔 만든 C++함수
  • 28. C++과 연동하기  라이브러리 추가  Lua_State를 생성하고, 루아 라이브러리를 연다.
  • 29. C++과 연동하기  루아에 C++ 함수 등록  스크립트 파일을 로드하고,
  • 30. C++과 연동하기  스크립트를 실행한다.  볼일이 끝나면 닫는다.
  • 32. C++과 연동하기  관련 도구  LuaBind  LuaTinker
  • 34. 게임 개발에서 루아의 용도  스크립팅 언어는 Native 코드만큼 빠르지 않다.  고성능의 고유한 코드 함수와 프로세스 호출을 위한 제어 메커니즘으로 사용  성능상의 이점이 있는 C++로 속도가 중요한 함수를 작 성 Lua에서 호출(Lua에 접착)
  • 35. 게임 개발에서 루아의 용도  인터페이스 제작  이벤트(사건) 관리  게임 자료 저장, 관리
  • 36. 참고자료  루아 다운로드 주소  http://luabinaries.luaforge.net/download.html  도서  루아를 이용한 민첩하고 효과적인 게임 개발  예제로 배우는 프로그래밍 루아