플레이 가이드
한 매치는 5분 데스매치. 사망 시 2.5초 후 부활. 매치 종료 시 가장 많은 킬(frags)을 기록한 플레이어가 우승합니다. 인벤토리 관리 없이, 픽업 → 사격 → 코너링의 단순한 루프에 집중합니다.
조작법
| 키 | 동작 |
|---|---|
WASD | 이동 (한글 IME ㅈㅁㄴㅇ 자동 인식) |
| 마우스 | 조준 (캐릭터가 마우스 방향으로 즉시 회전) |
| 마우스 좌클릭 | 사격 / 누르고 있으면 연사형 무기 자동 연사 |
1 ~ 9 | 무기 슬롯 직접 선택 (Q3A 슬롯 순서) |
Q / E | 이전 / 다음 보유 무기 |
| 마우스 휠 | 보유 무기 순환 |
Tab | 스코어보드 (누르고 있는 동안 표시) |
무기 9종 상세
| 슬롯 | 무기 | 유형 | 데미지 | 발사 속도 | 사거리 | 특징 |
|---|---|---|---|---|---|---|
| 1 | Gauntlet | 근접 (40° 정면 호) | 50 | 400ms | 36px | 시작 무기, 탄약 무한, 백업/굴욕샷용 |
| 2 | Machine Gun | Hitscan | 8 | 100ms | 2000px | 시작 무기 (100발), 시야 닿는 거리 어디든 |
| 3 | Shotgun | Multi-hitscan 11펠릿 | 10/펠릿 (최대 110) | 1000ms | 600px | 근접 폭딜, 코너 진입 메인 |
| 4 | Grenade Launcher | 튕기는 투사체 | 100 + 100 스플래시 (120반경) | 800ms | 2000px | 벽 반사, 2.5초 후 폭발. 모서리 견제 |
| 5 | Rocket Launcher | 직선 투사체 + 스플래시 | 100 + 80 스플래시 (110반경) | 800ms | 2400px | 로켓점프 가능, 회피 어려운 면 공격 |
| 6 | Lightning Gun | 지속 빔 (매 tick 데미지) | 초당 약 180 | 50ms tick | 770px | 붙으면 압도적 화력, 사거리 짧음 |
| 7 | Railgun | 관통 즉시 명중 | 100 | 1500ms | 2400px | 녹색 나선형 트레일, 1샷 정밀 |
| 8 | Plasma Gun | 빠른 투사체 | 20 + 15 스플래시 (30반경) | 100ms | 1800px | 스팸형, 중거리 견제 |
| 9 | BFG10K | 강력 투사체 | 100 + 100 스플래시 (130반경) | 200ms | 2400px | 희귀 픽업, 라운드 결정짓는 화력 |
파워업 & 픽업
| 아이템 | 효과 | 지속 | 리스폰 |
|---|---|---|---|
| Quad Damage | 모든 데미지 × 4 | 25초 | 60초 |
| Haste | 이동속도 ×1.5, 발사속도 ×1.43 | 25초 | 45초 |
| 메가 헬스 | +100 HP (200까지 오버힐) | — | 35초 |
| 옐로우 아머 | +100 아머 (200까지) | — | 30초 |
| 일반 체력 | +25 HP (100 캡) | — | 12초 |
| 일반 아머 | +50 아머 (100 캡) | — | 20초 |
아머는 받는 데미지의 2/3를 흡수합니다(아머 잔량까지). 200/200 풀세팅이면 사실상 한 라운드 영원히 살아남습니다.
매치 흐름
- 닉네임 입력 — 16자 이내, 브라우저에 저장됩니다.
- 방 만들기 또는 입장 — 방 목록에서 입장하거나 새 방을 만듭니다. 비밀번호는 선택 사항.
- 대기실 설정 — 방장은 "봇 추가" 버튼으로 봇을 채우거나, 시작 인원만 모이면 바로 시작.
- 매치 시작 — 5분 타이머 시작. 시작 시 모든 플레이어는 건틀릿 + MG(100발)로 시작.
- 플레이 — 사망 시 2.5초 후 가장 멀리 떨어진 스폰 포인트에 부활.
- 매치 종료 — 킬 1등 우승 화면. 방장은 "대기실로" 또는 모두 "방 나가기".
FOV 시야 시스템
플레이어 전방 90° 영역만 보입니다. 시야 밖은 검은 안개. 벽 너머도 보이지 않으며, 코너 너머 적은 직접 봐야 확인 가능합니다.
가까운 80px 반경은 항상 보입니다 (피격 인지용). FOV 알고리즘은 120 ray raycasting으로 벽 충돌까지의 polygon을 매 프레임 그려 알파 마스킹합니다.
봇 운영
방장이 대기실에서 "봇 추가" 버튼으로 봇을 1명씩 추가할 수 있습니다 (최대 10명 - 인원 자리). 봇은 다음 행동을 수행합니다:
- 시야 내 가장 가까운 적을 LoS(벽 차단 체크) 통과시 타겟팅
- 거리별 무기 자동 선택: 근접엔 건틀릿/샷건, 중거리엔 로켓/플라즈마, 원거리엔 레일건/번개
- aim 보정에 따라 사격(완벽한 aim 아님)
- 회피 무빙 (perpendicular strafe)
- 적 없을 때 가까운 픽업으로 이동
전략 팁
1. 무기 우선순위 잡기
스폰 직후 로켓 또는 레일건을 향해 이동하세요. 건틀릿+MG로는 풀체력 적 한 명을 잡기 어렵습니다.
2. 코너 컨트롤
FOV 시야가 90°이므로 측후방은 보이지 않습니다. 적을 우회하는 동선을 자주 사용하세요.
3. 스플래시 견제
로켓/유탄/BFG로 적이 픽업으로 향하는 길목을 견제하면 픽업+킬 모두 챙길 수 있습니다.
4. 파워업 컨트롤
Quad Damage(60초 주기) 리스폰 타이밍을 외우세요. 5분 매치에 약 5번 떠오릅니다.
5. 라이트닝건 vs 샷건
근접에선 라이트닝건이 압도적이지만 사거리 770px가 한계입니다. 그 너머는 다른 무기로 교체.
LAN 호스팅 (직접 서버 띄우기)
회사 와이파이에서 동료들과 즉석 플레이하려면, 한 명이 자기 PC에서 서버를 띄우면 됩니다.
# Node.js 20+ 필요
git clone <repo>
cd Dogkov
npm install
npm run build # esbuild 클라이언트 번들 생성
npm start # 서버 시작 (port 3000)
서버가 뜨면 콘솔에 LAN IP가 표시됩니다. 그 주소를 동료들에게 공유하세요 (예: http://192.168.50.52:3000). macOS는 첫 실행 시 방화벽 허용 프롬프트가 뜹니다.