32
데데데데 http://cafe.naver.com/devrookie 데데데 ( 데데데데 ) 데데데 데데 데데데데 데데 데데데데 데데데데 2015.01.24

[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

Embed Size (px)

Citation preview

Page 1: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

데브루키 http://cafe.naver.com/devrookie

박민근 ( 알콜코더 )

모바일 게임 개발에서

루아 스크립트 활용하기

2015.01.24

Page 2: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

1. 루아 스크립트란 2. 동적 프로그래밍의 대두3. 스크립트 무용론 4. 모바일 게임 개발과 루아5. 루아 문법 소개6. Lua 개발 툴 소개

Page 3: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 스크립트란 ?

동적 스크립트 언어

C++ 과 연동 가능

게임 개발에서 게임 로직 ( 게임 진행 로직 , FSM, AI) 제작 활용

데이터 주도 개발에 활용 가능

자세한 소개는… 관련 자료가 너무 많아 생략

Page 4: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 스크립트란 ?포르투갈어로 ‘달’이라는 뜻브라질의 Tecgraf 의 한 팀에서 개발

특징공짜파일 크기가 작다이식성이 좋다실행 속도가 빠르다

[데브루키] 권승진-Lua Script

Page 5: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 스크립트란 ?

프로그래머에게 루아의 의미C++ 함수를 루아에서 호출할 수 있게 한다 . 재 컴파일 없이 상수를 변형 시켜 테스트 할 수 있다 .

기획자에게 루아의 의미루아 문법만 알아도 프로그래머가 만든 코어 부분을

제어하여 사건을 맘대로 구성할 수 있다 .

[데브루키] 권승진-Lua Script

Page 6: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

6

동적 스크립트 언어의 재미 (?)

결과는 ? nil

결과는 ?루프에 안들어옴

Page 7: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

동적 프로그래밍의 대두

데이터 주도 개발

동적 프로그래밍 언어의 중요성 대두

생산성의 증가

주요 게임들에서의 활용

Page 8: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

8

데이터 주도 개발Data Driven Development

• 코드는 코어 엔진만 제공하고 , 외부에 노출된 데이터 변경으로 게임을 구성한다 .

• 대표적인 예 ) 스타크래프트의 맵툴 , 스카이림 및 각종 게임들의 MOD

• 코드 외부에 노출된 데이터 변경으로 , 게임 로직의 재구성 및 리소스 변경이 가능

• 주로 동적 프로그래밍이 가능한 스크립트와 데이터를 이용하여 구성

루아

C++

XML

주로 구성하는 예

Page 9: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

9

데이터 주도 개발

C++ 게임 엔진

•렌더링•네트워크•파일 입출력 •코어 API 제공

데이터

•테이블•AI •아이템•리소스

스크립트

•동적 프로그래밍•게임 로직 •게임 알고리즘•게임 구성

Page 10: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

10

게임에서 루아의 활용WoW 의 UI 엔진 (?) 의 충격각종 국내 MMORPG 에서 루아 사용 시작현재도 각종 MMORPG 에서 루아 스크립트 사용 중

Page 11: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

11

루아 스크립트의 각광2000 년 후반 게임 개발에서 루아 스크립트의 각광

• 게임 로직 ( 기획 ) 과 코어 ( 프로그래밍 ) 의 분리

• 동적 데이터 주도 개발 가능성

• 생산성 증가 기대

• 국내 대부분 MMRPG 에서

도입

[ 데브루키 ] 2008.11.25루아 스크립트 사용 경험 투표 ( 화저 )

Page 12: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

12

Page 13: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

13

Page 14: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

스크립트 무용론

Page 16: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

16

스크립트가 나쁘다는 것은 아님

Lua 스크립트 자체가 나쁘다는건 아니다

다만 동적 프로그래밍의 환상 (?) 으로 스크립트를 위한 스크립트를 사용하는 케이스가 발생

결국 로직을 분리해서 , 분리한 의미가 사라지는 경우가 발생

게임 개발에서 스크립트는 정말 유용한가? (알콜코더)

Page 17: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

17

스크립트 남용의 해악 (GPG 1권 )

1. 스크립트 사용에 주된 원칙 : 로직과 데이터의 분리 ( 복잡한 로직은 코드에 , 그리고 데이터는 코드 외부에 두어야 한다 )

2. 스크립트란 일을 편하게 하기 위한 것이지 일을 어렵게 만들기 위한 것이 아님을 명심해야 한다 .

3. 스크립트가 위험한 이유는 스크립트가 데이터의 성격과 로직의 성격을 함께 가지고 있기 때문이다 . 그래서 상태의 개수가 늘어나면 스크립트를 작성하는 것과 프로그램 코드를 작성하는 것에 별다른 차이가 없어진다 .

4. 게임 디자이너나 스크립트 작성자가 게임을 프로그래밍 하도록 해서는 안된다 .

5. 단 ! 퀘이크 C 처럼 특별한 사례에 경우 , 게이머가 봇을 직접 작성할 수 있도록 하는 것은 FPS 에 있어서 매우 중요한 마케팅 포인트들 중 하나이며 , 따라서 스크립팅 언어를 C 수준으로 복잡하게 만드는 것이 개발 자원의 낭비라고 할 수 없다 . 하지만 !!!! 이것은 특별한 사례임을 명심 , 명심해야 한다 .

Page 18: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

18

스크립트 중요성 감소지금은 모바일 게임 개발이 주도

유니티 엔진이 대세가 됨에 따라 스크립트 사용 필요성이 감소

기획자와 프로그래머의 명확한 역할 분리가 축소

온라인 게임 개발에서는 여전히 스크립트 활용이 높지만 ,

모바일 게임 개발에서의 중요성은 많이 감소-> 2000 년대 후반에 넘쳐나던 스크립트 관련 발표들이 거의 사라짐

Page 19: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

모바일 게임 개발에서의 루아

Page 20: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

20

모바일 게임 개발에서 스크립트 빌드가 무지 어렵다 !!

• 실제 기기에 게임을 넣는 빌드 과정이 무척 오래 걸린다

• 실제 기기에서의 테스트가 어려움

게임 로직 및 UI 가 자주 변경된다

• 그리고 확인을 위한 툴을 제작할 시간 여유가 부족

• 결국 빌드 -> 테스트 -> 빌드 -> 테스트의 반복 과정

Page 21: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

21

모바일 게임 배포와 스크립트

게임 바이너리 패치를 자주 할 수 없다 !!

애플 , 구글의 심사 필요

아이폰용 앱 버그 하나 고칠려면 2 주 소요

스크립트로 개발하면 , 자체 패치로 로직 수정 및 버그 픽스 가능 !!

Page 22: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

22

모바일 게임 배포와 스크립트

게임 코어• 코어 API• 바이너리 • 자주 변경 안됨• 패치 어려움

루아 스크립트• 로직 및 데이터• 자주 변경됨• 자체 패치 가능

모바일 게임

렌더링 , 네트워크등 변하지 않는 코어 부분만 APK 넣고 , 로직등은 루아로 빼서 , 외부에 파일로 둔다 . 자체 패치를 통해서 , 외부 파일 패치가 가능하다 ! 심사 없이 언제든 패치가 가능하다 !

Page 23: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

23

모바일 게임 개발에서 스크립트

빌드와 배포 ( 심사 ) 가 어려운 모바일 게임 특성상 ,

스크립트로 로직을 분리하는것은 매우 유용

대부분의 로직을 바이너리 외부에 스크립트로

빼놓으면 ,

바이너리 패치 없이 대규모 게임 패치까지도

가능

Page 24: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 스크립트 활용 사례

Page 25: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

25

실시간으로 게임 데이터 변경

Shake 의 값을 변경하면 , 게임을 다시 실행시켜서 확인

함수가 호출될 때마다 변경된 config 의 값을 다시 읽음 !!

Page 26: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 스크립트 문법

Page 27: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

루아 개발 도구

Page 28: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

28

Lua Tinker

국내 게임 개발자 Zupet 님이 개발 ( 현 NCSoft 근무 )

C++ <-> 루아 통신 ( 루아 바인딩 ) 라이브러리

가볍고 쓰기 편하다 .

http://gpgstudy.com/gpgiki/LuaTinker

Page 29: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

29

VS 용 루아 익스텐션

VSLua - VS 2010 까지의 루아 애드온

BebeLua – VS 2012 부터의 루아 애드온 . Vslua 발전형

Page 30: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

30

BabeLua https://babelua.codeplex.com/

Page 31: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

31

BabeLua https://babelua.codeplex.com/

Page 32: [150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기

참고 자료

• [데브루키] Lua Script (권승진)

• [데브루키] 루아 스크립트 사용 경험 여부 투표

• [데브루키] 데이터 주도적 설계와 루아 스크립트 (최우영)

• [데브루키] Programming in Lua (정용수)

• 게임 개발에서 스크립트는 정말 유용한가? (알콜코더)

• [NDC11] 온라인 게임 처음부터 끝까지 동적 언어로 만들기