개발자용 멀티플레이 기능 추가

This commit is contained in:
2026-02-02 20:26:28 +09:00
parent b4c22edcbd
commit 9dea9daaa9
23 changed files with 1754 additions and 13 deletions

View File

@@ -0,0 +1,176 @@
# 네트워크 연결 기능 사용 가이드
에디터와 빌드 모두에서 IP 주소를 통해 서버에 접속할 수 있는 기능이 추가되었습니다.
## 새로 추가된 기능
### 1. 네트워크 연결 윈도우 (NetworkConnectionWindow)
GUI 기반의 전용 에디터 윈도우
**사용 방법:**
- 메뉴: `Window > Network > Connection Manager` 또는 단축키 `Ctrl+Shift+N` / `Cmd+Shift+N`
- 기능:
- 연결 모드 선택 (호스트/클라이언트/서버)
- 서버 IP와 포트 입력
- 연결 시작/중지
- 연결 상태 확인
- 연결 설정 저장/로드
### 2. 네트워크 연결 헬퍼 (NetworkConnectionHelper)
커스텀 인스펙터가 포함된 컴포넌트
**사용 방법:**
1. 씬의 게임오브젝트에 `NetworkConnectionHelper` 컴포넌트 추가
2. 인스펙터에서 설정:
- 서버 IP (클라이언트 모드용)
- 포트 번호
- 자동 시작 옵션
3. 인스펙터 버튼으로 제어:
- Start Host
- Start Server
- Start Client
- Disconnect
4. 실시간 연결 상태와 네트워크 정보 확인
### 3. 네트워크 조인 UI (NetworkJoinUI)
인게임 UI로 IP를 통한 접속 지원 (에디터/빌드 모두 작동)
**사용 방법:**
1. 메뉴에서 `GameObject > Network > Create Network Join UI` 선택
2. `J` 키로 UI 패널 토글
3. UI 버튼으로 접속:
- Join: 입력된 IP로 접속
- Host: 호스트로 시작
- Disconnect: 연결 종료
### 4. AutoHost 업데이트
에디터 모드에서 자동 호스트 시작 (설정 가능)
**사용 방법:**
- `AutoHost` 컴포넌트 확인
- 설정:
- `Enable Auto Host`: 자동 시작 활성화/비활성화
- `Only In Editor`: 에디터에서만 자동 시작 (빌드에서는 비활성화)
## 빠른 설정
### 방법 A: 퀵 설정 메뉴 사용 (추천)
```
Tools > Network > Quick Setup for IP Connection
```
이 옵션은:
- NetworkConnectionHelper 생성
- AutoHost 비활성화 (선택 사항)
### 방법 B: 수동 설정
1. `Tools > Network > Create Connection Helper`로 헬퍼 생성
2. `Tools > Network > Disable AutoHost`로 자동 시작 비활성화
## 멀티플레이어 테스트 방법
### 1. 로컬 테스트 (같은 컴퓨터)
1. 윈도우: `Window > Network > Connection Manager` 열기
2. **인스턴스 1:**
- 모드: Host 선택
- 포트: 7777 (기본값)
- "Start" 클릭
3. **인스턴스 2:**
- 모드: Client 선택
- IP: 127.0.0.1 또는 localhost
- 포트: 7777
- "Connect" 클릭
### 2. 네트워크 테스트 (같은 네트워크)
1. 호스트 컴퓨터에서 로컬 IP 확인 (cmd에서 `ipconfig` 실행)
2. **호스트:**
- Connection Manager에서 Host 모드로 시작
3. **클라이언트:**
- Connection Manager에서 Client 모드 선택
- IP: 호스트 컴퓨터의 로컬 IP (예: 192.168.1.100)
- 포트: 7777
- "Connect" 클릭
### 3. 인스펙터로 테스트
1. `NetworkConnectionHelper` 컴포넌트 추가
2. 인스펙터 버튼으로 호스트/클라이언트 시작
3. 상태와 연결 정보 확인
## 연결 모드 설명
### Host
- 서버와 클라이언트 모두 역할 수행
- 멀티플레이어 게임 호스팅
- 플레이어들이 당신의 IP로 접속
### Client
- 기존 서버에 접속
- 서버 IP 주소 필요
### Server
- 전용 서버 모드 (플레이어 없음)
- 전용 서버용
## 네트워크 정보 표시
모든 연결 방법에서 다음을 표시:
- 현재 모드 (호스트/클라이언트/서버)
- 연결 상태
- IP 주소와 포트
- 접속된 클라이언트 수
- 로컬 클라이언트 ID
## 팁
1. **로컬 테스트:**
- `127.0.0.1` 또는 `localhost` 사용
- 같은 네트워크에서 테스트할 때 로컬 IP 사용
2. **기본 포트:**
- 기본 포트는 `7777`
- 연결 컴포넌트 설정에서 변경 가능
3. **방화벽:**
- 네트워크 연결을 위해 포트 개방 필요
- Windows 방화벽이 연결을 차단할 수 있음
4. **여러 에디터 인스턴스:**
- Unity의 멀티플레이 툴 사용
- 또는 여러 빌드 실행
## 기존 시스템과의 호환성
새 기능들은 기존 시스템과 통합:
- 플레이어 스폰은 `NetworkConnectionHandler`가 자동 처리
- 연결 승인은 `NetworkConnectionHandler`가 담당
- 기존 멀티플레이어 시스템과 호환
- 기존 코드 수정 불필요
## 파일 목록
### 새로 생성된 파일
- `Assets/Scripts/NetworkConnectionHelper.cs` - 네트워크 헬퍼 컴포넌트
- `Assets/Scripts/NetworkJoinUI.cs` - 인게임 연결 UI
- `Assets/Scripts/QuickNetworkSetup.cs` - 빠른 설정 스크립트
- `Assets/Scripts/Editor/NetworkConnectionWindow.cs` - 연결 관리자 윈도우
- `Assets/Scripts/Editor/NetworkConnectionHelperEditor.cs` - 헬퍼 커스텀 인스펙터
- `Assets/Scripts/Editor/NetworkUIBuilder.cs` - UI 생성 도구
- `Assets/Scripts/Editor/QuickNetworkSetupEditor.cs` - 빠른 설정 에디터 도구
### 수정된 파일
- `Assets/Scripts/AutoHost.cs` - 설정 가능한 옵션 추가
## 문제 해결
### 연결 실패 시
1. IP 주소와 포트 번호 확인
2. 방화벽 설정 확인
3. 같은 네트워크에 있는지 확인
4. 호스트가 먼저 실행 중인지 확인
### 자동 시작 비활성화 방법
1. `Tools > Network > Disable AutoHost` 선택
2. 또는 `AutoHost` 컴포넌트의 `Enable Auto Host` 체크 해제
### UI가 보이지 않을 때
1. `J` 키 눌러 토글
2. 또는 인스펙터에서 `NetworkJoinUI` 활성화 확인