자료실

[Photon엔진강좌] Photon Server 소개 및 설치
작성자 | admin 2020-07-06  |    조회수 : 292177  

여러분, 안녕하세요!

멀티플레이를 간단하게 실현하는 네트워크 엔진 "Photon"는 두 가지 타입의 서비스가 제공되고 있습니다.


1. Photon Server: 자사 서버를 이용하거나 커스터마이징이 필요할 때 이용하는 라이센스 - 온프레미스 타입

2. Photon Cloud: SDK를 이용하여 클라이언트를 개발 후, 클라우드에 연결하면 완료! -클라우드 타입


먼저, 이번 강좌에서는 온프레미스 타입인 Photon Server에 대해 소개하겠습니다!

Photon Server 소개

(https://www.photonengine.com/ko-KR/OnPremise)

Photon Server는 Windows 서비스나 프로그램의 실행이 가능한 Socket 서버로, Reliable UDP, TCP, HTTP 및 WebSockets 네트워크 전송 프로토콜을 제공하기 때문에, Cross-platform으로 네트워크 관련 실시간 온라인 프로그램, 특히 멀티플레이어 온라인 게임을 개발할 수 있습니다.
또한, Windows 환경에 대응하고 있어, Google Cloud, Azure VMs, Amazon EC2나 자가 또는 사무실 로컬 서버에 설치할 수도 있습니다.



Photon Server 및 Cloud 기능 구성 위 그림과 같이, 우리가 앞서 살펴본 내용에서 언급된 Photon Cloud의 서비스-RealTime/Chat/Voice 등의 기능은, 실제로 Photon Server상에서 실행되기 때문에 Photon Server의 어플리케이션 중 하나라고 볼 수 있습니다. Photon Server를 사용한다면 커스터마이징을 함으로써 우수하고 강력한 소스를 자체 개발해 게임에 사용할 수 있습니다. (주석:PUN 은 Unity에서 실행하며, pun으로 RealTime과 연결 시 필요한 절차가 많이 간소화되었습니다.)


Photon Server의 특별한 점

  • Photon Server의 핵심은 C++로 설계하여 전반적인 구조가 매우 정교하고 연산이 빨라, java로 개발한 게임 서버와는 비교를 불허하는 점입니다.
  • 이 중 C# .NET언어로는 MMO / Load Balancing등, 메인 기능의 비지니스 로직(게임 로직)을 개발할 수 있습니다.
  • 게임 룸에서 플러그인 방식으로 보조 강화 기능을 사용할 수 있습니다.
  • 소프트웨어 레이어 구조도:





Photon Server의 SDK에서는 게임 로비(Game Lobby) 및 MMO형 게임 서버의 소스 코드 예시를 제공해, 편리하게 직접 사용하거나 조건에 따라 수정해 사용할 수 있습니다.
또한, 비용 측면에서는 기본적으로 100CCU의 무료 라이센스가 제공되기 때문에 동시 접속자가 100인 이내일 경우 비용이 들지 않습니다. 대략 4만명의 월간 순수 활동량(40,000 MAU)을 제공하기 때문에, 일반적인 게임 개발과 미니형 알파 CBT 진행 시 사용하기에 충분합니다!


Photon Server 설치

이어서 Photon Server를 설치한 후 실행해보면 얼마나 간단한지 알아볼까요?
(다운로드 5분 내로 바로 설치할 수 있습니다!)

설치 준비

최소 Windows 7 또는 Windows Server 2008 R2+.NET framework 4.0 이상 환경에 설치할 수 있습니다. 최신 버전 windows에 설치 권장:)
보통 개발할 때, 비교적 쉽게 사용할 수 있기 때문에 windows desktop 버전을 권장하며, 실제 온라인 연결을 할 때는 windows server 환경에서 사용해야만 안전합니다.
(C#.NET로 응용프로그램을 개발할 때는 Visual Studio 2013이후 버전 사용을 권장합니다.)

다운로드 및 압축 해제

현재 공식홈페이지의 Server 메인버전은 V4이기 때문에 Local 서버에서 실행 가능한 SDK만 필요합니다. 아래 페이지에서 확인할 수 있습니다. 참, 다운로드 전에 로그인부터 해야 합니다. 따라서 우선 회원가입부터 진행해주세요. 플러그인 내용은 이후 다시 소개할 예정이니 추후에 다운로드해주세요.
(https://www.photonengine.com/ko-KR/OnPremise/Dashboard)



다운로드 실행(자체적으로 압축 해제), 자동으로 임의 디렉토리 선택. 단, 가장 좋은 것은 비어 있는 디렉토리를 선택해야 추후 관리가 수월합니다. 압축을 해제하고 나면 몇 개의 디렉토리가 생성되는데, 여기서 가장 중요한 부분은 deploy 하단의 bin_Win32와bin_Win64 디렉토리로, Photon Server의 메인 관리 프로그램 실행 파일인 PhotonControl.exe가 들어 있습니다. 따라서 필요 조건에 따라서 32bit나 64bit 버전을 선택해 사용할 수 있습니다.

실행/시작~

PhotonControl.exe 클릭, 시스템 관리자 신분으로 실행 확인 후 시스템 바의 우측 하단 모서리에 설정되어 있으니 그것을 클릭하시면 Photon Control 옵션을 선택할 수 있습니다.



PhotonControl.exe 실행 후

PhotonControl 옵션에서, LoadBalancing (MyCloud) - Start as Application을 선택합니다.

OK! 정확하게 Photon Server를 활성화했습니다! 축하합니다!

실제로 활성화되었는지 확인하고 싶나요? 그렇다면 PhotonControl에서 Open Logs를 선택하면 프로그램이 호출되고 현재 서버 실행 상황 로그를 확인할 수 있습니다.


Log - Service is Running …

로그 에서 "Service is running…"을 확인했다면 대성공입니다!!

참, 여기서 하나! 만약 Service가 이미 실행된 상태에서 PhotonControl에서 자체적으로 벗어났다 해도 서버는 꺼지지 않습니다!

위에서는 App 방식으로 Photon Server를 실행했으나 설계에서는 두 가지 방식으로 실행이 가능합니다:
  • Run Server as an Application
    응용프로그램 방식으로 실행합니다. 장점은 언제든지 원할 때마다, Photon Server의오픈 및 닫기가 가능하고, 테스트할 때 문제가 있다고 느껴질 때마다 바로 끄고 재부팅할 수 있어, 상대적으로 깨끗한 환경에서 실행할 수 있습니다. 개발할 때에는 이런 방식이 가장 적합하며, 해당 방식으로 실행할 때, Photon Server에 debug mode가 설정되어 있어, 개발자가 훨씬 더 편리하게 오류 제거 작업을 처리할 수 있습니다.

  • Run Server as a Service
    시스템 구성 요소 서비스 방식으로 실행했을 때의 장점은 Windows시스템 재부팅 시 자동 로딩 후 실행되어, 시스템 재부팅 네트워크 연결이 안 되었거나 Photon Server 수동 작동을 잊어버린 경우 서비스가 중단된 것을 모를 수 있으니, 온라인 환경에서 사용하는 것이 적합합니다.


Test 클라이언트 연결 테스트

Photon Server의 SDK에는 테스트 클라이언트가 포함되어 있어서 시뮬레이션으로 가장해 클라이언트와 연결하고 일부 부하 동작이 발생합니다 (게임 재부팅 후 사용자가 진입하는 것과 같이). 단, 이는 매우 간단한 콘솔 응용프로그램이기 때문에 실제 게임 화면은 없습니다.
Photon Control에서 LoadBalancing (MyCloud) - Run TestClient (LoadBalancing)를 찾아 실행하면, 윈도가 팝업되며 테스트를 시작할 수 있고, 테스트 상황이 표시되어 우리 스스로 서비스 정상 운행/순조로운 활성화 등의 여부를 편하게 확인할 수 있습니다. 화면 예시:


Photon Server에서 제공하는 테스트 클라이언트 상황

결론

어떻게? 아주 쉽게 시작할 수 있겠죠! 더 높은 단계의 운용은 자가 Photon Server 플랫폼에서 글로벌 Photon Cloud와 결합해 동시에 운영 및 성장할 수 있습니다. 또한, 간결하게 Windows 서비스 플랫폼에 통합되기 때문에 PowerShell로 일부 스크립트를 작성해 시스템 운행 시 부하를 조회할 수도 있어, 좀 더 심도 있게 동적 성능을 분석할 수 있습니다.



위 그림처럼, Photon Server에서 마스터/Lobby 서버도 제공해 게임 서버의 부하를 추적 분담할 수 있고, 게임 서버는 관리자 게임 룸, 그리고 정기적으로 현재 작업의 부하 수준을 Photon Server 자체에 전달해주거나 현재 실행 중인 게임 내 턴 리스트를 마스터 서버에 보고합니다. 간결하면서도 강력하죠!

자, Photon Server의 구조와 설치 설정에 대해 알아보았습니다! 다음 단계에서는 직접 서버 세계로 들어가 우리의 게임에 필요한 응용프로그램 작성이나 플러그인 개발 시작을 준비해보겠습니다!


★더 많은 글은 Photon HelpCenter

https://support.photonengine.jp/hc/ko/categories/204651467에서 확인하세요!
★Photon 공식 홈페이지

https://www.photonengine.com/ko-kr/Photon에서 확인하세요!