C++과 Lua script연동
Upcoming SlideShare
Loading in...5
×
 

C++과 Lua script연동

on

  • 1,811 views

C++과 Lua script 연동

C++과 Lua script 연동

Statistics

Views

Total Views
1,811
Views on SlideShare
1,628
Embed Views
183

Actions

Likes
3
Downloads
12
Comments
0

6 Embeds 183

http://192.168.219.51 50
http://192.168.219.45 42
http://blog.naver.com 40
http://192.168.219.55 27
https://twitter.com 19
http://www.slideee.com 5

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

C++과 Lua script연동 Presentation Transcript

  • 1. C++과 Lua Script 연동하기 NHN NEXT 이선협
  • 2. 넌 누구냐?!
  • 3. 아이엠 그라운드 자기소개하기 • Python, Ruby같은 스크립트 언어 • 다른 스크립트 언어보다 가볍다. • 프로그램에 내장되는 스크립트이다. • 프로그램과 통신이 가능하다. • 데이터 교환 • API 상호 호출 • C, C++언어에 이식하기 편하다. • 가비지 컬렉터가 있다. • 쉽다.
  • 4. 너 뭐하는 애니?
  • 5. • 와우에서 루아 스크립트를 사용한다는 얘기는 이미 유명하다. • 사용자 인터페이스 (UI) • 캐릭터 애니메이션 • 월드맵 조정 • 네버윈터 나이츠, ToME, 원숭이 섬으로부터 탈출, 앵그리버드 등 ... 게임 제작에 많이 쓰임..! 게임 개발에 자주 쓰입니다!
  • 6. 널 왜 사용할까?
  • 7. 코딩 빌드기획 테스트
  • 8. 코딩 빌드기획 테스트 코딩량이 많아지면...
  • 9. 코딩 빌드기획 테스트 코딩량이 많아지면... 장난아니게 오래걸림...
  • 10. 코딩 빌드기획 테스트 코딩량이 많아지면... 장난아니게 오래걸림... 또 수치를 변경해야하면...
  • 11. 코딩 빌드기획 테스트 코딩량이 많아지면... 장난아니게 오래걸림... 또 수치를 변경해야하면...빡 침!
  • 12. 코딩 빌드기획 테스트 코딩량이 많아지면... 장난아니게 오래걸림... 또 수치를 변경해야하면...빡 침! 이럴때 필요한 것은?
  • 13. • 외부의 데이터를 기반으로 프로그램을 제작하는 아키텍처 데이터 주도 프로그래밍
  • 14. 게임
  • 15. 게임 *.ini 게임 환경 설정
  • 16. 게임 *.ini 게임 환경 설정 *.xml 수치 데이터
  • 17. 게임 *.ini 게임 환경 설정 *.xml 수치 데이터 *.lua 게임 로직
  • 18. 게임 *.ini 게임 환경 설정 *.xml 수치 데이터 *.lua 게임 로직 *.fx 게임 이펙트
  • 19. 게임 *.ini 게임 환경 설정 *.xml 수치 데이터 *.lua 게임 로직 *.fx 게임 이펙트 외에도 프로그래머가 직접 데이터 파일을 만들 수 있다. ex) 0,1로 이뤄진 맵파일..ㅋㅋ
  • 20. 코딩 빌드기획 테스트 이런 개발 과정이..
  • 21. 스크립트 코딩기획 테스트 이렇게 변했습니다!
  • 22. 결론
  • 23. 저는 게임의 가장 핵심이되는 ‘로직’부분을 스크립트로 처리 가능합니다.
  • 24. • Windows용 설치 파일 • https://code.google.com/p/luaforwindows/ 루아 설치하기
  • 25. • 설치된 폴더의 lua.exe 실행 루아 써보기 - 1
  • 26. • 루아의 변수는 기본적으로 전부 전역 변수이다. • 스크립트 전체에서 접근 가능하며 끝날 때까지 유지된다. • 지역변수는 ‘local’ 키워드를 사용하여 사용 가능하다. • 가능한 곳에서는 지역변수를 사용하는 것이 좋다. • ex) • a = 2 // 전역변수 • local a = 2 // 지역변수 루아 - 변수
  • 27. • nil • 다른 언어의 NULL과 유사하다. • 변수에 nil을 대입하면 삭제된다. • boolean • 다른 언어처럼 true, false 값만 가짐 루아 - 변수
  • 28. • string • 다른 스크립트 언어처럼 문자열 처리에 강하다. • 역슬래시를 이용하여 특수문자 사용 가능 (줄바꿈, 탭, 따옴표 등) • 수치와 문자열을 자동으로 상호 변환 • ex) “8”+8 -> 16, “8+8” -> “8+8”, “hello”+8 -> ERROR • number • 루아는 정수와 소수를 구분 하지 않고 모든 숫자를 실수형으로 처리한 다. 루아 - 변수
  • 29. • table • C++의 std::map, Python의 dict와 유사하다. • number형과 string형을 모두 인덱스 할 수 있다. (nil은 제외) • 크기가 고정되어 있지 않다. (Array가 아님) • 값, 변수가 아닌 객체이다. • 다른 언어와 달리 0이 아닌 1부터 시작한다. 루아 - 변수
  • 30. • 산술 연산자 • +, -, *, / • 관계 연산자 • <, >, <=, >=, ==, ~= • 논리 연산자 • and, or, not 루아 - 연산자
  • 31. • if (조건식) than (실행문) else if (조건식) than (실행문) else (실행문) end 루아 – 명령문 (if)
  • 32. • while (조건식) do (실행문) end 루아 – 명령문 (while)
  • 33. • C++의 do ~ while과 유사 • repeat (실행문) until (조건식) 루아 – 명령문 (repeat)
  • 34. • for (초기화), (조건식), (증감) do (실행문) end • 증감을 생략하면 자동으로 1씩 증가 루아 – 명령문 (numeric for)
  • 35. • table의 요소를 한 번에 하나씩 접근할 때 주로 사용 • pairs() / ipairs() 함수와 함께 사용 • ex) • days = {“Sunday”, “Monday”, ... “Saturday”} • for index, value in pairs(days) do print(index, value) end • result) • 1 Sunday 2 Monday ... 루아 – 명령문 (generic for)
  • 36. • function 함수이름(인자) 함수내용.. return 반환값 end 루아 – 함수
  • 37. • arg라는 table을 만들어서 가변 인수를 담음 • 가변 인수는 마침표 세개(...)로 구분 • arg.n에 가변 인수의 개수를 저장 • function 함수이름(a, b, ...) print(a[1]) end 루아 – 함수
  • 38. • 루아의 함수는 결과를 여러 개 반환 가능 • function 함수이름() return 1, 2, “asdf” end 루아 – 함수
  • 39. 더 자세한 정보는 assert, dofile, math, tonumber, tostring, string., table. 등 다양한 기본 라이브러리 함수
  • 40. assert, dofile, math, tonumber, tostring, string., table. 등 다양한 기본 라이브러리 함수 더 자세한 정보는
  • 41. • 환경은 Windows / Visual Studio 2013 • Visual Studio 프로젝트 Directory 설정 • Include • C:Program FilesLua5.1include • Link • C:Program FilesLua5.1lib • C:Program Files (x86)Lua5.1lib 디렉토리에서 dll파일 프로젝트에 복사 C++과 루아 스크립트 연동
  • 42. • lib파일과 header파일을 include한다. • 루아는 C로 만들어졌기 때문에 extern “C”를 지정해준다. C++과 루아 스크립트 연동
  • 43. • 다음 코드는 lua.exe를 실행시킨 것 처럼 루아를 사용할 수 있게 해준다. C++과 루아 스크립트 연동
  • 44. • 출처 : http://sweeper.egloos.com/viewer/2821116 C++과 루아 스크립트 연동
  • 45. • 스크립트 파일을 작성하고 C++에서 열고 실행시킬 수 있다. C++과 루아 스크립트 연동
  • 46. • C++에서 Lua의 함수를 호출 시킬 수 있다. C++과 루아 스크립트 연동
  • 47. • 역으로 Lua에서 C++ 함수를 호출 할 수 있다. C++과 루아 스크립트 연동
  • 48. • Lua를 좀 더 쉽게 연결할 수 있도록 도와주는 C++ 라이브러리 • MIT 라이센스 • boost 라이브러리가 필요하다. • 설치 • http://sourceforge.net/projects/luabind/ • 압출을 푼뒤 빌드한다. • 정적 라이브러리로 빌드 (Visual Studio 2013 기준) • 이 과정에서 boost, lua 라이브러리 필요 • 디버그, 릴리즈 둘 다 빌드 • 나온 결과물을 프로젝트에 포함한다. (lib) luabind
  • 49. • 이제 사용하면된다. • 자세한 사용 방법은 doc 디렉토리를 찾아보면 나와있다. • 각종 example도 압축 파일 내부에 존재한다 luabind
  • 50. 주의할 점 • 배보다 배꼽이 더 커질 수 있다. • 컴파일 시간이 오래 걸리지 않는데도 무리해서 스크립트로 작성하다가 작업시간이 더 오래 걸릴 수 있음 • 스크립트에 대해서 잘 모른다면 C++에서 작성하는게 좋을 수 있다. • 여러 C++의 함수를 Lua로 바인드하기 위해서는 시간이 들고 소스 코 드가 복잡해질 가능성이 있다. • 디버깅이 어렵다. • 전문 개발 툴이 없다. • 로딩과 실행 속도가 느리다.
  • 51. 주의할 점 • 배보다 배꼽이 더 커질 수 있다. • 컴파일 시간이 오래 걸리지 않는데도 무리해서 스크립트로 작성하다가 작업시간이 더 오래 걸릴 수 있음 • 스크립트에 대해서 잘 모른다면 C++에서 작성하는게 좋을 수 있다. • 여러 C++의 함수를 Lua로 바인드하기 위해서는 시간이 들고 소스 코 드가 복잡해질 가능성이 있다. • 디버깅이 어렵다. • 전문 개발 툴이 없다. • 로딩과 실행 속도가 느리다. 제대로 사용하려면 팀원 각각의 역활 수행을 제대로 해야한다. ex) 코어 프로그래머 -> 몬스터 FSM을 루아로 바인드함 컨텐츠 프로그래머, 기획자 -> 바인드된 함수를 이용하여 몬스터 AI 제작 http://www.gamedevforever.com/12 (박민근 교수님이 쓰신 루아 사용에 대한 비판 글)
  • 52. • http://www.gamedevforever.com/12 (알콜코더 민군교수님의 자료) • http://sweeper.egloos.com/viewer/2821116 • http://sweeper.egloos.com/viewer/2821919 • http://www.gpgstudy.com/forum/viewtopic.php?t=5738&sid= 38357b68a309f7e7bf296445828c1874 • http://bombfox.tistory.com/45 • http://andromedarabbit.net/wp/cplusplus_cli_lecture_2009_06/ • http://hoidu.tistory.com/ • http://blog.naver.com/PostList.nhn?blogId=sunxodid79 참고 자료
  • 53. 감사합니다