Show HN: QR 코드에 담긴 Doom 스타일 게임 제작

15 hours ago 3

  • The Backdooms는 QR 코드에서 직접 실행할 수 있는 HTML 게임으로, DOOM 1993과 The Backrooms에서 영감을 받아 개발됨
  • 이 프로젝트는 QR 코드 저장 및 압축의 한계를 시험하고, QR 코드 내에서 경량 웹 애플리케이션을 호스팅하는 혁신적인 방법을 보여주기 위해 설계됨
  • 게임은 인터넷 연결 없이 QR 코드를 스캔하여 플레이할 수 있으며, 극도로 압축된 형태로 제공됨
  • DecompressionStream API를 사용하여 브라우저 내에서 동적으로 게임을 실행할 수 있음
  • 현대 모바일 브라우저에서 호환 가능하며, Python과 QR 코드 라이브러리를 사용하여 QR 코드를 생성할 수 있음

프로젝트 개요

  • The Backdooms는 QR 코드에서 직접 실행할 수 있는 HTML 게임으로, DOOM 1993과 The Backrooms에서 영감을 받아 개발됨
  • QR 코드 저장 및 압축의 한계를 시험하고, QR 코드 내에서 경량 웹 애플리케이션을 호스팅하는 혁신적인 방법을 보여주기 위해 설계됨

기능

  • 완전 오프라인: QR 코드를 스캔한 후 인터넷 연결 없이 게임을 플레이할 수 있음
  • 극한의 압축: Zlib 압축과 Gzip 디컴프레션 스트림, base64 인코딩을 사용하여 최종 결과를 극도로 압축함
  • 자체 추출 웹페이지: DecompressionStream API를 사용하여 브라우저 내에서 동적으로 게임을 실행함
  • 모바일 호환: Decompressionstream API를 지원하는 최신 모바일 브라우저에서 작동함 (Edge, Yandex, Opera)

설치 및 종속성

  • 기술적으로는 최신 웹 브라우저만 필요하지만, 약 2.5kb 게임의 QR 코드를 생성하려면 Python 3.7+, qrcode 라이브러리, pillow가 필요함

사용법

1️⃣ 게임을 QR 코드로 변환

  • 스크립트를 다음 명령어로 실행: python3 QRGEN.py <your-game.html> <output-qrcode.png>

2️⃣ QR 코드 스캔

  • 스마트폰이나 QR 스캐너를 사용하여 게임을 웹 브라우저에서 직접 열 수 있음

3️⃣ 즉시 플레이 🎮

  • 다운로드나 설치 없이 The Backdooms를 즐길 수 있음

기술적 분석

압축 워크플로우

  • 입력 HTML 읽기: 파일이나 입력 소스에서 주어진 HTML 콘텐츠를 읽음
  • Zlib 압축 + GZip 디컴프레션: HTML을 Zlib으로 압축하고 GZip의 Decompressionstream을 사용하여 최상의 압축을 구현함
  • Base64 인코딩: 압축된 데이터를 Base64로 인코딩하여 텍스트 기반으로 유지하고 HTML 파일에 안전하게 포함할 수 있도록 함
  • HTML 래퍼에 포함: JavaScript 기반의 자체 추출 HTML 래퍼가 생성됨. 이 래퍼는 브라우저에서 열릴 때 콘텐츠를 자동으로 디컴프레션하는 DecompressionStream API 함수를 포함함
  • 데이터 URI 변환: 전체 HTML을 data:text/html;base64,... 형식으로 변환하여 물리적 파일 없이 쉽게 저장하고 공유할 수 있도록 함

QR 코드 생성 논리

  • 시스템은 먼저 qr.make(fit=True)를 사용하여 콘텐츠 길이에 따라 QR 크기를 동적으로 조정하여 가능한 가장 작은 QR 버전을 생성하려고 시도함
  • 필요한 버전이 40을 초과하면 (QR 코드 표준 한계), fit=False로 버전 40을 강제함
  • 최대 데이터 용량을 허용하는 가장 낮은 오류 수정 수준 L을 사용하여 가능한 한 많은 데이터를 맞추려고 함
  • 데이터가 여전히 QR v40 수준 L에 맞지 않으면 프로세스가 실패하고 데이터가 QR 코드에 인코딩하기에 너무 크다는 오류 메시지가 반환됨

결과

  • 성공하면 QR 코드가 생성되고 표시됨
  • 실패하면 데이터가 QR 코드에 인코딩하기에 너무 크다는 오류 메시지와 함께 프로세스가 종료됨

라이선스

  • 이 프로젝트는 MIT 라이선스 하에 공개되어 있으며, 자유롭게 사용, 수정, 공유할 수 있음

크레딧

  • DOOM을 개발한 id Software
  • 5년 전 이 아이디어를 제안한 matttkc
  • Undertale의 놀라운 음악을 만든 Toby Fox, 이 게임의 GitHub 호스팅 버전은 Bonetrousle의 8비트 버전을 사용함
  • Kuber Mehta에 의해 개발됨

Read Entire Article