메뉴 건너뛰기

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

이 문제의 해결에 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
» lua와 C의 연동에서 상수(define이나 enum) 값처리 똥똥배 2011-05-25 3448
24 문D라이브로 더블드래곤을 만들자(7) file 똥똥배 2008-04-27 3480
23 C++ 질문 2 [3] A.미스릴 2008-12-22 3565
22 문D라이브로 더블드래곤을 만들자(2) [6] file 똥똥배 2008-04-18 3611
21 COgg 질문 [3] A.미스릴 2008-06-29 3710
20 문D라이브 2008년 5월 19일 버전 [2] 혼돈 2008-06-02 3747
19 TinyXML의 한계 [2] 똥똥배 2011-12-11 3756
18 C++ 질문 [1] A.미스릴 2008-12-21 3818
17 흥크립트에 궁금한점 [4] 상상악수 2008-08-21 3835
16 문D 질문 [5] A.미스릴 2008-05-26 3847
15 srand에 관해서 [4] A.미스릴 2008-07-15 3868
14 클레스들을 담은 헤더들의 혼란 [4] A.미스릴 2008-06-21 3892
13 #define에 대해 [1] A.미스릴 2008-05-19 4061
12 문D라이브로 더블드래곤을 만들자(10) file 똥똥배 2008-05-17 4065
11 문D라이브도 더블버퍼링이 필요한가요? [3] A.미스릴 2008-06-28 4223
10 씨언어 질문 (내일 시험 ㄷㄷ) [1] 쿠로쇼우 2008-06-17 4331
9 문D라이브로 더블드래곤을 만들자(1) [2] file 똥똥배 2008-04-16 4479
8 문D라이브로 더블드래곤을 만들자(11) file 똥똥배 2008-05-17 4647
7 임의의 점이 다각형 내부에 있는지 검사하는 함수 똥똥배 2008-04-14 5358
6 문D라이브로 만드는 더블드래곤.. 질문입니다 [4] 하와이안 2009-01-15 5550