자료실

[Photon 팁] 포톤 Plugin
작성자 | admin 작성일 | 2018-05-31 조회수 | 100
포톤은 스토리지 기능이 없습니다.
그래서 다른 회사에서 제공하는 스토리지를 사용하여
계정관리, 유저 데이터 관리를 하는 것이 좋습니다.

그래도
멀티플레이 중 상황을 파악하고 싶거나
서버에서 게임 컨트롤을 하고 싶거나
치트, 해킹에 대한 대책이 필요합니다.

이럴때 포톤에서는
1. Webhooks, WebRPC
2. Photon Server
3. Plugin
을 가지고 대응하면 됩니다.



포톤 플러그인이란 .NET 의 DLL 로서
Photon Server의 LoadBalancing 어플리케이션 단에서, 룸 내의 이벤트에서 동작합니다.


* DLL (Dynamic Link Library) : 동적연결라이브러리
여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리입니다.


<플러그인 실행단계>
1. Intercept the hook call
2. Alter call info
3. Injection custom code
4. Process hook call
5. Injection custom code
6. Return


<플러그인에서 가능한 액션>
1. 이벤트
2. 타이머
3. HTTP 엑세스
4. 프로퍼티 설정
5. 퀵 아웃

타이머는 1회, 반복 2종류가 있습니다.
1회
CreateOneTimeTimer(Action callback, int dueTimeMs)
반복
CreateTimer()

퀵아웃 은 플러그인으로 유저를 방에서 퇴출하는 액션입니다.
IPluginHost.RemoveActor()

<플러그인 구조, 동작>
http://www.gamecodi.com/board/data/mutiupload/GAMECODI_HDD/413f3863bed3b6ced96c0f671316da00.png


Hive는
Photon 4 게임 서버의 핵심입니다.

PluginFactory 는
플러그인의 인스턴스를 생성하기 위한 클래스로서
룸 생성시 Hive에서 호출됩니다.

* 팩토리 패턴
디자인 패턴 중 하나로서
모든 팩토리 패턴에서는 객체 생성을 캡슐화합니다.
팩토리 패턴에는 팩토리 매서드 패턴과 추상 팩토리 패턴이 있습니다.

* 팩토리 매서드
객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정

* 추상 팩토리 패턴
인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스 지정하지 않고도 생성

<플러그인 구현 범위>

★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon Help Center
https://support.photonengine.jp/hc/ko