Return of the Obra Dinn: 1비트 3D 디더링의 기술적 성취와 UX의 한계
최근 Hacker News에서 흥미로운 스레드가 다시 수면 위로 올라왔습니다. 바로 Lucas Pope의 명작, Return of the Obra Dinn의 1비트 디더링 기술에 대한 개발 일지입니다. 15년 넘게 렌더링 파이프라인과 엔진 최적화를 다뤄온 엔지니어로서, 저는 종종 인디 개발자들이 레트로 감성을 3D 환경에 구현하려다 실패하는 사례를 수없이 봐왔습니다. 대부분은 단순히 화면 전체에 Post-processing 셰이더를 덮어씌우는 수준에 그치죠. 하지만 이 게임이 이룩한 기술적 성취는 그 궤를 달리합니다.
Screen-space 디더링의 근본적인 문제점
초기 Mac SE 시절의 1bpp(비트당 픽셀) 감성을 3D 1인칭 게임에 이식할 때 발생하는 가장 큰 문제는 Shimmering(깜빡임) 현상입니다.
전통적인 디더링은 Screen-space에서 이루어집니다. 즉, 카메라가 이동하거나 회전하면, 3D 모델의 표면이 화면에 고정된 Dither matrix 위를 미끄러지듯 지나가게 됩니다. 정적인 2D 이미지에서는 완벽해 보이지만, 카메라가 조금만 움직여도 픽셀들이 요동치는 끔찍한 시각적 노이즈가 발생하죠. 멀미를 유발하기 딱 좋은 환경입니다.
Spherical Mapped Dithering: 우아한 해결책
Lucas Pope가 도입한 해결책은 Dither pattern을 Screen-space가 아닌 3D 공간의 오브젝트 표면에 매핑하는 것이었습니다. 특히 그는 Spherical mapping(구면 매핑)을 활용하여 카메라의 회전과 이동에도 디더링 패턴이 3D 모델에 안정적으로 달라붙어 있도록 만들었습니다.
- 안정성 확보: 매 픽셀마다 카메라 기준의 구면 좌표계를 계산하고, 이를 기반으로 Dither matrix를 샘플링합니다.
- 해상도 트릭: 단순히 1:1로 매핑하는 것을 넘어, 2x 해상도 매핑을 적용해 마치 점묘화(Pointillism) 같은 독특한 질감을 만들어냈습니다.
이 접근법은 최근 유행하는 Texel Splatting 같은 기술과 비교해도 훨씬 안정적입니다. Billboarding 기법을 연상시키면서도 명확하게 3D 공간감을 유지하죠.
”아무도 눈치채지 못할 디테일에 100시간을 쏟는 것”
원문에서 제가 가장 깊이 공감했던 문장은 이것입니다.
“없다고 해서 아무도 눈치채지 못할 부분에 100시간을 쏟는 것은 조금 이상한 기분입니다. ‘와, 이 디더링 정말 안정적이네. 마법 같아’라고 생각할 사람은 아무도 없을 테니까요.”
시니어 엔지니어라면 누구나 이 딜레마를 겪어봤을 겁니다. 우리는 종종 유저들이 불편함을 느끼지 않게 만들기 위해 수십 일을 갈아 넣습니다. 기술적인 완벽함은 대개 투명하게 작동할 때 가장 빛납니다. HN 스레드의 한 유저가 “나는 그것을 바로 눈치챘고, 그 기술적 성취에 감탄해 즉시 게임을 샀다”고 말한 것을 보며 묘한 카타르시스를 느꼈습니다.
기술적 찬사 이면의 UX 딜레마
하지만 여기서 짚고 넘어가야 할 중요한 비판점이 있습니다. Hacker News의 댓글들을 보면 이 기술의 현실적인 한계가 명확히 드러납니다.
- Eye Strain: 수많은 유저들이 눈의 피로와 멀미(Motion sickness)를 호소했습니다.
- 장르와의 충돌: 이 게임은 화면 내의 미세한 단서를 찾아내야 하는 추리 및 연역(Deduction) 게임입니다. 시각적 디테일이 중요한 게임에서, 1비트 디더링은 종종 유저가 게임 엔진과 싸우고 있다는 느낌을 주었습니다.
아무리 훌륭한 렌더링 기법이라도, 그것이 코어 게임플레이 루프를 방해한다면 다시 생각해봐야 합니다. “시각적 스타일이 훌륭한 게임을 망쳤다”는 일부 유저의 날 선 평가는, 우리가 기술적 낭만에 빠져 UX를 간과했을 때 어떤 일이 벌어지는지 보여주는 훌륭한 반면교사입니다. 저 역시 과거에 화려한 Volumetric lighting 시스템을 구현했다가 가시성을 해친다는 이유로 QA 단계에서 통째로 덜어내야 했던 뼈아픈 기억이 떠오르더군요.
결론 (Verdict)
Return of the Obra Dinn의 Spherical mapped dithering은 Demoscene 수준의 경이로운 기술적 성취입니다. 3D 공간에서 1bpp 레트로 아트를 구현하고자 한다면 이보다 더 나은 레퍼런스는 당분간 찾기 힘들 것입니다.
하지만 프로덕션 레벨에서 이 기술을 도입하려 한다면, 반드시 접근성(Accessibility) 옵션을 고려해야 합니다. 아무리 완벽한 디더링 알고리즘도 유저의 멀미를 고쳐주진 못하니까요. 기술은 결국 프로덕트와 유저를 위해 존재해야 한다는 사실을 다시 한번 상기시켜주는 훌륭한 사례입니다.