This document is about: PUN 2
SWITCH TO

PUN Classic (v1), PUN 2, Bolt는 휴업 모드입니다. Unity2022에 대해서는 PUN 2에서 서포트하지만, 신기능의 추가는 없습니다. 현재 이용중인 고객님의 PUN 및 Bolt 프로젝트는 중단되지 않고, 퍼포먼스나 성능이 떨어지는 일도 없습니다. 앞으로의 새로운 프로젝트에는 Photon Fusion 또는 Quantum을 사용해 주십시오.

용어집


ACK

명령이 잘 전송되었는지 확인 하는 로우 레벨 명령어. Reliable UDP(RUDP) 에서 사용됨.



Actor(액터)

룸안에 있는 플레이어를 "액터"라고 부릅니다. 액터는 유효한 룸 안에서 ActorId로 언급되는 액터번호, 플레이어번호와 플레이어ID를 가지고 있습니다.



Application(어플리케이션)

어플리케이션은 C# 언어로 구현되어 Photon 코어에서 실행되는 게임로직을 포함하고 있습니다. Application 추상 클래스를 확장하여 작성됩니다. Photon Cloud 는 가상 어플리케이션들을 이용 합니다.



Application ID (AppId)

Photon Cloud 에서 어플리케이션ID(AppId)는 타이틀과 가상 어플리케이션의 주 식별자 입니다.
AppId는 대시보드에서 쉽게 찾을 수 있습니다. 거의 모든 데모에서 AppId 가 필요하게 됩니다.



Binaries Folder (이진 폴더)

Photon Server SDK에서 바이너리 폴더에는 플랫폼별로 Photon Core 의 빌드들이 포함되어 있습니다. 이 폴더의 프리픽스는 "bin_" 이며 "deploy" 폴더에 있습니다.



Build script(빌드 스크립트)

디플로이를 위하여 어플리케이션을 컴파일하고 복사하는 배치 파일 또는 MSBuild 프로젝트 입니다. 디플로이를 위해 클린 빌드를 하시기 바랍니다.



Business Logic(비즈니스 로직)

Photon Core 상에서 수행되는 게임 로직입니다. 이 "레이어"는 오퍼레이션과 이벤트를 다루게 됩니다.



Channel(채널)

RUDP 프로토콜의 로우 레벨 채널 또는 Photon Chat 내의 "대화" 채널 두 가지를 의미 합니다.



Chat

Photon Chat은 사용자간의 대화를 위한 경량의 서비스 입니다. 사용자들은 채널에 참가하여 비밀 메시지를 전송할 수 있고 친구들 중 현재 이용가능 여부를 볼 수 있습니다. Chat 은 분리된 연결을 사용하며 룸과 독립적입니다.



Command(명령어)

Commands는 eNet 프로토콜 레이어 상에서 데이터의 전송 또는 접속의 설립/해제에 사용 됩니다. 이 명령어를 사용하지는 않지만 배경지식을 위해서 설명 해 드릴 것 입니다.



Concurrent User (CCU) - 동시접속 사용자

게임에서 동시접속 사용자는 한 번에 하나의 서버에 접속하는 모든 클라이언트 입니다. CCU 건수는 Photon 클라우드 서브스크립션 가격의 기준입니다. CCU 와 일일 엑티브 사용자(DAU) 또는 월 엑티브 사용자(MAU)와 혼용하여 사용하지 마시기 바랍니다. 게임을 하는 사용자는 하루에 매우 적은 시간을 하며 한달로는 더 적습니다( 귀하가 하루 종일 게임 하지 않는 다는 것을 생각 해 보세요.)브___


Connect (접속)

클라이언트가 Photon 의 오퍼레이션을 호출 하기전에 연결 하여 접속이 성립되어 있어야 합니다.



Custom Operation(커스텀 오퍼레이션)

클라이언트 API 에 없거나 서버측에 새로운 모든 오퍼레이션 (Lite 어플리케이션에 없는 것).



Custom Properties (커스텀 프로퍼티)

Photon 내에서 룸과 플레이어에 커스텀 속성을 설정할 수 있습니다. 두 가지 경우에서 커스텀 속성은 해시테이블로 제공되고 키는 반드시 문자열 타입 이어야 하지만 값은 직렬화 할 수 있는 모든 것을 사용할 수 있습니다. 커스텀 프로퍼티는 플레이어가 게임을 포기했을 때 삭제 됩니다. 턴기반 "동기" 게임은 커스텀 프로퍼티를 계속 유지할 것입니다.



Dashboard (대시보드)

대시보드는 모니터링의 목적으로 카운터 데이터를 모으고 그래프를 생성합니다. Photon 어플리케이션은 관련된 대시보드에서 관리 될 수 있습니다.
실시간 앱 대시보드



Deploy Folder (디플로이 폴더)

서버 SDK 에서 이 폴더는 Photon 실행을 위한 모든 것이 있습니다. 즉: binaries-folder 와 컴파일된 어플리케이션 입니다.



Device (단말기)

일반적으로 모바일 입니다.
또는 클라이언트 어플리케이션이 수행되는 시스템을 말합니다.



Disconnect (접속해제)

클라이언트와 서버간의 연결을 종료 합니다. 플레이어가 클라이언트 앱을 종료하고 싶을 때 또는 타임아웃이 있을 때 발생합니다. 그리고 서버 로직이 플레이어를 접속해지 했을 때 발생 할 수 있습니다.



Event (이벤트)

이벤트는 클라이언트에게 전송하는 동기적 메시지 입니다. 이벤트는 오퍼레이션에 의해서사이드 이펙트로 트리거 되거나 발생(오퍼레이션의 주 목적으로)되며 이벤트 코드에 의해서 구분되어 집니다. 이벤트의 발생 주체는 ActorNumber 로 구분됩니다.



EvCode

이벤트 코드의 줄임말 입니다.
이벤트의 유형과 이벤트와 같이 오는 정보의 식별을 위해서 사용 합니다.



Game (게임)

문맥에 따라 "게임"은 타이틀/어플리케이션 또는 플레이어 몇명간의 라운드 매치로 언급 됩니다. 첫 번째 의미로 “타이틀”을 사용할 것이며 "룸"에 대해서는 두 번째를 의미 합니다.



GameVersion (게임버전)

게임버전은 모든 게임에서 설정 할 수 있는 문자열 입니다. Photon Cloud 에서는 사용자들을 호환되는 버전인 가상 어플리케이션으로 그룹 지을 수 있습니다.



Latency (레이턴시)

요청 후 ACK 수신까지의 시간을 의미 합니다. 클라이언트와 서버에 따라 달라질 수 있습니다. 왕복시간(RoundTrip Time,RTT)으로 측정됩니다.



Lite

Photon Server SDK 에서 Lite 어플리케이션을 말 합니다. 시작하기 위한 기본 비즈니스 로직 입니다.



Lobby (로비)

로비는 룸의 "목록"을 담고 있는 가상 컨테이너 입니다. 여러 개의 로비를 사용할 수 있으며 또한 로비에는 여러 가지 유형이 있습니다. 예를 들어 클라이언트에게 룸 목록을 전송하지 않는 로비도 있습니다.

기본적으로 로비에서는 플레이어 간에 소통 할 수 없습니다. 사실 플레이어는 로비에 어떤 클라이언트가 있는지 알 수가 없습니다. 클라이언트는 로비 또는 룸에서만 있을 수 있습니다.



Log Files (로그 파일)

Photon Server는 서비스로써 동작하게 설계되어 있으며 광범위한 GUI 가 없습니다.
대신에 다음 두 세트의 로그 파일을 이용 합니다 : 어플리케이션은 deploy/log에 로그를 기록하며 Photon Core 는 deploy/bin_*/log 에 로그를 기록 합니다.



Matchmaking (매치메이킹)

게임 또는 경기를 찾는 과정입니다.
Lite 어플리케이션은 룸 이름으로 참가하는 것을 제외 하면 매치메이킹이 없습니다.
Lite 로비는 룸의 목록을 추가합니다.



Messages (메시지)

일반적으로 메시지는 누구 또는 서버의 무엇을 업데이트 하는 모든 것입니다.

  • **Photon 에서의 용어:**모든 오퍼레이션, 응답과 이벤트들이 메시지 입니다.
  • PUN 에서의 용어: 모든 RPC, 동기화 갱신, 인스턴스생성 호출, 커스텀 속성 변경(플레이어 이름 포함)들이 메시지 입니다.

이벤트(또는 RPC) 를 모든 클라이언트에게 전송하는 것에 있어서 룸 내에 있는 플레이어 하나당 하나의 메시지로 카운트 됩니다.(하나의 전송에 수신은 여러 개 입니다.)

PUN은 좀 특별한데 OnPhotonSerializeView 가 갱신사항을 통합하려고 합니다. 가능하면 몇 개 객체의 갱신사항을 하나의 메시지로 통합하려고 합니다. 또한 관찰 모드가 다음에 영향을 주게 됩니다 : "변경에 대한 비신뢰" 는 갱신된 사항 간에 이동되지 않는 다면 전송하는 것을 멈춥니다. 최악의 경우에 하나의 객체가 플레이어 마다 초당 10개의 메시지가 나올 수 있습니다. 하지만 일반적인 사항은 아닙니다.



Messages Limit (메시지 한도)

우리는 룸당 메시지와 초당 메시지를 두 가지 이유로 제한하고 있습니다:

  • 너무 많은 갱신사항을 보내면 깨지게 됩니다. 고정된 최대값은 없습니다. 이 사항은 대역폭, 디바이스 등에 따라 다르게 됩니다.
  • 공유 서버에 대한 고정된 부분을 가질 수 있도록 해 주시기 바랍니다.

룸당 메시지와 초당 메시지는 대시보드에 나와 있습니다.



Operation (오퍼레이션)

Photon 서버 측의 RPC 함수의 다른 명칭 입니다.
클라이언트는 서버 측에 무엇인가를 수행하거나 다른 쪽에 메시지 전송을 위해서 오퍼레이션을 사용합니다.



OpCode

오퍼레이션 코드의 줄임말 입니다.
서버 측에서 오퍼레이션을 트리거 하기 위하여 바이트 값이 사용됩니다.
클라이언트는 오퍼레이션 응답을 opcode 로 받아 리턴된 값의 액션 유형을 식별 합니다.



Peer (피어)

짧게 표현하면 Photon 에 접속하고 있는 모든 클라이언트(플랫폼에 관계없이) 입니다.
정확히 말하자면 클라이언트 측에서 보면 Photon Server 도 Peer 이긴 하지만 모든 경우에 하나만 존재 합니다.



Photon Core (Photon 코어)

Photon 의 C++ Core 입니다. 연결과 eNet 프로토콜을 관리 합니다.



Photon Control (Photon 컨트롤)

Photon Server SDK 의 Photon 관리자 툴 입니다.
PhotonControl.exe 를 실행하면 트레이 메뉴에 표시되며 Photon의 서비스를 쉽게 관리할 수 있습니다.



Photon Server SDK

Photon Server SDK 는 모든 윈도우 머신에서 자신의 Photon Server 인스턴스를 구축하고 실행할 수 있도록 해주는 툴이 포함되어 있습니다. 더 알아 보세요.



PhotonServer.config

Photon Core 의 설정 파일 입니다. IP, 어플리케이션과 성능 에 대해서 설정합니다.
이전에는 PhotonSocketServer.xml 이었고 한 때 PhotonSocketSever.config 이었습니다.



Photon Unity Networking (PUN) - Photon 유니티 네트워킹

Photon Unity Networking 은 유니티 C# 클라이언트 패키지 입니다. PUN 은 Photon의 저레벨 기능을 사용하며 더 고급형태로 유니티 내장 네트워킹을 재 구현 할 수 있습니다. 많은 부분의 낮은 레벨의 Photon 기능은 PUN 이 다루고 있습니다. ReturnCodeCommands 에 대해서는 거의 신경을 쓰지 않아도 됩니다.

https://u3d.as/2ey 에서 PUN 을 받으세요.



Policy File (정책 파일)

Policy 어플리케이션은 Photon 에서 수행되며 crossdomain.xml 을 전송합니다.
유니티 웹플레이어, 플래시와 실버라이트와 같은 웹플레이어 플랫폼에서 서버에 접속전에 인증을 요청합니다.



Reliable (릴라이어블)

릴라이어블 커맨드는 상대측에 전달되거나 타임아웃 연결해제가 발생될 것 입니다. 릴라이어블 커맨드는 채널별로 순차적이며 일시적으로 누락된 경우 릴라이어블 커맨드는 해석이 지연될 것입니다.



ReturnCode

모든 형태의 오퍼레이션에 대한 바이트 값 형태의 결과 입니다. 오퍼레이션이 정상적으로 완료되었는지 체크 할 수 있습니다 (RC_OK == 0) 또는 오류가 발생 했는지



Room (룸)

경기 또는 소통을 하기 위하여 플레이어들이 룸에서 만나게 됩니다. 룸을 벗어난 곳에서는 대화가 불가능 합니다.

Photon Room Core Concept
Photon Room Core Concept

클라이언트는 오직 하나의 방에만 참가할 수 있습니다.
Photon 룸 코어 개념
Photon 룸은 아래와 같은 프로퍼티와 메소드가 있습니다:

  • 룸을 생성하고 이름으로 룸에 참여
  • 룸과 플레이어에 대해 커스텀 프로퍼티를 설정
  • 로비에서 표시/비표시 설정
  • 오픈 또는 클로즈(아무도 들어갈 수 없음)


RPC

Remote Procedure Call(원격 프로시져 호출)의 약어. 오퍼레이션에 대한 용어가 될 수 있지만 대부분의 경우에있어서 PUN 게임에서 원격 클라이언트가 메소드를 호출하는 것을 의미 합니다.



RUDP

신뢰 할 수 있는 UDP. UDP 프로토콜 상위로써 커맨드를 필요에 따라 신뢰할 수 있도록 전송하는 것입니다. 전송자는 수신확인 받기 전까지 반복적으로 메시지를 전송합니다.



Socket Server (소켓서버)

Photon Core 의 다른 이름.



Timeout (타임아웃)

eNet을 이용하여 클라이언트와 서버는 한편이 Reliable 명령을 수신하고 있는지를 모니터링합니다. 이러한 ACK가 장시간 끊어지면 연결이 손실 된 것으로 판단합니다.



Turnbased (턴기반)

Turnbased는 Photon Cloud 플랜의 하나로, 비동기적인 게임 플레이를 위해 설계한 기능을 집약 해 놓은 것입니다. 플레이어가 방에서 비활성화 된 이후 나중에 게임을 계속할 수 있습니다. 룸 상태 (이름, 속성 캐시 된 이벤트 등)가 자동으로 보관됩니다.



Unreliable (신뢰할수없는)

Unreliable 명령은 다른측에 의해 ACK되지 않습니다. Unreliable 명령은 채널 별로 순차적이지만 해석시에는 순서가 바뀔 수 도 있습니다.



Virtual Application (가상 어플리케이션)

Photon Cloud 는 모든 타이틀에 대해서 단일 게임 로직(어플리케이션)을 실행합니다. 내부적으로 게임은 AppId게임버전으로 분리 됩니다.


Back to top