두번째 오픈소스 - D2M

스프라이트 시트 애니메이션은 게임 개발 초창기부터 움직이는 개체를 표현하는데 사용된 방식입니다.

하지만 전통적인 방식을 사용할 경우 가장 큰 문제는 바로 용량입니다. 최근 게임들의 커진 캐릭터와 다양한 동작은 많은 메모리를 필요로 합니다. 이에 DDS기반으로 이전 영상과의 차이점을 이용하여 파일 용량을 감소시킨 D2M을 만들게 되었습니다.

기본 컨셉은 일반적인 스프라이트의 경우 공백이 많다는 것입니다. 아래 애니메이션을 보시면 많은 공백이 있습니다. 이러한 공백은 다음 프레임에서도 상당 부분 유지가 되고 있습니다.

run

D2M은 이러한 프레임간의 차이점을 4x4(DDS와 같은 블럭크기)로 비교하여 저장합니다. 즉, 이미지가 변하지 않은 부분이 많으면 많을수록 압축률 및 성능이 올라갑니다.

256x256x32Bit 스프라이트 30장을 압축 없이 사용 할 경우에는 7,680KB이를 DDS(DXT5)로 변경할 경우에는 1,920KB가 됩니다. D2M의 경우 463KB로 줄어 들게 됩니다.

메모리에서 축소된 상태로 올라가 있다 한장 단위로 풀어 비디오 메모리로 올리므로 512~1024크기의 30fps 애니메이션을 동시에 16장 내외를 돌리더라도 60fps를 유지할 만큼의 성능이 나오고 있습니다. 차후 시스템 메모리를 사용량을 더 감소 시키기 위하여 스트리밍 방식도 고려중입니다.

단점으로는 D2M은 기존의 동영상 포맷을 대체할 수 없습니다. 이는 공백이 많거나 움직이지 않은 부분이 많은 스프라이트 시트 애니메이션을 산정하고 디자인 하였기 때문에 모든 화면이 차있고 변경되는 부분이 많은 일반 영상의 경우 압축 여지가 충분하지 않을 수 있기 때문입니다.

DDS2Movie-Maker
DDS2Movie-Player

PS. 최근에는 3D 게임이 많아지고 2D 애니메이션도 Spine, Live2D등 키프레임 기반으로 하는 경우도 많이 있습니다.