Unity

멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 62일차

나른한여우 2025. 8. 18. 16:59

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 구조