포톤은 스토리지 기능이 없습니다.
그래서 다른 회사에서 제공하는 스토리지를 사용하여
계정관리, 유저 데이터 관리를 하는 것이 좋습니다.

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

이럴때 포톤에서는
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()

<플러그인 구조, 동작>





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

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


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

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

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

<플러그인 구현 범위>






Photon 공식 홈페이지 
https://www.photonengine.com/ko-kr/Photon

★Photon Help Center
https://support.photonengine.jp/hc/ko






<PUN(Photon Unity Networking) 도입>

크게 4단계만 따라 오시면, 멀티플레이를 실행할 수 있습니다.
1. 유니티짱 오브젝트 설정
2. PUN 설정
3. 연결 코딩
4. 메인 카메라 설정


먼저, 멀티플레이 게임을 만들 준비를 합니다.

포톤(Photon)엔진 홈페이지에서 회원가입을 진행합니다.


www.photonengine.com







먼저,

유니티 어셋 스토어에서 PUN을 다운받습니다.








그 다음 
한번 더 유니티 어셋 스토어에서 유니티-짱을 다운받습니다.





우리가 제작할 리소스, 씬, 스크립트를 관리할 폴더 생성 & PUN의 Demos 폴더 삭제
 - 폴더 생성
  Demo\Resources
  Demo\Scenes
  Demo\Scripts

 - Photon Unity Networking\Demos 폴더 삭제





유니티짱 씬 수정
- 유니티짱 Locomotion 씬 오픈 
(UnityChan\Scenes\Locomotion)
- 유니티짱 오브젝트 프리팹화
 전에 만들어 둔 Resources 폴더에 생성
- Locomotion 씬 하이라키에 있는 유니티짱은 삭제






드디어 유니티짱 멀티플레이 게임 만들 준비가 완료되었습니다.
이제 첫 단계인 '유니티짱 오브젝트 설정'을 해봅시다.

 
1.1 유니티 짱 프리팹에 
컴포넌트 추가
- Photon View, Photon Transform View, Photon Animator View

1.2 
Photon View 컴포넌트 수정
Photon View의 Observed Components 에 
Photon Transform View, Photon Animator View 를 연결






1.3 Photon Transform View 컴포넌트 수정
- Synchronize Position, Synchronize Rotation 설정






 - Synchronize Parameters 설정





첫 단계 끝.

두번째 단계로는 'PUN 설정하기' 입니다.
 - 위치: Photon Unity Networking/Resources/PhotonServerSettings.asset
 - APP ID 예: 9e85f5fe-b1d4-4d4d-b4d8-f74727e51847





두번째 단계 끝.



세번째 단계는 '스크립트  수정'입니다.

3.1 게임오브젝트 생성, 스크립트 파일 생성
 - 씬 하이라키에 'PhotonController' 게임 오브젝트 생성
 - Demos\Scripts 폴더에 RandomMatchmaker.cs 생성

3.2 스크립트 작성
 - GameObject 변수 선언




RandomMatchMaker.cs






3.3 변수 연결
 - PhotonObject 변수에 유니티짱 프리팹 연결






3.4 유니티짱 스크립트 수정
 - 위치: UnityChan\Scripts\UnityChanControlscriptWithRgidBody.cs
 - 부모클래스를 Photon.MonoBehaviour로 변경
 - FixedUpdate 함수에 조건문 추가







세번째 단계 끝.





이제 다 왔습니다.
네번째 단계는 체크만 하면 됩니다.

마지막 네번째 단계인 '메인 카메라 수정' 입니다.
  - Third Person Camera 해제




모든 단계가 끝났습니다.
수고하셨습니다.
빌드&런 해보세요!!








Photon 공식 홈페이지 
https://www.photonengine.com/ko-kr/Photon

★Photon Help Center
https://support.photonengine.jp/hc/ko
















'Photon > PUN' 카테고리의 다른 글

[PUN]PUN classic VS PUN 2  (0) 2019.05.30
[PUN] 매치메이킹  (0) 2019.04.24
[PUN]로비.룸 알아보기  (0) 2018.12.19
[PUN]RPC 알아보기  (0) 2018.12.10
[PUN]VR 프로젝트 구현하기  (0) 2018.07.22

+ Recent posts