18일차는 개뿔...
프로젝트 시작한지는 네 달째 됐습니다... 짬짬히 개발하다보니 속도가 많이 늦네요.
근 며칠동안은 레벨 에디터 대신 게임 엔진을 건드렸습니다.
* FreeType을 이용한 폰트 렌더링 기능 추가
* 배경음악 재생을 위한 스트리밍 기능 추가
* 레벨 디자인을 강화하기 위해 루아 스크립트 연동
이젠 레벨에 포함되어있는 루아 스크립트를 이용해, 다양한 연출이 가능해졌습니다.
(스크립트 엔진의 존재를 모를때는... c언어 스타일로 간략한 언어를 만들고 파싱해서 쓰려는 뻘생각을 하고 있었슴다... 큰일날뻔 했네요.)
레벨의 스크립트가 동작하는 방식은 스타크래프트2의 갤럭시 스크립트에서 많이 참고하여 개발했습니다. 아직은 엔진에서 제공하는 API함수가 적어서 미흡한 부분이 많지만 차차 보완되리라고 봅니다.
FreeType으로 D3D에 폰트 출력하는 내용은 [프로그래밍] - Direct3D에 FreeType로 폰트 출력하기에 설명해놨습니다. 필요하신 분들은 참고하세요.
영상은 루아 스크립트 테스트한 겁니다. 텍스트에는 별 의미 없으니 신경쓸필요 없어요ㅋ
AddEventElapsed(0, "start")
function start()
UIShowUI("meterbar", false)
UIDisplayText("Help0", 64)
UIDisplayText("Help1", 128)
UIDisplayText("Help2", 128)
UIShowUI("meterbar", true)
end
사용한 루아 코드입니다. (Help0, Help1, Help2는 텍스트ID입니다. 실제 텍스트 내용들은 다국어 처리를 위해 별도의 파일에 빼두었습니다.)
연동할 때 가장 골때렸던 부분은 UIDisplayText 나, Wait 같은 함수를 호출하면, 일정 시간 대기해야하는데, 스크립트 엔진이 대기를 타고있자니 다른 프로세스들이 안 돌아가고, 멀티쓰레드로 스크립트 엔진을 돌리자니 동기화가 너무 까다롭고...
근데 lua에는 yield가 있더군요. lua_yield를 이용해서 잠시 스크립트 처리를 빠져나왔다가, 다시 적절할때에 lua_resume으로 복귀하는 방법을 이용했습니다.
[포니 게임 개발] 21 (0) | 2013.04.28 |
---|---|
[포니 게임 개발] 20 (0) | 2013.04.23 |
[포니 게임 개발] 19 (2) | 2013.04.19 |
[포니 게임 개발] 17일차 (0) | 2013.02.03 |
[포니 게임 개발] 16일차 (0) | 2013.01.24 |
[포니 게임 개발] 15일차 (0) | 2013.01.23 |
댓글 영역