해법
2009년 4월, Rgba & TBC는 Breakpoint 데모파티의 PC 4k 부문에 4킬로바이트 인트로인 Elevated를 출품했다. 실행 파일 전체가 4,096바이트 안에 들어가야 했는데 — 고품질 이미지나 오디오 샘플 하나만으로도 예산이 초과될 수 있었다 — 그럼에도 이 데모는 완전한 악보와 함께 산악 지형 위를 느리고 영화처럼 비행하는 장면으로 펼쳐진다.
4k의 통상적인 해법은 미리 구워둔 효과 몇 개를 축소하거나 생략하고 경연용 기기가 이를 실행할 수 있기를 바라는 것이다. Elevated는 정반대였다. 장면도 음악도 저장하지 않았다. 영상은 iq가 작성한 압축된 픽셀 셰이더 코드에서, 악보는 mentor의 어셈블리 신디사이저에서 나왔기에 모든 프레임과 모든 음표가 로드되는 대신 즉석에서 계산되었다.
이러한 역할 분담 덕분에 크기가 유지되었다. 셰이더는 모든 프레임의 모든 픽셀마다 실행되므로, 수백 바이트의 절차적 수식이 막대한 GPU 작업으로 확장된다 — 한 댓글 작성자는 4KB가 250MB가 넘는 GPU 명령어로 부풀어 오른다고 지적했다 — 반면 합성은 샘플 데이터를 완전히 제거했다. Elevated는 4k 부문에서 1위를 차지하며 즉시 하나의 기준점이 되었다.
7년 후인 2016년 6월, 이 그룹은 scene.org에 전체 소스를 게시했다. 어셈블리와 C++ 코드, Crinkler 압축기의 라이선스와 매뉴얼, NASM, 그리고 바로 빌드 가능한 프로젝트가 담긴 729KB 아카이브였다. Hacker News의 공개 스레드는 384포인트를 기록했고, 댓글 작성자들은 이 데모가 4k 장르의 가장 활기찬 시대를 촉발하는 데 도움을 주었다고 말했다.
이룬 성과
에셋을 저장하지 말고, 코드가 쇼를 렌더링하고 작곡하게 하라
통한 이유
에셋은 애초에 들어가지 않는다: 4,096바이트에서는 텍스처나 샘플 하나만으로도 예산이 소진되므로, 콘텐츠를 코드로 인코딩하는 것은 요령이 아니라 확장 가능한 유일한 선택이다
GPU는 작은 코드를 거대한 작업으로 증폭시킨다: 픽셀 셰이더는 프레임마다 픽셀마다 실행되므로, 압축된 수식이 수백 메가바이트의 명령어 작업으로 확장된다
음악도 같은 처리를 받았다: 실시간 어셈블리 신디사이저 덕분에 악보는 샘플 데이터가 아닌 알고리즘으로 존재했다
소스를 공개함으로써 사적인 성취가 공유된 참조물로 바뀌었고, 아카이브의 11,000회 이상 다운로드와 384포인트의 Hacker News 스레드는 바로 그에 대한 수요를 보여준다
크기나 저장 한도 때문에 콘텐츠가 불가능해질 때는 콘텐츠를 압축하지 말고, 스스로를 생성하는 코드로 인코딩하고, 그 생성기를 공개해 기법이 축적되게 하라.
그 후
Elevated는 우승 후에도 장르의 기준점으로 남았다. 데모씬의 데이터베이스인 Pouet.net은 여전히 이를 역대 목록의 최상위 근처에 올려둔다. 2016년 6월 Rgba & TBC는 scene.org에 전체 소스를 공개했다 — 어셈블리와 C++ 소스, Crinkler 압축 링커, NASM이 담긴 729KB zip — 덕분에 4KB 파일을 재빌드하고 연구할 수 있게 되었다. scene.org 페이지에는 아카이브 다운로드 11,363회가 기록되어 있고, Hacker News 토론은 384포인트와 147개 댓글을 기록했으며, 그곳에서 시청자들은 여전히 실시간 절차적 세계에 감탄하고 이 데모가 활기찬 4k 시대를 촉발했다고 평가했다.
근거 확인하기
출처
- rgba_tbc_elevated_source.zip — source code download page scene.org · files.scene.org ·
- elevated by Rgba & TBC — Breakpoint 2009, pc 4k, ranked 1st Pouet.net · pouet.net
- Source code for 4kb demoscene production "Elevated" released Hacker News · news.ycombinator.com ·