Files
Northbound/Assets/Scripts/NETWORK_SETUP_GUIDE_KO.md

6.8 KiB

🎮 네트워크 연결 설정 가이드

📋 상황 요약

PortListenerTest: 포트 열림 (yougetsignal 성공)
포트 포워딩: 작동 중 (yougetsignal 성공으로 증명)
방화벽: 허용 중 (yougetsignal 성공으로 증명)
유니티 Netcode: 포트가 닫혀 있음

즉시 해결책 (3단계)

1단계: 테스트 시작 (30초)

  1. NetworkManagerQuickTest 추가 (씬의 아무 게임오브젝트)
  2. 우클릭 → "Run Quick NetworkManager Test"
  3. 콘솔 출력 공유

기대 결과:

✓ NetworkManager found!
✓ Player Prefab: Player
✓ Unity Transport found!
✓ Transport: 4045, 0.0.0.0
✓ NetworkConnectionHandler found!

2단계: 팀원 연결 테스트 (1분)

  1. 팀원에게 당신의 퍼블릭 IP 알림
  2. 팀원: 게임에서 IP:포트 입력
  3. 팀원: "연결" 클릭

기대:

  • 성공: 팀원이 접속!
  • 실패: 에러 로그 공유

3단계: 문제 해결

팀원이 접속 못할 경우:

팀원 측:

  • 올바른 퍼블릭 IP 입력했는지 확인
  • 방화벽 허용 확인
  • 유니티 Netcode 버전 확인 (동일해야 함)

호스트 측 (당신):

  • 콘솔에서 "[ConnectionHandler] 클라이언트" 메시지 확인
  • 스폰 성공하는지 확인
  • 플레이어가 생성되는지 확인

🔧 필수 구성 요소

NetworkManager 설정

필수:

NetworkManager GameObject:
  - Player Prefab: Player (Assets/Prefabs/Player/)
  - Connection Approval: ✓ 체크
  - Enable Scene Management: ✓ 체크

Unity Transport 설정

필수:

Unity Transport:
  - Port: 4045
  - Address: 0.0.0.0 (모든 인터페이스 허용)
  - ServerListenAddress: 0.0.0.0

라우터 포트 포워딩

필수:

라우터 포트 포워딩:
  - External Port: 4045
  - Internal Port: 4045
  - Protocol: TCP
  - Internal IP: 당신 컴퓨터의 IPv4 (ipconfig로 확인)

IP 확인:

명령 프롬프트 → ipconfig
IPv4 주소 찾기 (예: 192.168.1.50)

작동 중인지 확인

방법 1: yougetsignal (가장 신뢰)

https://www.yougetsignal.com/tools/open-ports/

입력:
- IP: 당신의 퍼블릭 IP (https://api.ipify.org)
- Port: 4045

기대: "Port 4045 is open"

방법 2: 콘솔 로그

호스트 시작 성공:

[ConnectionHandler] 서버 시작됨
[ConnectionHandler] 스폰 포인트 X개를 찾았습니다
[ConnectionHandler] 클라이언트 [ID] 연결됨
[ConnectionHandler] 플레이어 [ID] 스폰됨

클라이언트 연결 성공:

[ConnectionHandler] 클라이언트 [ID] 승인됨. 수동 스폰으로 대기.

🎮 게임 플레이 방법

호스트 (당신)

  1. 에디터에서 플레이 모드 시작
  2. 또는 빌드 실행
  3. 콘솔에서 "호스트 시작됨" 확인
  4. 팀원에게 퍼블릭 IP 알림
  5. 팀원이 접속할 때까지 대기

클라이언트 (팀원)

  1. 에디터에서 플레이 모드 시작
  2. 네트워크 연결 UI에서 호스트의 퍼블릭 IP 입력
  3. "연결" 클릭
  4. 콘솔에서 "클라이언트 연결됨" 확인
  5. 게임 시작!

⚠️ 일반적인 문제 및 해결

문제 1: "ConnectionHandler: PlayerPrefab이 null입니다"

원인: Player Prefab이 NetworkManager에 할당되지 않음

해결:

NetworkManager 선택 → Network Config → Player Prefab
Assets/Prefabs/Player/Player.prefab 드래그

문제 2: 팀원이 "Failed to connect to server" 에러

가능한 원인:

  1. 틀린 퍼블릭 IP 입력
  2. 포트가 닫혀 있음 (호스트 재시작 필요)
  3. 방화벽 차단
  4. 다른 Unity/Netcode 버전

해결:

  1. 올바른 IP 확인 (https://api.ipify.org)
  2. yougetsignal에서 포트 4045 확인
  3. 팀원의 방화벽 허용
  4. Unity 버전 일치 확인

문제 3: 포트가 열렸다 닫혀

원인: 유니티 Netcode가 실제로 바인딩하지 않음

해결:

NetworkManagerQuickTest 실행
NetworkManagerResetAndRestart 사용
새로 시작

📊 도구

유용한 스크립트

스크립트 용도 사용법
NetworkManagerQuickTest 설정 확인 추가 → 우클릭 "Run Quick NetworkManager Test"
NetworkResetAndRestart 네트워크 리셋 추가 → 우클릭 "Reset Network and Restart Host"
PortListenerTest 포트 바인딩 테스트 추가 → 우클릭 "Test Port Binding Only"

사용하지 않는 스크립트

  • ContinuousPortMonitor (랙 발생)
  • 다른 진단 도구 (필요 없음)

🚀 빠른 시작 가이드

처음 설정하는 경우

1. NetworkManager 찾기
2. Player Prefab 할당 (Assets/Prefabs/Player/)
3. Unity Transport 포트 4045 설정
4. 라우터에서 포트 포워딩 설정
5. 호스트 시작
6. yougetsignal에서 포트 확인
7. 팀원에게 퍼블릭 IP 공유
8. 팀원 접속
9. 게임 시작! 🎉

이미 작동 중인 경우

1. 호스트 시작
2. yougetsignal에서 포트 4045 확인 (열려 있어야 함)
3. 팀원에게 퍼블릭 IP 공유
4. 팀원 접속
5. 게임 시작! 🎉

💡 핵심 통찰

당신의 상황:

  • PortListenerTest: 작동 (포트 열림)
  • yougetsignal: 작동 (접속 가능)
  • 유니티 Netcode: 포트 닫혀

해결책:

  1. Player Prefab 할당 (NetworkManagerQuickTest로 확인)
  2. 팀원이 지금 테스트
  3. 콘솔 로그 확인

성공 시:

✓ Player Prefab: Player
✓ Unity Netcode 시작 성공
✓ 팀원 접속 성공
✓ 플레이어 스폰됨

📝 기술 정보

사용된 포트

포트: 4045
프로토콜: TCP
바인딩: 0.0.0.0 (모든 인터페이스)

확인된 사항

✅ 포트 포워딩: 작동 (yougetsignal 증명)
✅ 방화벽: 허용 (yougetsignal 증명)
✅ OS 바인딩: 가능 (PortListenerTest 증명)
❌ 유니티 Netcode: 바인딩 실패

문제 분석

포트 4045가 열리지 않는 이유:

  • 유니티 Netcode가 포트에 바인딩하지 않음
  • Player Prefab이 할당되지 않았을 가능성 (90%)
  • 또는 네트워크 관리자 초기화 순서 문제

성공 확인사항

모든 것이 작동할 때:

  • 호스트: IsServer = True
  • 호스트: IsHost = True
  • Player Prefab: Player (할당됨)
  • Transport: 4045, 0.0.0.0
  • yougetsignal: "Port 4045 is open"
  • 콘솔: "클라이언트 [ID] 연결됨"
  • 콘솔: "플레이어 [ID] 스폰됨"
  • 팀원: 접속 성공

🎯 요약

핵심 사항:

  1. 포트 4045 열림 (yougetsignal 증명)
  2. Player Prefab 할당 필요 (가능한 문제 원인)
  3. 팀원 지금 테스트
  4. 콘솔 로그 확인

다음 단계:

  1. NetworkManagerQuickTest 실행
  2. 팀원 테스트
  3. 문제 있으면 콘솔 로그 공유
  4. 성공하면 게임 시작! 🎉

행운을 빕니다! 🚀