SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
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
 도서
 루아를 이용한 민첩하고 효과적인 게임 개발
 예제로 배우는 프로그래밍 루아

Más contenido relacionado

La actualidad más candente

NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지Kwangyoung Lee
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요Eunseok Yi
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계Imseong Kang
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-강 민우
 
삼국지 게임 컨셉제안서
삼국지 게임 컨셉제안서삼국지 게임 컨셉제안서
삼국지 게임 컨셉제안서JP Lee
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부Eunseok Yi
 
도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924Daewoong Kim
 
16.03.24 sos project 컨셉 기획서_남진우
16.03.24 sos project 컨셉 기획서_남진우16.03.24 sos project 컨셉 기획서_남진우
16.03.24 sos project 컨셉 기획서_남진우Nam Jinwoo
 
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフローUnityTechnologiesJapan002
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래 [NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래 Hwang Sang Hun
 
HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編Takashi Yoshinaga
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)Eunseok Yi
 
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミングUnity Technologies Japan K.K.
 
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study강 민우
 
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로SeongkukYun
 
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話Mio Ku-tani
 

La actualidad más candente (20)

NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
 
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
NDC 2015. 한 그루 한 그루 심지 않아도 돼요. 생태학에 기반한 [야생의 땅: 듀랑고]의 절차적 생성 생태계
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
[IGC 2016] 골드로쉬 김현석 - 왜 항상 기획자는 욕을 들어야만 하는 걸까? –게임 기획의 포지션 변화-
 
삼국지 게임 컨셉제안서
삼국지 게임 컨셉제안서삼국지 게임 컨셉제안서
삼국지 게임 컨셉제안서
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
 
도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924도탑전기(刀塔传奇)_20140924
도탑전기(刀塔传奇)_20140924
 
16.03.24 sos project 컨셉 기획서_남진우
16.03.24 sos project 컨셉 기획서_남진우16.03.24 sos project 컨셉 기획서_남진우
16.03.24 sos project 컨셉 기획서_남진우
 
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
【Unite Tokyo 2019】MeshSyncを有効活用したセルルックプリレンダーのワークフロー
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래 [NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래
[NDC 2014] 시나리오라이터의 과거와 현재, 그리고 미래
 
HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
 
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
 
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study
[IGC 2016] 띵소프트 이득규 - 삼국지조조전 Online L10N 개발 Case Study
 
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로
최소 300억은 버는 글로벌 게임 기획 : 몬스터슈퍼리그 사례를 중심으로
 
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話
UE4初心者がUE4で2D横スクロールアクションゲームを作ってみるお話
 

Destacado

[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
 
C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동선협 이
 
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 StudyChris Ohk
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법연우 김
 
실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬실전프로젝트 정서경 양현찬
실전프로젝트 정서경 양현찬현찬 양
 
[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기[1127 박민근] 일 잘하는 게임프로그래머 되기
[1127 박민근] 일 잘하는 게임프로그래머 되기MinGeun Park
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기종규 우
 

Destacado (20)

[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
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
 
후처리알아보기
후처리알아보기후처리알아보기
후처리알아보기
 

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