Unity Network : Photon Pun 2 - Lobby / Room

2026. 1. 7. 16:31·Unity

Photon PUN2 : Lobby / Room

 

Photon 네트워크의 전체 흐름 요약

Photon PUN2에서 클라이언트는 다음과 같은 흐름으로 네트워크에 참여한다.

Photon Server Connect → Lobby → Room → InGame
  • Lobby: 방 목록을 조회하고, 방을 고르는 대기 공간

Room: 실제로 플레이어들이 모여 동기화된 게임을 진행하는 공간


Lobby

Lobby는 말 그대로 방 목록을 관리하는 대기 공간이다.

  • 현재 열려 있는 Room 목록을 서버로부터 전달받는다
  • 플레이어는 여기서
    • 새로운 Room을 생성하거나
    • 기존 Room에 참가한다

Lobby에 들어갔다고 해서 다른 플레이어와 동기화가 되는 것은 아니다.
Lobby는 매칭을 위한 공간일 뿐이다.

동기화 X 없음
게임 로직 X 실행 불가
Room 목록 O 조회 가능
Player 간 상호작용 X 없음

 

Lobby 관련 주요 메서드

PhotonNetwork.ConeectUsingSettings();
PhotonNetwork.JoinLobby();
PhotonNetwork.LeaveLobby();

Lobby 콜백

public override void OnConnectedToMaster()
{
    PhotonNetwork.JoinLobby();
}

public override void OnJoinedLobby()
{
    Debug.Log("Lobby 입장 완료");
}

public override void OnRoomListUpdate(List<RoomInfo> roomList)
{
    // 현재 존재하는 방 목록
    // 방이 생성/삭제될 때마다 호출
    // 로비 UI에서 방 목록 갱신에 사용
}
 

 


Room

Room은 실제 게임이 진행되는 공간이다.

  • Player들이 모여 있음
  • Transform, RPC, 이벤트 등이 동기화됨
  • 게임 로직이 실행됨

멀티플레이의 실체는 Room 안에서만 존재한다.

 

동기화 O 가능
RPC O 가능
Player 정보 O 관리
게임 진행 O

 

Room 생성 및 참가

PhotonNetwork.CreateRoom(roomName, new RoomOptions { MaxPlayers = 10 });
PhotonNetwork.JoinRoom(roomName);
PhotonNetwork.JoinRandomRoom();

etc...
 

RoomOptions 주요 항목

옵션설명
MaxPlayers 최대 인원
IsOpen 신규 참가 허용 여부
IsVisible 로비에 노출 여부
CustomRoomProperties 방 커스텀 데이터
PlayerTtl 플레이어 재접속 허용 시간

Room 콜백 흐름

public override void OnCreatedRoom() {}
public override void OnJoinedRoom() {}
public override void OnPlayerEnteredRoom(Player newPlayer) {}
public override void OnPlayerLeftRoom(Player otherPlayer) {}
public override void OnLeftRoom() {}
  • CreateRoom 호출
  • OnCreatedRoom
  • OnJoinedRoom (방장도 호출됨)
  • 다른 플레이어 입장
  • OnPlayerEnteredRoom

 

Master Client

Room에는 항상 Master Client가 존재한다.

  • 방을 처음 만든 플레이어
  • 서버 권한 역할
  • 방장이 나가면 자동 승계됨
PhotonNetwork.IsMasterClient
  • 마스터 클라이언트 담당시키기 좋은 역할
    • 게임 시작 트리거
    • AI 스폰
    • 라운드 관리
    • 타이머 동기화

 

그 외

씬 이동 동기화

PhotonNetwork.AutomaticallySyncScene = true;

// 씬 로드 또한 씬매니져가 아닌 마스터 클라이언트에서 LoadLevel() 호출로 이동

 

RoomList는 실시간 전체 목록이 아니다

  • Photon은 변경된 방 정보만 전달
  • UI에서 이전 리스트를 직접 관리해야 함

'Unity' 카테고리의 다른 글

Unity : Firebase 등록 및 Auth로 (이메일/소셜) 로그인 구현  (0) 2026.01.11
Unity Network : Photon Pun2 - PhotonView, IPunObservable, RPC  (0) 2026.01.07
Unity UI: 코드로 레이아웃 제어 vs 프리팹 기반 구성  (0) 2026.01.05
네트워크 : OSI, TCP/IP, Client-Server, P2P  (1) 2026.01.05
길찾기 알고리즘 : 다익스트라(Dijkstra) 와 에이스타(A*)  (0) 2025.11.20
'Unity' 카테고리의 다른 글
  • Unity : Firebase 등록 및 Auth로 (이메일/소셜) 로그인 구현
  • Unity Network : Photon Pun2 - PhotonView, IPunObservable, RPC
  • Unity UI: 코드로 레이아웃 제어 vs 프리팹 기반 구성
  • 네트워크 : OSI, TCP/IP, Client-Server, P2P
ellug
ellug
Web / App / Game Dev
  • ellug
    dev.ellug
    ellug
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • Javascript (React, Next) (1)
      • C# (66)
      • Graphics (1)
      • Unity (25)
      • 프로그래머스 (0)
        • Lv.0 (0)
        • Lv.1 (0)
        • Lv.2 (0)
        • Lv.3 (0)
      • AI Agent (0)
      • StableDiffusion (0)
      • ETC (1)
      • 잡담 (0)
      • 유머 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    큐
    unity
    추상 클래스
    C#
    최적화
    Network
    Abstract
    클래스
    Queue
    class
    터미널
    struct
    console
    Photon
    inputsystem
    콘솔
    알고리즘
    유니티
    useState
    function
    Design Pattern
    게임
    interface
    list
    stack
    네트워크
    delegate
    자료구조
    firebase
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ellug
Unity Network : Photon Pun 2 - Lobby / Room
상단으로

티스토리툴바