메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

이 문제의 해결에 4가지 방법이 나왔다.

물론 환경이나 상황에 따라 더 많은 해결방법이 나올 수 있고,

어떤 것이 답인지는 그때 그때 마다 다른다.


일단 상황부터 정리.

스프라이터를 처리하는 툴에서는 스프라이터 애니메이션을 숫자가 아닌 특정 코멘트를 붙일 수 있고,

그 코멘트를 바탕으로 define이나 enum의 상수값을 뽑아낼 수 있다.

그리고 lua 스크립트에서도 그 값을 쓰려고 한다.

하지만 lua 스크립트는 C헤더를 읽을 수 없고 상수값도 쓰지 못한다.



해결법.1

루아에서 상수값으로 쓸 변수들을 선언하는 파일 하나를 정해두고,

C의 헤더를 따라 하나 씩 추가해 준다.


=> 썩 좋지 않은 방법이다. 변경이 있을 때 마다 수동으로 수정해 줘야 하고,

    그때마다 제대로 연동이 되었을지 무결성에 의심이 들게 된다.


해결법.2

C 헤더에서 상수값을 추출해내는 루아 스크립트를 작성한다.

C 헤더에 변경이 생겼을 때마다 배치 파일같은 것을 실행해서 바로바로 뽑아내는 것이다.


나쁘지 않은 방법이긴 한데,

나의 경험을 말하지면, 이 코드를 찾기 위해서 검색했으나 약간 문제가 있었다.

고칠려고 하니 그것도 수고스럽고,

(프로그래머는 언제나 검색이 먼저다! 누군가 자신과 비슷한 경험을 하고 해결을 시도했을 것이므로

혼자서 해결하려고만 하는 자세는 좋지 않다. 단, 시간이 남아돌고 개인 연습이라면 말리지 않는다.)

적절한 코드를 찾다가 이 방법은 보류하기로 했다.


해결법.3

tolua라는 것이 있다.

C/C++의 헤더는 물론 클래스나 이것저것 다 쓸 수 있게 해주는 것이다.

기능이 멋지긴 한데, 지금 필요한 것은 헤더에서 상수값만 뽑아내는 것이므로 쓸데 없이 무겁다.

그리고 이것 역시 뽑아내기 위해서는 배치 파일을 만들어 이것저것 실행해줘야 한다.

수고는 2와 비슷하다면 가벼운 2를 선택하는 것이 좋을 것이다.


그리고 개인적으로 이것저것 붙여서 프로젝트가 어려워 지는 것은 선호하지 않는다.

어려운 대신 편리하다는 장점은 있겠지만, 자신의 코드를 볼 사람들이 그 코드를 이해하기 위해서는

또 그만큼의 공부를 해야 할 테니까.


해결법.4

이건 상황이 상황인지라 가능했던 방법.

툴에서 애니메이션에 대한 헤더를 뽑아내는 것을 프로그래머가 수정할 수 있었다.

그래서 C용 헤더와 함께 루아에서 쓸 헤더(정확하게는 변수들이 선언된 lua파일)를 같이 뽑게 고친다.

C 헤더 추출 -> lua용 변환이라는 2단계의 작업을 거칠 필요없이,

C 헤더 추출&lua용 코드 추출이 동시에 되며 무결성도 아주 좋다.


만약 이게 안 되었으면 2번 방법을 선택했을 듯.

조회 수 :
3448
등록일 :
2011.05.25
22:23:35 (*.121.150.114)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=339948
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
165 COgg 질문 [3] A.미스릴 3710   2008-06-29 2013-11-23 08:43
밑에 대슬님 질문 보니까 멤버변수를 등록할때 동적할당을 하는게 씌여 있는데 그냥 Cogg m_ogg_oggplayer; 이런식으로 그냥 일반변수로 등록을 하고 사용할순 없나요? 동적할당을 굳이 써야하는지 ㅡ.ㅡ;; (개인적으로 4바이트 추가와 잘못되면 메모리 누수가...  
164 문D라이브로 더블드래곤을 만들자(2) [6] file 똥똥배 3611   2008-04-18 2013-11-23 08:43
 
163 C++ 질문 2 [3] A.미스릴 3565   2008-12-22 2008-12-23 18:47
바이너리(2진수) 저장 아시죠? 그런데 포인터 변수를 만들어서 동적 할당을 했을때 그 포인터 변수도 포함되어 저장되면 정상적으로 저장이 안 되는 건가요? 왜 그러냐면 제가 저장 방식을 모든 데이터를 하나의 클래스 속에 넣어서 그 1개의 클래스 인스턴스...  
162 문D라이브로 더블드래곤을 만들자(7) file 똥똥배 3480   2008-04-27 2008-04-28 04:22
 
» lua와 C의 연동에서 상수(define이나 enum) 값처리 똥똥배 3448   2011-05-25 2011-05-25 23:34
이 문제의 해결에 4가지 방법이 나왔다. 물론 환경이나 상황에 따라 더 많은 해결방법이 나올 수 있고, 어떤 것이 답인지는 그때 그때 마다 다른다. 일단 상황부터 정리. 스프라이터를 처리하는 툴에서는 스프라이터 애니메이션을 숫자가 아닌 특정 코멘트를 ...  
160 흥크립트 질문. 글자에 관해서 [1] 에리 3430   2009-03-21 2009-03-21 09:30
예를 들어 글자입력으로 ㅇㅇㅇㅊ ㄱㄴㄱㅇ ㅅㅌ ㅋㄴㅇ ㄴㄴㅇ 대충 이런 글자들을 입력했다 치고 분기 명령어로 분기를 만들 수 있나요?  
159 문D라이브로 더블드래곤을 만들자(3) file 똥똥배 3430   2008-04-18 2008-04-18 18:27
 
158 [수정]이거왜이러는거죠;; [4] file 상상악수 3254   2008-08-19 2008-08-21 03:24
 
157 그럼 질문으로... [1] 쿠로쇼우 3243   2008-09-26 2009-01-07 22:05
c++에서 텍스트파일을 입,출력 하는것은 어느정도 알겠습니다. 문자라든가, 띄어쓰기, <┘ 세고, 출력하는것도 어느정도 알겠고요,, 근데 한줄 단위로 입력하고, 한줄 단위로 출력하는건 어떻해야 하나요? 오늘 아침 질문(??) 올린거에서 텍스트 파일 입력한거 ...  
156 문D라이브로 더블드래곤을 만들자(4) [2] file 똥똥배 3213   2008-04-20 2008-04-21 07:20
 
155 OgreOde 사용기 똥똥배 3184   2008-03-25 2008-03-25 21:37
OgreSDK 버전 1.4.7 OgreOde 버전 0.95(아마도) 사실 오우거 엔진 쓴지도 얼마 안 되고 물리엔진은 처음 만져봤습니다. 처음에 Ogre Wiki에 나온대로 따라서 만들었는데 crateCube.mesh와 plane.mesh 때문에 에러가 나서 바닥은 직접 만들고 crateCube 대신 오...  
154 문D라이브로 더블드래곤을 만들자(6) [2] file 똥똥배 3114   2008-04-23 2008-04-25 05:01
 
153 문D라이브로 더블드래곤을 만들자(5) [6] file 똥똥배 3072   2008-04-21 2008-04-24 03:23
 
152 C++ 데이터의 바이트 용량 임의로 정의할수 없나영 [1] A.미스릴 3059   2008-04-21 2008-04-21 07:18
int는 4바이트로 정해져 있는데 약간의 수만 있으면 되는 수도 있는데 괜히 많은 숫자를 사용해서 메모리를 많이 사용하는 건 아닐지 ㅡㅡ; 3바이트라던지 4비트라던지... 데이터의 바이트 사용량을 임의로 바꿀수 없나요  
151 똥똥배의 게임대회 이야기(3) [1] 혼돈 3007   2007-02-08 2011-02-11 12:53
3. 아마추어다운 게임이란 무엇인가? 아마추어는 자유롭습니다. 자신이 원한다면 무엇이든 표현할 수 있습니다. (심하게 비윤리적이라면 문제가 되겟지만) 하지만 프로는 그렇지 못합니다. 일단 상업성 때문에 '돈이 되는' 게임을 만들어야 하고, 수많은 사람...  
150 문D라이브로 더블드래곤을 만들자(8) [1] file 똥똥배 2973   2008-05-16 2009-01-07 22:05
 
149 똥똥배의 게임대회 이야기(1) 혼돈 2953   2007-02-06 2008-03-17 04:37
지금부터 제 이야기를 잘 들어 두시는 게 수상의 열쇠가 될지도 모릅니다. 제가 끝판 보스도 아니고, 공지 내놓고 마감일까지 기다리는 것은 지루하니 이런 저런 이야기를 들려 드리도록 하죠. 1. 지금 여러분이 해야 할 일 지금 개학인데 왜 하필 시작하냐는 ...  
148 문D 라이브 질문 [5] 대슬 2889   2008-05-15 2008-05-16 06:13
1. 음악이나 사운드는 어떻게 불러와서 출력하나요. 배웠었는데 까먹었음. 2. 그림을 원하는 각도로 자유롭게 회전시켜서 출력하는 기능은 없나요?  
147 문D라이브로 더블드래곤을 만들자(9) 똥똥배 2889   2008-05-17 2008-05-17 03:07
9편 : 체계화된 동작 지금까지 열심히 이 강의를 따라오신 분들이라면 지금 게임의 여러 버그가 산재해 있음을 깨달으셨을겁니다. 그걸 왜 그냥 내버려 뒀나면... 귀찮아서~ ~는 훼이크고 일단 가르치는 주제에서 벗어나면 집중력이 떨어지고 어느 정도 이해력...  
146 똥똥배의 게임대회 이야기(4) [1] 혼돈 2881   2007-02-10 2011-02-11 12:52
4. 공모전도 커뮤니케이션 게임을 만들기 전에 먼저 생각해야 하는 것은 게임을 하는 사람들입니다. 그래서 게임회사라면 시장조사가 가장 먼저 해야 할 일입니다. 회사에서 만든 게임을 얼마나 많은 게이머들이 즐길지 알고 예상되는 수익을 계산하고 거기에 ...