Unity & Photon 네트워킹 정리 문서
1. 네트워크 기본
- TCP (Transmission Control Protocol)
- 연결 지향, 신뢰성·순서 보장.
- 채팅, 인벤토리, 상점과 같은 정확성이 중요한 데이터 전송에 적합.
- UDP (User Datagram Protocol)
- 비연결, 빠르지만 손실 가능.
- 캐릭터 이동, 실시간 액션 이벤트에 적합.
→ 실무에서는 TCP + UDP 혼용 구조가 일반적이다.
2. PhotonView
Photon에서 모든 네트워크 오브젝트는 PhotonView를 통해 관리된다.
- ViewID : 네트워크 고유 식별자.
- IsMine : 로컬 클라이언트가 소유자인 경우 true.
- Owner : 오브젝트를 소유한 Photon.Realtime.Player 객체.
- TransferOwnership() : 런타임에 소유권을 다른 플레이어로 이전 가능.
if (photonView.IsMine)
{
// 내 오브젝트일 때만 조작 처리
}
3. Photon Transform View
Transform 정보를 자동으로 동기화하는 전용 컴포넌트.
- 옵션:
- Synchronize Position / Rotation / Scale
- Interpolate (Lerp / Teleport)
- 장점: 코드 작성 없이 이동/회전 동기화 가능.
- 단점: 모든 프레임 동기화 시 네트워크 트래픽이 커질 수 있음.
4. PunRPC & photonView.RPC
Photon의 Remote Procedure Call 시스템.
- [PunRPC] : 원격 호출 가능한 메서드 지정.
- photonView.RPC("함수명", RpcTarget, 매개변수...) : 지정 범위에 RPC 호출.
RpcTarget 종류
- All : 모든 클라이언트(자신 포함).
- AllBuffered : 모든 클라이언트 + 이후 입장하는 클라이언트.
- Others : 자신 제외 모든 클라이언트.
- MasterClient : 마스터 클라이언트만.
[PunRPC]
void Fire(Vector3 pos) { /* 발사 처리 */ }
photonView.RPC("Fire", RpcTarget.All, transform.position);
5. MonoBehaviourPun / MonoBehaviourPunCallbacks
- MonoBehaviourPun
- MonoBehaviour 확장.
- photonView 프로퍼티 제공 → PhotonView 접근이 간편.
- 개별 오브젝트 제어 스크립트에 적합.
- MonoBehaviourPunCallbacks
- MonoBehaviourPun 확장.
- Photon의 네트워크 콜백 메서드를 override 가능.
- 예시: OnConnectedToMaster(), OnJoinedRoom(), OnPlayerEnteredRoom(Player)
- 네트워크 매니저/룸 매니저 스크립트에 적합.
6. Unity 프로젝트 창 아이콘
Unity 프로젝트 창에서 에셋 종류와 상태를 나타내는 아이콘.
- 에셋 타입
- 📄 스크립트 (C#)
- 🧩 프리팹 (파랑: 원본, 회색: 인스턴스, 깨짐: 연결 끊김)
- 🎞 애니메이션, 🎬 애니메이터, 🔊 오디오, ⛶ 머티리얼, 🌍 씬
- 오버레이 아이콘
- 🔗 Prefab 연결 상태
- ⚠ 스크립트 경고
- ❌ 스크립트 에러
7. Multiplayer Movement 패턴
멀티플레이어 이동을 구현할 때 고려해야 할 대표적인 구조.
- 서버 권위(Server Authoritative)
- 서버가 입력을 받아 이동 계산.
- 장점: 공정성, 치트 방지 / 단점: 반응성 저하.
- 클라이언트 예측(Client-side Prediction) + 서버 보정(Reconciliation)
- 클라이언트가 먼저 이동 예측 후 서버 확정 값으로 보정.
- 장점: 반응성 확보 / 단점: 구현 복잡.
- 보간(Interpolation)
- 서버 좌표만 받아와 보간 처리.
- 장점: 구현 단순 / 단점: 입력 반응 느림.
→ Unity 프레임워크별 기본 제공 방식
- NGO : NetworkTransform
- Mirror : NetworkTransform 또는 Command/Rpc
- Photon PUN : PhotonTransformView, RPC
- Photon Fusion : Input Authority / State Authority 구조
'Unity' 카테고리의 다른 글
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 54일차 (4) | 2025.08.04 |
---|---|
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 52일차 (1) | 2025.08.01 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 51일차 (0) | 2025.07.30 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 21일차 (0) | 2025.06.13 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 11일차 (2) | 2025.05.28 |