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

  • View
    1.591

  • Download
    6

  • Category

    Software

Preview:

Citation preview

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

박민근 ( 알콜코더 )

모바일 게임 개발에서

루아 스크립트 활용하기

2015.01.24

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

루아 스크립트란 ?

동적 스크립트 언어

C++ 과 연동 가능

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

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

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

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

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

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

루아 스크립트란 ?

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

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

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

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

6

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

결과는 ? nil

결과는 ?루프에 안들어옴

동적 프로그래밍의 대두

데이터 주도 개발

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

생산성의 증가

주요 게임들에서의 활용

8

데이터 주도 개발Data Driven Development

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

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

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

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

루아

C++

XML

주로 구성하는 예

9

데이터 주도 개발

C++ 게임 엔진

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

데이터

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

스크립트

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

10

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

11

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

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

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

• 생산성 증가 기대

• 국내 대부분 MMRPG 에서

도입

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

12

13

스크립트 무용론

16

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

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

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

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

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

17

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

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

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

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

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

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

18

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

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

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

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

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

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

20

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

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

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

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

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

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

21

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

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

애플 , 구글의 심사 필요

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

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

22

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

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

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

모바일 게임

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

23

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

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

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

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

빼놓으면 ,

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

가능

루아 스크립트 활용 사례

25

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

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

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

루아 스크립트 문법

루아 개발 도구

28

Lua Tinker

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

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

가볍고 쓰기 편하다 .

http://gpgstudy.com/gpgiki/LuaTinker

29

VS 용 루아 익스텐션

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

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

30

BabeLua https://babelua.codeplex.com/

31

BabeLua https://babelua.codeplex.com/

참고 자료

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

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

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

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

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

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

Recommended