여러분, 블로그 1탄 "Tanks With PUN"이나 2탄 "멀티 플레이어 패턴" 을 확인하셨다면, Photon Cloud의 개념은 물론 Photon Cloud 호스트 그룹의 글로벌성 배치와 그룹 안에서 무엇이 실행되는지도 이제는 알게 되었으리라 생각합니다.
그렇다면 이번에는 Photon Server에 대해 소개하겠습니다!
Photon Server 공식사이트 소개
Photon Server 소개
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 소프트웨어 레이어
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/en-US/onpremise/download
다운로드 실행(자체적으로 압축 해제), 자동으로 임의 디렉토리 선택. 단, 가장 좋은 것은 비어 있는 디렉토리를 선택해야 추후 관리가 수월합니다. 압축을 해제하고 나면 몇 개의 디렉토리가 생성되는데, 여기서 가장 중요한 부분은 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의 구조와 설치 설정에 대해 알아보았습니다! 다음 단계에서는 직접 서버 세계로 들어가 우리의 게임에 필요한 응용프로그램 작성이나 플러그인 개발 시작을 준비해보겠습니다!
댓글
댓글 0개
댓글을 남기려면 로그인하세요.