Photon Server

- 멀티플레이어 게임 개발을 위한 서버 및 네트워킹 솔루션을 제공하는 플랫폼이다.
- 서비스
- Fusion
- Quantum
- Photon Realtime
- Photon Chat
- Photon Voice
- Photon Server
- PUN
- Bolt
Fusion

- 상태 동기화 네트워킹 라이브러리이다.
- 일반적인 유니티 MonoBehaviour 코드와 유사하다.
- Fusion 1
- Bolt의 틱 기반 넷코드와 PUN의 클라우드 기반 편의성을 결합한 라이브러리이다.
- Fusion 2
- 기존 API에 새로운 기능이 추가되었다.
- 데이터 전송, 시간 동기화, 메모리 관리 및 전반적인 CPU 성능이 향상되었다.
핵심 API

[Networked] public byte life { get; set; }
public override void FixedUpdateNetwork
{
if (GetInput(out NetworkInputData data))
{
data.direction.Normalize();
_characterController.Move(5 * data.direction * Runner.DeltaTime);
}
}
[Rpc(RpcSources.InputAuthority, RpcTargets.StateAuthority)]
public void RPC_Configure(string name, Color color)
{
playerName = name;
playerColor = color;
}
토폴로지

Server Mode
- Dedicated server가 Public IP를 가진다.
- 서버 모드에서 서버는 모든 객체에 대해 전체 및 독점적인 상태 권한을 갖는다.
Host Mode
- 호스트 모드에서 호스트는 서버와 클라이언트의 역할을 모두 수행한다.
- 네트워크 세션이 호스트 소유이므로 호스트 연결이 끊어지면 손실된다.
- 현재 호스트 연결이 끊어지면 새 클라이언트로 네트워크 권한을 전송할 수 있는 호스트 마이그레이션 메커니즘을 제공한다.
Shared Mode
- 네트워크 객체에 대한 권한은 모든 클라이언트에게 분산된다.
- 각 클라이언트는 처음에 자신이 생성하는 객체에 대한 상태 권한을 갖지만 다른 클라이언트에게 해당 상태 권한도 자유롭게 양도할 수 있다.
- 네트워크 세션은 Photon Cloud가 소유하며 어떤 클라이언트라도 Photon Cloud에 연결되어 있는 한 계속 유지된다.