둠(DOOM)이 무선 이어버드로 포팅됨
(doombuds.com)- 1993년 고전 게임 DOOM을 무선 이어버드 PineBuds Pro에서 실행하도록 이식한 프로젝트로, 웹을 통해 원격 플레이 가능
- 이어버드와 웹 서버를 연결하는 직렬 서버(serial server) , 웹 서버, 정적 웹페이지, 그리고 DOOM 포트의 네 구성 요소로 이루어짐
- UART 연결을 통해 약 2.4Mbps 대역폭을 확보하고, MJPEG 스트림으로 영상을 전송해 최대 27FPS 이론 성능을 달성
- CPU를 100MHz에서 300MHz로 오버클럭하고, JPEG 인코딩 한계로 약 18FPS 수준의 실제 성능 확보
- RAM·FLASH 제약을 최적화와 경량화된 Squashware WAD 파일로 해결해, 오픈소스 펌웨어 기반 하드웨어 실험의 가능성 제시
프로젝트 개요
- 1993년 출시된 DOOM을 PineBuds Pro 이어버드에서 실행하도록 이식
- PineBuds Pro는 오픈소스 펌웨어를 지원하는 유일한 무선 이어버드로 언급
- 웹사이트 방문자는 대기열에 등록해 원격으로 게임을 플레이할 수 있음
- 프로젝트는 네 부분으로 구성
- 이어버드에서 실행되는 DOOM 포트
- 이어버드와 웹 서버를 연결하고 MJPEG 스트림을 Twitch로 변환하는 직렬 서버
- 자산 제공, 대기열 관리, 키 입력 전달, 스트림 표시를 담당하는 웹 서버
- 브라우저 표시 및 서버 통신을 담당하는 정적 웹페이지
하드웨어 및 연결 구조
- 이어버드는 디스플레이가 없어 Bluetooth 또는 UART 접점 패드로 데이터 송수신
- Bluetooth는 약 1Mbps로 느려, UART(2.4Mbps) 가 더 적합
- DOOM의 프레임버퍼는 320×200 해상도, 8비트 컬러로 약 96KB
- UART 대역폭 기준 약 3FPS 전송 가능
- 이를 개선하기 위해 MJPEG 스트림 방식 채택
-
JPEG 인코더로 bitbank2/JPEGENC 사용
- 평균 JPEG 프레임 크기 11~13.5KB
- 이론상 최대 FPS는 22~27FPS 수준
CPU 성능 조정
- 기본 펌웨어의 CPU 클럭은 100MHz이나, 이를 300MHz로 상승시키고 저전력 모드 비활성화
- Cortex-M4F(300MHz)는 DOOM 실행에는 충분하지만 JPEG 인코딩에서 병목 발생
- 실제 프레임 속도는 약 18FPS 수준
메모리(RAM) 최적화
- 기본 접근 가능한 RAM은 768KB, 보조 프로세서 비활성화 시 992KB 확보
- DOOM은 4MB RAM을 요구하므로 다양한 최적화 수행
- 룩업 테이블 사전 생성, const 변수 플래시 저장, 캐싱 시스템 비활성화, 불필요 변수 제거 등으로 메모리 절감
플래시(FLASH) 용량 문제
- DOOM 1의 기본 WAD 파일은 4.2MB로, 이어버드의 4MB 저장 한도를 초과
-
fragglet의 경량화 버전 Squashware WAD(1.7MB) 사용으로 문제 해결
- 모든 자산이 플래시 내에 수용 가능
오픈소스 및 접근성
- 프로젝트 코드는 두 개의 GitHub 저장소에서 공개
- DOOMBuds: 이어버드용 DOOM 포트
- DOOMBUDS-JS: 브라우저와 이어버드 간 상호작용 지원
- 웹사이트는 대기열 기반으로 운영되며, 5번째 순서부터 Twitch 스트림이 저지연 MJPEG 스트림으로 전환
Hacker News 의견들
-
어떤 단순한 기기에서도 DOOM이 돌아가는 걸 볼 때마다, 이게 소프트웨어의 승리인지 아니면 더 저렴한 전용 하드웨어를 만들지 못한 경제적 실패인지 고민하게 됨
- PineBuds는 애초에 오픈 펌웨어 플랫폼으로 설계되어 실험을 위한 강력한 MCU를 탑재한 것임
ANC 블루투스 이어버드는 단순한 제품이 아니며, 노이즈 캔슬링은 매우 복잡한 연산을 지속적으로 수행해야 함
빠른 MCU는 단순한 낭비가 아니라 낮은 지연시간과 효율적인 전력 관리의 이점이 있음
완벽한 ASIC을 만들기보다 범용 MCU로 업데이트 가능한 구조를 갖는 것이 훨씬 현실적임
결국, 검증된 MCU를 대량 구매하는 것이 맞춤형 칩을 만드는 것보다 훨씬 경제적임 - 또 다른 관점으로 보면, 이는 규모의 경제 덕분에 고성능 하드웨어가 오히려 가장 저렴한 선택지가 된 경제적 성공의 사례임
- 나는 이것을 반도체 제조의 승리로 봄
맞춤형 칩을 설계하고 생산하는 데 드는 인건비, 테스트, 교육, 소량 생산 비용이 오히려 더 비쌈
재료비보다 비즈니스 프로세스 비용이 훨씬 큰 부분을 차지함 - 시장경제의 엄청난 성공을 경제적 실패로 해석하려는 시도가 놀라움
이어버드에서 DOOM이 돌아가는 세상인데, 이걸 부정적으로 볼 이유가 없음 - CPU가 듀얼코어 300MHz ARM Cortex-M4F라니, DOOM 출시 이후의 하드웨어 스케일링이 정말 미쳤다고 생각함
과한 스펙이지만, 이 모든 게 귀 안에 들어간다는 게 놀라움
- PineBuds는 애초에 오픈 펌웨어 플랫폼으로 설계되어 실험을 위한 강력한 MCU를 탑재한 것임
-
내가 DOOM을 PineBuds Pro에 포팅했음
인터넷을 통해 접속하면 내 이어버드에서 DOOM을 플레이할 수 있음
자세한 내용과 GitHub 링크는 내 사이트에 있음- JPEG 인코딩의 압축률이 어느 정도 되는지 궁금함
-
항상 DOOM만 포팅되는 게 조금 아쉬움
예전엔 단순하지만 중독성 있는 게임이 많았는데, 요즘 게임은 너무 크고 복잡해서 작은 플랫폼에 옮기기 어려움
산업이 인디를 제외하고는 방향을 잃은 것 같음
예전의 Master of Orion 1 같은 게임은 단순하지만 반복해서 즐길 수 있었음
요즘 게임은 영상처럼 상호작용이 적고 XP 노가다 중심이라 흥미가 떨어짐- DOOM이 자주 선택되는 이유는 오픈소스, 적당한 리소스 요구, 흥미로운 엔진, 그리고 존경받는 개발자 때문임
이미 전통처럼 이어지고 있음 - 예전 게임이 작았던 건 기술적 제약 때문이었음
지금은 대부분의 유저가 용량이나 성능에 크게 신경 쓰지 않음
소비자들이 “잘 돌아가기만 하면 됨”이라는 태도를 가지면서 최적화의 가치가 줄어듦
그래도 인디 씬에는 짧고 스타일리시한 게임이 여전히 많음
다만 영화처럼 짧은 게임이 큰 인상을 주기 어려워서 잘 알려지지 않을 뿐임 - 나도 공감함, 이어버드에서 Freespace 2를 돌려보고 싶음
- DOOM이 자주 선택되는 이유는 오픈소스, 적당한 리소스 요구, 흥미로운 엔진, 그리고 존경받는 개발자 때문임
-
DOOM 포팅 리스트는 위키피디아 페이지에서 볼 수 있음
- 관련 서브레딧은 r/itrunsdoom임
-
PineBuds Pro에 대한 멋진 홍보 효과라고 생각함
Fairbuds는 이런 게 가능할까 궁금함
그런데 이렇게 많은 기기에서 DOOM이 돌아가는데, 왜 아직도 386에서는 부드럽게 실행되지 않는 걸까 -
John Carmack이 DOOM 3 이후 인터뷰에서, 엔진이 복잡해지면서 모든 코드를 혼자 작성할 수 없게 됐다고 말한 게 떠오름
지금의 AI 시대에 그는 어떤 생각을 할지 궁금함- 그는 현재 AGI 실현에 집중하고 있음
개인적으로는 AI에 대해 긍정적일 것 같음
그리고 “Masters of Doom”은 정말 좋은 책이라 추천함 - DOOM 개발 당시에도 Carmack은 근사 보간(Approximate Interpolation) 같은 형태로 AI적 접근을 활용했음
- 그는 현재 AGI 실현에 집중하고 있음
-
PineBuds Pro를 써본 사람이 있는지 궁금함
Pine64 IRC에는 관련 채널이 없어서 물어보기 어려웠음- 솔직히 말하면, 본래 용도로는 써본 적이 없음
착용감이나 음질은 모르겠지만, Pine64 디스코드 채널에 Pinebuds 전용 방이 있음 - 출시 이후 계속 사용 중인데, 배터리 지속시간이 짧음 — ANC 켜면 최대 2시간 정도임
- 예전엔 Pine64를 좋아했지만, e-ink 태블릿과 폰 문제 이후로 신뢰가 줄었음
- 나는 만족스럽게 사용 중임
일부러 ANC 없는 펌웨어를 설치했지만, 블루투스 이어버드로서는 충분히 제 역할을 함
- 솔직히 말하면, 본래 용도로는 써본 적이 없음
-
몇 년 후, 이어버드에 램이 좀 더 늘어나면 로컬 Kubernetes 클러스터도 돌릴 수 있을 것 같음
-
“DOOM을 일회용 전자담배 칩에 포팅했다”는 글을 기다리고 있음 😄
- 대부분의 전자담배에 들어가는 Puya PY32 MCU는 3KB RAM, 24KB ROM이라 DOOM 실행엔 한참 부족함
무어의 법칙이 계속된다면, 약 10년 후쯤 가능할지도 모름 - 관련 영상은 YouTube 링크에서 볼 수 있음
- 대부분의 전자담배에 들어가는 Puya PY32 MCU는 3KB RAM, 24KB ROM이라 DOOM 실행엔 한참 부족함
-
이어버드에 직접 연결된 독립 뷰어도 모바일에서 작동함
데모 영상 참고
터치 컨트롤은 없고, 인트로 루프만 재생됨