Photon PUN 대안: 턴제·캐주얼 게임
PUN 2는 유지보수 모드입니다. Fusion이나 게임 서버가 필요한 게임, 방과 매치메이킹이 있는 호스팅 WebSocket 서비스로 충분한 게임, 그리고 각각의 비용.
Photon 문서에는 PUN 2가 유지보수(LTS) 모드여서 수정은 있지만 새 기능은 없으며, 새 프로젝트는 Fusion이나 Quantum을 고려하라고 적혀 있습니다. 이 둘은 실시간 액션 게임에 맞습니다. 하지만 PUN으로 만든 게임 상당수는 그렇지 않습니다. 플레이어가 차례로 움직이는 카드, 보드, 퀴즈, 파티 게임이고, 초당 몇 번의 업데이트면 충분합니다. 이런 게임은 방과 매치메이킹을 갖춘 호스팅 WebSocket 서비스로 PUN을 대체할 수 있으며, 비용도 줄고 WebGL도 기본으로 지원됩니다.
게임에 게임 서버가 필요한가요?
| 턴제·캐주얼: WebSocket 서비스로 충분 | 실시간 액션: 게임 서버 유지 |
|---|---|
| 카드, 보드, 퍼즐, 단어 게임 | 슈터, 격투, 레이싱 게임 |
| 퀴즈, 트리비아, 파티, 그림 게임 | 플레이어 간에 계속 동기화해야 하는 물리 연산 |
| 턴제 전략, 오토배틀러 | tick 기반 시뮬레이션, lockstep이나 rollback 넷코드 |
| 별도 게임 서버 앞단의 로비, 매치메이킹, 채팅 | 한 플레이어가 초당 10회를 넘게 보내는 업데이트 |
| WebGL 게임, 브라우저와 Unity 플레이어가 함께하는 방 | 100명이 넘는 방 |
WebSocket 서비스는 TCP 위에서 동작하고 tick이 없으며, 게임 로직을 실행하지 않고 플레이어 사이에서 이벤트를 중계합니다. 게임이 오른쪽 열에 해당한다면 Photon Fusion, Quantum 또는 전용 서버가 더 적합합니다.
PUN 2 게임을 옮길 곳
| 선택지 | 운영 주체 | 적합한 경우 |
|---|---|---|
| Photon Fusion 또는 Quantum | Photon | 실시간 액션, tick 동기화와 예측. 네트워크 코드를 다시 작성해야 함 |
| 직접 호스팅하는 오픈소스 게임 서버(예: Nakama, Colyseus) | 직접 | 서버 권한 로직. 서버를 직접 운영하고 확장할 수 있는 경우 |
| Hibira와 Unity 패키지 | Hibira | 턴제·캐주얼 방, 매치메이킹 큐, WebGL, 브라우저·Godot 플레이어와의 크로스플레이 |
같은 플레이어 수의 비용
| 동시 접속 플레이어 | Photon Public Cloud | Hibira |
|---|---|---|
| 20~100 | 20 CCU는 개발용으로만 무료, 100 CCU는 1회 95달러에 12개월 유효 | 무료 요금제: 연결 100개, 운영 환경에서도 사용 가능 |
| 500 | 월 95달러 | Hobby, 월 19달러 |
| 1,000 | 월 185달러 | Starter, 월 39달러 |
| 2,000~3,000 | 2,000 CCU 월 370달러 | Pro, 연결 3,000개 월 89달러 |
Photon 수치는 PUN 요금 페이지와 PUN 2 소개에서 2026-10-31에 확인했습니다. Photon은 CCU당 월 3 GB 트래픽을 포함합니다. Hibira는 보낸 메시지를 하루 단위로 세며, 클라이언트 이벤트는 몇 명이 받든 메시지 1건입니다. 무료 요금제에서는 플레이어에게 전달된 건이 월 2 GB 데이터에 포함되고, Hobby 이상에서는 브로드캐스트 전달 횟수를 집계하지 않습니다. 모든 요금제에서 일일 메시지 수, 동시 연결 수, 월간 직접 전송 데이터에는 한도가 있습니다. 요금 페이지를 참고하세요.
이전 과정
| PUN 2 | Hibira Unity 패키지 |
|---|---|
JoinRandomOrCreateRoom | 인원, 레이팅 범위, 조건을 지정한 HibiraQueue.Join |
CreateRoom, JoinOrCreateRoom | presence-room- 채널에 정원을 지정해 HibiraRoom.Join |
OnPlayerEnteredRoom, OnPlayerLeftRoom | room.MembersChanged |
MasterClient | room.Host: 가장 먼저 들어온 플레이어, 나가면 다음 사람에게 넘어감 |
photonView.RPC, RaiseEvent | room.Channel.Trigger("client-…")와 Bind |
PhotonNetwork.Instantiate, PhotonView | 대응 기능 없음: 생성과 상태 이벤트를 직접 보냄 |
백엔드가 앱 secret으로 각 방과 큐에 서명하므로 플레이어 이름과 레이팅은 클라이언트가 아니라 서버에서 옵니다. 전체 대응표와 단계별 코드는 PUN 2 이전 가이드에 있습니다. Unity 가이드부터 시작하고, 브라우저 플레이어도 들어올 수 있는 방은 게임 로비를 참고하세요.
자주 묻는 질문
PUN 2는 서비스가 종료되나요?
Photon 문서에 따르면 PUN 2는 유지보수(LTS) 모드로, 수정은 있지만 새 기능은 없고 새 프로젝트는 Fusion이나 Quantum을 고려하라고 합니다. 기존 PUN 2 게임은 계속 동작합니다.
턴제 게임이라면 WebSocket 서비스로 Photon을 대체할 수 있나요?
네. 카드, 보드, 퀴즈, 파티 같은 턴제나 캐주얼 게임이라면 가능합니다. 방, 매치메이킹, 프레즌스, 방 안의 이벤트로 이런 게임에서 PUN이 하던 일을 다룰 수 있습니다. tick 동기화가 필요한 실시간 액션 게임에는 여전히 Fusion, Quantum 또는 게임 서버가 필요합니다.
Unity WebGL 빌드에서도 동작하나요?
네. Hibira Unity 패키지는 에디터, 데스크톱과 모바일, WebGL 빌드 모두에서 WebSocket으로 연결하며, 같은 방에 브라우저나 Godot에서도 참여할 수 있습니다.
제품명은 각 소유자의 상표입니다.