DNS로 DOOM을? DNS의 놀라운 변신!

by DD
2개월 전
조회수 20

DNS TXT 레코드를 활용하여 DOOM 게임을 실행하는 기발한 프로젝트가 등장

파일 서버(File Server)로 설계되지 않은 DNS를 활용하여 게임 엔진과 에셋을 로드

C# 기반의 managed-doom을 활용, 파일 시스템 접근 없이 메모리에서 실행

커뮤니티에서는 Gmail을 파일 저장소로 활용했던 과거 사례를 언급하며 DNS의 잠재력에 주목

DNS TXT 레코드 기반 DOOM 실행 원리

본 프로젝트는 DNS의 TXT 레코드를 데이터 저장소(Data Storage)로 활용하여 DOOM 게임을 구동한다. 저자는 게임 엔진과 에셋을 Base64로 인코딩하여 여러 개의 TXT 레코드에 분산 저장하고, PowerShell 스크립트를 통해 이를 다시 조합하여 메모리에서 실행한다. 특히, 파일 시스템에 직접적인 접근 없이 managed .NET 어셈블리를 로드하는 방식을 채택하여 데이터 미저장 정책(Zero-Retention Policy)을 구현했다.

C# 기반 managed-doom의 활용

저자는 C#으로 작성된 managed-doom을 활용하여 DOOM을 메모리에서 실행하는 데 성공했다. 기존 managed-doom은 파일 경로를 통해 게임 데이터를 로드하도록 설계되었으나, 저자는 이를 수정하여 메모리 스트림(MemoryStream)에서 데이터를 읽어오도록 변경했다. 또한, 윈도우 API 호출을 직접 사용하여 네이티브 종속성(Native Dependency)을 제거함으로써, DNS를 통한 게임 실행 환경을 구축했다.

DNS 기반 파일 전송의 기술적 도전

DNS는 원래 도메인 이름을 IP 주소로 매핑하기 위해 설계되었으며, 파일 저장에 최적화된 시스템이 아니다. 저자는 TXT 레코드의 2,000자 제한과 대용량 파일 전송의 어려움을 해결하기 위해 Base64 인코딩(Base64 Encoding), 파일 분할, 그리고 메타데이터 레코드를 활용했다. 또한, CloudFlare Pro DNS를 사용하여 DNS 쿼리(DNS Query) 속도와 안정성을 확보했다.

커뮤니티 반응 및 추가적인 아이디어

커뮤니티에서는 과거 Gmail을 파일 저장소로 활용했던 사례를 언급하며, DNS의 잠재적인 활용 가능성에 주목했다. 한편, TXT 레코드의 null 처리 문제를 제기하며, 더욱 효율적인 인코딩 방식(Efficient Encoding)을 통해 데이터 크기를 줄일 수 있다는 아이디어를 제시했다. 또한, DNS를 통해 게임을 제어하고 화면을 전송하는 방식에 대한 아이디어가 제시되기도 했다.

Doom over DNS

댓글 0

첫 번째 댓글을 남겨보세요!