← 프로젝트 프로젝트 케이스 스터디

Q3DM17FFA2D

저작권을 존중하면서 파일 하나 없이 "퀘이크의 손맛"을 되살린 브라우저 아레나입니다

공허 위에 부유하는 데크로 이루어진 틸트 탑뷰 아레나를 관전 모드로 지켜보는 인게임 화면입니다
역할
1인 개발 — 기획·레벨/시스템 디자인·클라이언트/서버 개발·라이선스 리서치 전반
기간
2026년 7월, 약 3일 집중 개발 (킥오프 → 실기기 피드백)
스택
Three.js/WebGL · Node.js 60Hz 권위 시뮬레이션 · WebRTC(werift)+WebSocket 폴백 · 델타 스냅샷+deflate · node:sqlite·WebAuthn · Web Audio·speechSynthesis · Cloudflare Tunnel/TURN/Turnstile

Quake III Arena의 FFA 맵 “Q3DM17 — The Longest Yard”를 브라우저에서 8명에서 16명이 실시간으로 겨루는 트리뷰트입니다. 세 가지 제약을 동시에 만족시키려 했습니다. 첫째로 원작의 손맛과 레벨 흐름을 진하게 환기하고, 둘째로 무료·소스 비공개로 배포하되 법적으로 문제 여지를 거의 남기지 않으며, 셋째로 링크만 열면 즉시 관전·참여되는 웹 접근성을 확보하는 것입니다. 이 셋은 서로 당기는 힘이라 프로젝트의 거의 모든 결정을 그 긴장 위에서 내렸습니다.

프로젝트를 세 축의 교차점으로 설계했습니다. 원작 고증은 공개 영상·위키 스크린샷·레벨 디자인 문헌만으로 비율과 위상을 측정하는 “거의 클린룸” 재구성으로 접근했습니다. 원본 .bsp/pak0.pk3는 열지 않는다는 원칙을 불변으로 두고 딥리서치로 확정한 사실과 미확정 추정을 좌표 주석에서 구분했습니다. 확정한 사실은 무기고가 Shotgun/Rocket/Railgun뿐이라는 점과 “Railgun porch” 저격 거점, 다리 중앙 텔레프래그 같은 것들입니다. 웹 접근성은 관전을 기본 상태로 두는 온보딩으로 풀었습니다. 클릭하면 시점이 전환되고 봇 게이트를 통과하면 난입합니다. 절차적 생성은 라이선스 리스크를 구조적으로 낮추는 축이자 초경량 다운로드라는 부가 이득을 겸했습니다.

핵심 시스템 몇 가지를 이 긴장 위에서 결정했습니다. 맵 재현은 다리와 허리높이 커버, 하층 5패드 복합체, 텔레포터 3개소 수렴, 원작 특유의 “가장자리 스폰”까지 반영했습니다. A/B 측정으로 림 스폰이 밸런스 비용 없이 원작 감성을 준다는 것을 확인했습니다. 무기 밸런스는 Q3 원전 8종 수치를 그대로 두고 셀프플레이 시뮬레이션 120 봇매치-분으로 상대 효율 서열이 Q3 통념과 일치함을 검증했습니다. 유일한 이상치 Void Cannon은 수치 대신 리스폰 30초라는 희소성으로 잡았습니다. 조준 보정은 틸트 탑뷰가 커서 하나로 pitch를 줄 수 없다는 구조적 난점을 안고 있었습니다. 이를 원작 훼손이 아니라 “조작계 번역”으로 규정하고 커서 자석·히스테리시스(coyote aim)·수직 오토피치·발사체 도달 마커를 전부 클라이언트에만 구현해 서버 판정을 불변으로 유지했습니다. 밸런스를 건드리지 않고 체감만 올렸습니다. 8명에서 16명 실시간은 부팅 시 봇 8명이 상시 FFA를 돌리다가 사람이 오면 최저 점수 봇을 대체하고 16명까지 확장하며 이탈 시 백필합니다.

런타임에 로드하는 파일이 0개입니다. 지오메트리·텍스처·사운드·아나운서를 전량 코드로 생성했습니다. 절차 지오메트리와 캔버스 텍스처, Web Audio 신디시스, TTS입니다. 넷코드는 권위 60Hz 시뮬레이션 위에 예측과 조정, 지연보상 되감기, ack 기반 델타 스냅샷, WebRTC를 더했습니다. 전송은 직결 UDP에서 TURN 릴레이, 터널 WS로 이어지는 3단 폴백이라 방화벽 뒤에서도 연결됩니다.

공개 배포되어 실기기 QA를 거쳤습니다. 프로젝트는 id Software/Bethesda/Microsoft와 무관한 비공식 팬 오마주이고 아트 에셋 0과 원작 파일 미사용을 유지합니다. 게임명에 남는 상표 근접 리스크는 로딩·메뉴의 비제휴 고지문으로 완화하고 공개 확대 시 재고 대상으로 문서에 기록해 두었습니다.

← 프로젝트로 돌아가기