SlideShare une entreprise Scribd logo
1  sur  32
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] 온라인 게임 처음부터 끝까지 동적 언어로 만들기

Contenu connexe

Tendances

[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 

Tendances (20)

[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 

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

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Jinsoo Jung
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법Sehyeon Nam
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기Soojin Ro
 
1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법Taeung Ra
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellijSewon Ann
 
9월 기술사항
9월 기술사항9월 기술사항
9월 기술사항Jinhyuk Lee
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotCirculus
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑Kiyoung Moon
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은지금 우리에게 필요한 것은
지금 우리에게 필요한 것은현진 김
 
그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수Yeon Soo Kim
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기sung yong jung
 
(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍Jay Park
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)우영 주
 

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

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
 
1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법
 
develop android app using intellij
develop android app using intellijdevelop android app using intellij
develop android app using intellij
 
9월 기술사항
9월 기술사항9월 기술사항
9월 기술사항
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and Robot
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑유니티로 해보는 게임 프로토타이핑
유니티로 해보는 게임 프로토타이핑
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
피니엔진
피니엔진피니엔진
피니엔진
 
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은지금 우리에게 필요한 것은
지금 우리에게 필요한 것은
 
그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수그루비 소개 발표자료 - 김연수
그루비 소개 발표자료 - 김연수
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기주니어 개발자의 개인프로젝트 개발기
주니어 개발자의 개인프로젝트 개발기
 
(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
 

Plus de MinGeun Park

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdfMinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석MinGeun Park
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 

Plus de MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 

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

  • 2. 1. 루아 스크립트란 2. 동적 프로그래밍의 대두 3. 스크립트 무용론 4. 모바일 게임 개발과 루아 5. 루아 문법 소개 6. Lua 개발 툴 소개
  • 3. 루아 스크립트란? 동적 스크립트 언어 C++과 연동 가능 게임 개발에서 게임 로직(게임 진행 로직, FSM, AI) 제작 활용 데이터 주도 개발에 활용 가능 자세한 소개는… 관련 자료가 너무 많아 생략
  • 4. 루아 스크립트란?  포르투갈어로 ‘달’이라는 뜻  브라질의 Tecgraf의 한 팀에서 개발  특징  공짜  파일 크기가 작다  이식성이 좋다  실행 속도가 빠르다 [데브루키] 권승진-Lua Script
  • 5. 루아 스크립트란?  프로그래머에게 루아의 의미  C++함수를 루아에서 호출할 수 있게 한다.  재 컴파일 없이 상수를 변형 시켜 테스트 할 수 있다.  기획자에게 루아의 의미  루아 문법만 알아도 프로그래머가 만든 코어 부분을 제 어하여 사건을 맘대로 구성할 수 있다. [데브루키] 권승진-Lua Script
  • 6. 6 동적 스크립트 언어의 재미(?) 결과는? nil 결과는? 루프에 안들어옴
  • 7. 동적 프로그래밍의 대두 데이터 주도 개발 동적 프로그래밍 언어의 중요성 대두 생산성의 증가 주요 게임들에서의 활용
  • 8. 8 데이터 주도 개발 Data Driven Development • 코드는 코어 엔진만 제공하고, 외부에 노출된 데이터 변경으로 게임을 구성한다. • 대표적인 예 ) 스타크래프트의 맵툴, 스카이림 및 각종 게임들의 MOD • 코드 외부에 노출된 데이터 변경으로, 게임 로직의 재구성 및 리소스 변경이 가능 • 주로 동적 프로그래밍이 가능한 스크립트와 데이터를 이용하여 구성 루아 C++ XML 주로 구성하는 예
  • 9. 9 데이터 주도 개발 C++ 게임 엔진 •렌더링 •네트워크 •파일 입출력 •코어 API 제공 데이터 •테이블 •AI •아이템 •리소스 스크립트 •동적 프로그래밍 •게임 로직 •게임 알고리즘 •게임 구성
  • 10. 10 게임에서 루아의 활용 WoW의 UI 엔진(?)의 충격 각종 국내 MMORPG에서 루아 사용 시작 현재도 각종 MMORPG에서 루아 스크립트 사용 중
  • 11. 11 루아 스크립트의 각광 2000년 후반 게임 개발에서 루아 스크립트의 각광 • 게임 로직(기획)과 코어(프로그래밍)의 분리 • 동적 데이터 주도 개발 가능성 • 생산성 증가 기대 • 국내 대부분 MMRPG에서 도입 [데브루키] 2008.11.25 루아 스크립트 사용 경험 투표 (화저)
  • 12. 12
  • 13. 13
  • 15. 게임 개발에서 스크립트는 정말 유용한가? (알콜코더)
  • 16. 16 스크립트가 나쁘다는 것은 아님 Lua 스크립트 자체가 나쁘다는건 아니다 다만 동적 프로그래밍의 환상(?)으로 스크립트를 위한 스크립트를 사용하는 케이스가 발생 결국 로직을 분리해서, 분리한 의미가 사라지는 경우가 발생 게임 개발에서 스크립트는 정말 유용한가? (알콜코더)
  • 17. 17 스크립트 남용의 해악 (GPG 1권) 1. 스크립트 사용에 주된 원칙 : 로직과 데이터의 분리(복잡한 로직은 코드에, 그리고 데 이터는 코드 외부에 두어야 한다) 2. 스크립트란 일을 편하게 하기 위한 것이지 일을 어렵게 만들기 위한 것이 아님을 명심 해야 한다. 3. 스크립트가 위험한 이유는 스크립트가 데이터의 성격과 로직의 성격을 함께 가지고 있 기 때문이다. 그래서 상태의 개수가 늘어나면 스크립트를 작성하는 것과 프로그램 코드를 작성하는 것에 별다른 차이가 없어진다. 4. 게임 디자이너나 스크립트 작성자가 게임을 프로그래밍 하도록 해서는 안된다. 5. 단! 퀘이크 C처럼 특별한 사례에 경우, 게이머가 봇을 직접 작성할 수 있도록 하는 것 은 FPS에 있어서 매우 중요한 마케팅 포인트들 중 하나이며, 따라서 스크립팅 언어를 C 수준으로 복잡하게 만드는 것이 개발 자원의 낭비라고 할 수 없다. 하지만!!!! 이것은 특 별한 사례임을 명심, 명심해야 한다.
  • 18. 18 스크립트 중요성 감소 지금은 모바일 게임 개발이 주도 유니티 엔진이 대세가 됨에 따라 스크립트 사용 필요성이 감소 기획자와 프로그래머의 명확한 역할 분리가 축소 온라인 게임 개발에서는 여전히 스크립트 활용이 높지만, 모바일 게임 개발에서의 중요성은 많이 감소 -> 2000년대 후반에 넘쳐나던 스크립트 관련 발표들이 거의 사라짐
  • 20. 20 모바일 게임 개발에서 스크립트 빌드가 무지 어렵다!! • 실제 기기에 게임을 넣는 빌드 과정이 무척 오래 걸린다 • 실제 기기에서의 테스트가 어려움 게임 로직 및 UI가 자주 변경된다 • 그리고 확인을 위한 툴을 제작할 시간 여유가 부족 • 결국 빌드->테스트->빌드->테스트의 반복 과정
  • 21. 21 모바일 게임 배포와 스크립트 게임 바이너리 패치를 자주 할 수 없다!! 애플, 구글의 심사 필요 아이폰용 앱 버그 하나 고칠려면 2주 소요 스크립트로 개발하면, 자체 패치로 로직 수정 및 버그 픽스 가능!!
  • 22. 22 모바일 게임 배포와 스크립트 게임 코어 •코어 API •바이너리 •자주 변경 안됨 •패치 어려움 루아 스크립트 •로직 및 데이터 •자주 변경됨 •자체 패치 가능 모바일 게임 렌더링, 네트워크등 변하지 않는 코어 부분만 APK 넣고, 로직등은 루아로 빼서, 외부에 파일로 둔다. 자체 패치를 통해서, 외부 파일 패치가 가능하다! 심사 없이 언제든 패치가 가능하다!
  • 23. 23 모바일 게임 개발에서 스크립트 빌드와 배포(심사)가 어려운 모바일 게임 특성상, 스크립트로 로직을 분리하는것은 매우 유용 대부분의 로직을 바이너리 외부에 스크립트로 빼놓으면, 바이너리 패치 없이 대규모 게임 패치까지도 가능
  • 25. 25 실시간으로 게임 데이터 변경 Shake의 값을 변경하면, 게임을 다시 실행시켜서 확인 함수가 호출될 때마다 변경된 config의 값을 다시 읽음!!
  • 28. 28 Lua Tinker 국내 게임 개발자 Zupet님이 개발 (현 NCSoft 근무) C++ <-> 루아 통신 (루아 바인딩) 라이브러리 가볍고 쓰기 편하다. http://gpgstudy.com/gpgiki/LuaTinker
  • 29. 29 VS용 루아 익스텐션 VSLua - VS 2010까지의 루아 애드온 BebeLua – VS 2012부터의 루아 애드온. Vslua 발전형
  • 32. 참고 자료 • [데브루키] Lua Script (권승진) • [데브루키] 루아 스크립트 사용 경험 여부 투표 • [데브루키] 데이터 주도적 설계와 루아 스크립트 (최우영) • [데브루키] Programming in Lua (정용수) • 게임 개발에서 스크립트는 정말 유용한가? (알콜코더) • [NDC11] 온라인 게임 처음부터 끝까지 동적 언어로 만들기