SlideShare a Scribd company logo
1 of 36
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

大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들MinGeun Park
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
메타버스 서비스에 Android 개발자가 할 일이 있나요?
메타버스 서비스에 Android 개발자가 할 일이 있나요?메타버스 서비스에 Android 개발자가 할 일이 있나요?
메타버스 서비스에 Android 개발자가 할 일이 있나요?Myungwook Ahn
 
SAT/SMT solving in Haskell
SAT/SMT solving in HaskellSAT/SMT solving in Haskell
SAT/SMT solving in HaskellMasahiro Sakai
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기Chris Ohk
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4Amazon Web Services Korea
 
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)Amazon Web Services Japan
 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneChris Ohk
 
당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법Kyuhyun Byun
 
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...Amazon Web Services
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍Seungmo Koo
 

What's hot (20)

大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
메타버스 서비스에 Android 개발자가 할 일이 있나요?
메타버스 서비스에 Android 개발자가 할 일이 있나요?메타버스 서비스에 Android 개발자가 할 일이 있나요?
메타버스 서비스에 Android 개발자가 할 일이 있나요?
 
SAT/SMT solving in Haskell
SAT/SMT solving in HaskellSAT/SMT solving in Haskell
SAT/SMT solving in Haskell
 
[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기[NDC 2019] 하스스톤 강화학습 환경 개발기
[NDC 2019] 하스스톤 강화학습 환경 개발기
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
 
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
Amazon GameLift – 김성수 (AWS 솔루션즈 아키텍트)
 
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)
AWS Black Belt Techシリーズ Amazon Relational Database Service (RDS)
 
Momenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStoneMomenti Seminar - 5 Years of RosettaStone
Momenti Seminar - 5 Years of RosettaStone
 
당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법당근마켓 고언어 도입기, 그리고 활용법
당근마켓 고언어 도입기, 그리고 활용법
 
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...
Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) ...
 
Java8勉強会
Java8勉強会Java8勉強会
Java8勉強会
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 

Viewers also liked

C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동선협 이
 
NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅NDC14 - 사례로 배우는 디스어셈블리 디버깅
NDC14 - 사례로 배우는 디스어셈블리 디버깅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 StudyChris 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
 

Viewers also liked (20)

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

Similar to Lua script

About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R BasicsYoonwhan Lee
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩jusingame
 
Move semantics
Move semanticsMove semantics
Move semanticsQooJuice
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)Sung-hoon Ma
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Yong Joon Moon
 
Swift 세미나
Swift 세미나Swift 세미나
Swift 세미나용재 김
 
01 built in-data_type
01 built in-data_type01 built in-data_type
01 built in-data_typeJu-Hyung Lee
 
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수Aiden Seonghak Hong
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and FunctionEunGi Hong
 
C++’s move semantics
C++’s move semanticsC++’s move semantics
C++’s move semanticsLusain Kim
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드Sukjoon Kim
 
Welcome to ruby!
Welcome to ruby!Welcome to ruby!
Welcome to ruby!성훈 김
 

Similar to Lua script (18)

About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩[C언어]함수오버로딩과오버라이딩
[C언어]함수오버로딩과오버라이딩
 
Move semantics
Move semanticsMove semantics
Move semantics
 
0.javascript기본(~3일차내)
0.javascript기본(~3일차내)0.javascript기본(~3일차내)
0.javascript기본(~3일차내)
 
클로저 1
클로저 1클로저 1
클로저 1
 
Python
PythonPython
Python
 
Java8 람다
Java8 람다Java8 람다
Java8 람다
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
 
Swift 세미나
Swift 세미나Swift 세미나
Swift 세미나
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
01 built in-data_type
01 built in-data_type01 built in-data_type
01 built in-data_type
 
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
RHive tutorial 4: RHive 튜토리얼 4 - UDF, UDTF, UDAF 함수
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and Function
 
C++’s move semantics
C++’s move semanticsC++’s move semantics
C++’s move semantics
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드레일스를 이용한 애자일 웹 개발 가이드
레일스를 이용한 애자일 웹 개발 가이드
 
Welcome to ruby!
Welcome to ruby!Welcome to ruby!
Welcome to ruby!
 

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  도서  루아를 이용한 민첩하고 효과적인 게임 개발  예제로 배우는 프로그래밍 루아