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

온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기Seungjae Lee
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
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
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화Eunseok Yi
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기강 민우
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 

Tendances (20)

온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
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
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 

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

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
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 개발 포스트모템강 민우
 

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

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
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 개발 포스트모템
 

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] 온라인 게임 처음부터 끝까지 동적 언어로 만들기