본문 바로가기

Study

자료구조를 공부하면서 그와 함께 게임의 체질적 변화를 생각하고있습니다.

먼저 Cirhythm의 게임 리소스들이 전부 공개(?)되어 있는 상태에서 좀 잠궈두고 싶어서 (잠군다기보단, 하나로 묶어서 정리를 하고 싶었습니다) 어제 뚜레쥬르에 갔다와서 서점에 잠시 들렸는데, 그곳에서 zlib라는 단어를 보게되었습니다. 게임에 주로(?) 쓰이는 파일 압축/해제 라이브러리라네요! 그래서 전 책은 일단 사지 않고(...) 설레는 마음으로 집에 왔지만, 그 생각을 잠시 접어두고, 던파를 하기 시작하여 새벽 3시 반에 모든걸 끝냈죠 [!!]

사용자 삽입 이미지

헐... 막장아...ㅋ



그래서 마침 어머니가 깨는 것 같은 기척소리가 들려서 저는 그만 자야겠다고 생각하고 이불을 덮었는데, 그때마침 생각난 것이 바로 zlib였습니다. 그래서 다급하게 다시 노트북 뚜껑(?)을 열고, 검색을 하기 시작했죠... 뭐 전 이제까지 게임을 만드면서 패킹(Packing)에 대해서는 그닥 신경을 쓰진 않았기에, 여기서 무슨소리를 하는지 짐작이 잘 가지 않았습니다. 전에 구사무엘이 힌트를 줬던 메모리에 로드해서 쓰라는게 무슨 뜻인지 당시엔 이해가 잘 되지 않았는데, 이젠 알 것 같네요 ㅋ 그당시엔 이렇게 생각했습니다.

일단 리소스 파일들을 압축한다 -> 게임 실행시, 필요한 부분의 압축을 푼다 -> 이걸 파일로 재생성하여 D3DXCreateTextureFromFileEx 같은 함수로 불러온다 -> 잘 쓴다 -> 쓰고나서 필요없는 (또는 게임 종료시에) 압축 푼 것을 지운다


로 생각했던 것이죠... 왜 이리 생각했을까요 ㅡ_ㅡ; 그래서 메모리에 불러오는 부분에 대해 생각하던 도중, 저의 애장 도서인 <Windows API 정복 - 가남사/김상형 저>에 메모리 관련 내용이 들어가있는 것이 떠올라서 황급히 열어봤지요. 짤막하지만, 간단한 예제와 함께 메모리에 로드한 파일 내용을 화면에 뿌려주는 스샷이 있더군요. 아 정말 이 책 완소입니다 ㅋㅋ 그래서 여기까진 알았습니다. 이제 제가 할 일...이랄까요? 공부해야할 것이 또 늘었군요. zlib을 정복해야하는 것이죠.. 뭐 압축자체는 쉬워보였습니다만(?) 그리고 검색을하다보니 알게된 사실은, 그냥 일반 압축툴(알집, 빵집, 등등...)로 압축을 한 것도 풀 수 있는 것 같았습니다. 오... 역시 오픈소스의 라이브러리는 위대하다며 혼잣말로 오픈소스를 찬양하기에 이르렀지요<<

음... 이쯤에서 제가 필요하고 또 궁금한 부분은 (이 시각 현재 저는 zlib를 대충 훑어봤기에 제대로 모릅니다.) 압축한 파일을 해체하여 메모리에 불러온다고 치면, 그 압축해제한 파일 각각이 어디 주소에 있는지 어떻게 알며, 그걸 어떻게 텍스쳐로 불러오냐는 것이죠... 후자의 경우에는 금방 답을 찾았습니다. 아주 친절한 함수가 있더군요! 바로 D3DXCreateTextureFromFileInMemoryEx 라는 함수입니다. 검색해보시면 자세히 나와있을거같네요 ㅎㅎ; 구조는 제가 기존에 쓰던 D3DXCreateTextureFromFileEx와 다를바가 없어보입니다만(?) 그래서 결국 남은 문제는 압축된 상태의 여러 파일의 압축을 풀어서, 메모리에 넣은 다음, 그 각각 파일들에 대한 구별을 어찌하냐가 이번 문제의 키포인트인 것 같습니다.

아... 생각하다가 제 생각도 정리할 겸 포스팅을 시작했습니다만, 배가 고파서 힘이 없네요 ㅠㅠ... 안그래도 배가 고파서 잠도 안오던 차였는데 ㅇㅈㄴ... 이렇게 휘갈기다보니 오랜만의 장문(?) 포스팅이군요 ㅎㅎ; 오늘 프리스트가 오후에 나오랬는데 과연 나올 수가 있을런지 ㅎㄷㄷ...


사용자 삽입 이미지

ㅋㅋㅋㅋ 그래 신난다 ㅡㅡ...