★Photon Help Center
https://support.photonengine.jp/hc/ko
★Photon 코리아 페이스북
https://www.facebook.com/photoncloudkr
★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon 코리아 유투브
https://bitly.kr/photonyoutube
★Photon Help Center
https://support.photonengine.jp/hc/ko
★Photon 코리아 페이스북
https://www.facebook.com/photoncloudkr
★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon 코리아 유투브
https://bitly.kr/photonyoutube
안녕하세요!!
이번에는 PUN만 사용해서는 데이터를 저장할 수 없는데요.
이를 해결하기 위해서 DB를 연동해보겠습니다.
DB 서비스를 제공하는 업체 중에서 playfab을 이용해보겠습니다.
본격적으로 개발하기에 앞서서 3가지를 준비할 것입니다.
유니티 프로젝트 생성, 포톤 어플리케이션 생성, 플래이팹 타이틀 생성
유니티 프로젝트 생성
* 유니티 설치 혹은 회원가입은 유니티 홈페이지에서
https://unity3d.com/kr
포톤 어플리케이션 생성
포톤 서비스 중 Realtime 으로 선택해주세요~
* 포톤 회원가입은 홈페이지에서
https://www.photonengine.com/ko-KR/Photon
Playfab 타이틀 생성
* 플레이팹 회원가입은 홈페이지에서
https://playfab.com/
조금 전 말씀해드린대로
Photon의 'Realtime' 서비스를 이용한 어플리케이션을 생성한 화면입니다.
* {PlayFabTitleId} 은 생성한 타이틀 ID 입니다.
이제 Playfab에서 시크릿키를 받을 겁니다.
(Photon 어플리케이션에서 Webhooks 세팅할 적에 시크릿키가 필요합니다)
다시 PlayFab 으로 오셔서
Add-ons 에서 Photon을 추가합니다.
Photon 홈페이지에서 미리 생성한 어플리케이션 기억나시죠?
어플리케이션 ID를 넣으면 시크릿키가 생성됩니다.
- BaseUrl 의 값
https://{PlayFabTitleId}.playfablogic.com/webhook/1/prod/{PhotonSecretKey}
-
* {PhotonSecretKey} 은 생성한 시크릿키 입니다.
유니티 프로젝트에 PlayfabSDK 를 임포트(추가)
https://api.playfab.com/sdks/unity
'Download Playfab SDK' 클릭
AssetStore에서
PUN을 다운로드(임포트) 합니다.
(Realtime SDK가 아닙니다.)
DemoHub-Scene-V2 씬을 엽니다.
(PUN \ Demos \ DemoHub)
우리가 새로 생성할 cs 파일을 포함할 게임오브젝트를 하나 추가합니다.
* 소스는 파일로 첨부했습니다.
이제 빌드&런을 해보세요
* 2번까지는 실행되었으나,
PlayFab TitleId 세팅 에러가 난 경우
만약 4번까지 잘 실행된다면,
'Demo Boxes' 를 클릭 후
'Load Demo' 를 클릭해보세요.
* Demos \ DemoHub \ DemoHub-Scene-V2을
Build Settings에서 Add Open Scene 해놓으셔야 합니다.
위와 같이 PlayFab이 연동됩니다.
감사합니다.
★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon Help Center
https://support.photonengine.jp/hc/ko
안녕하세요!
이번 포스팅에서는 포톤 챗을 다뤄보겠습니다.
* 포톤 chat 홈페이지
https://www.photonengine.com/ko-KR/Chat
Photon Chat 은 확장성 높은 채팅 시스템의 구축에 많은 도움이 되는 솔루션입니다.
Photon Chat 자체로도 이용이 가능하며, 다른 Photon 서비스와 함께 이용하실 수도 있습니다.
그리고 정말 간단하게 프로젝트에 적용할 수 있습니다.
크게 2단계만 거치면 포톤 chat이 동작하는 것을 보실 수 있습니다.
1. UI
2. 스크립트: 인터페이스 구현 (IChatClientListener)
본격적으로 들어가기에 앞서
유니티 에셋 스토어에서 포톤 chat 을 다운받아주세요!
유니티 어셋 링크 ->
https://assetstore.unity.com/packages/tools/network/photon-chat-45334
그리고
Photon 엔진 홈페이지에서 App ID를 생성해주세요.
Photon 엔진 홈페이지 ->
https://www.photonengine.com/ko-KR/Photon
그리고나서
생성한 APP ID를 프로젝트에 적용시키면 됩니다.
위치 : Resources\ChatSettingFile
이제 준비는 다 되었습니다.
본격적으로 같이 만들어보죠.
첫단계는 'UI 화면구성'입니다.
요약을 하자면,
터치를 받을 수 있는 이벤트 시스템을 만들기
텍스트 입력하는 텍스트 필드
텍스트를 보여주는 스크롤 뷰 를 구성하는 겁니다.
1.1 EventSystem
: 게임오브젝트에
EventS ystem, Standalone Input Module, Touch Input Module 컴포넌트 추가
1.2 대화를 입력할 텍스트 필드
1.3 대화를 보여줄 스크롤 뷰
: Content 에 Content Size Filter 의 Vertical Fit 을 Preferred Size 로 설정
첫단계는 끝났습니다.
두번째 단계인 약간의 코딩만 하면 Photon Chat이 동작합니다.
즉, IChatClientListener 인터페이스만 구현하면 됩니다.
:
void DebugReturn(DebugLevel level, string message);
"void OnDisconnected();"
"void OnConnected();"
void OnChatStateChange(ChatState state);
"void OnGetMessages(string channelName, string[] senders, object[] messages);"
void OnPrivateMessage(string sender, object message, string channelName);
"void OnSubscribed(string[] channels, bool[] results);"
"void OnUnsubscribed(string[] channels);"
void OnStatusUpdate(string user, int status, bool gotMessage, object message);
이 중
OnDisconnected(), OnConnected(), OnGetMessages(string channelName, string[] senders, object[] messages), OnSubscribed(string[] channels, bool[] results),
OnUnsubscribed(string[] channels)
이 5개를 중점으로 다뤄보겠습니다.
2.1 적당한 곳에 ChatTest.cs 파일을 생성합니다.
2.2 코딩
: 중요한 2개 함수만 코드로 적어놓겠습니다.
나머지는 아래 첨부파일을 다운 받아보세요.
public void OnConnected () { AddLine ("서버에 연결되었습니다."); chatClient.Subscribe(new string[]{currentChannelName}, 10); }
public void OnGetMessages(string channelName, string[] senders, object[] messages) { for (int i = 0; i < messages.Length; i++) { AddLine (string.Format("{0} : {1}", senders[i], messages[i].ToString())); } }
* 참고하실 cs파일
이제 마지막으로 변수 연결만하면 chat 이 동작하는 것을 볼 수 있습니다.
★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon Help Center
https://support.photonengine.jp/hc/ko
[Photon Chat] 채팅 창 만들기(Unity3D) (3) | 2019.02.07 |
---|---|
[Photon Chat] 채팅 조금 더 알아보기 (0) | 2019.02.02 |
[Photon Chat]챗 이모저모 (0) | 2018.06.01 |
* 한국 이용사례
- 콜 오브 라스트 에이전트
https://play.google.com/store/apps/details?id=com.funmagic.cola&hl=ko
* 필터 사용시 비용 별도로 추가됩니다.
* 채팅 데이터 저장을 위해 외부 DB를 구축 후 발생 비용
->없습니다.
* 채팅 데이터
->ToStringMessages()로 channel 속에 캐시된 메시지를 읽는것은 가능하지만,
이것은 일시적인 데이터에 불과하고 과거 모든 정보는 저장하고 있지 않습니다.
별도의 DB 서버를 구축하시는 것을 권장합니다.
* 채팅 로그
1. DB 서버를 별도로 준비한다
2. 이 DB 서버에 접속하기 위한 Web Service기동한다
3. 클라이언트 측에서 메시지를 송신할 때마다 Web Service도 호출하여 로그로써 저장한다
4. 필요할 때, Web Service에서 로그 정보를 불러온다
cf) 로컬캐시는 앱 측에서 캐시된 것으로, ChatChannel.MessageLimit로 수량이 제한되어 있습니다.
클라우드측의 캐시는100통으로, Channel에 있는 마지막 플레이어가 이탈한 5초 후에 클리어됩니다.
★Photon 공식 홈페이지
https://www.photonengine.com/ko-kr/Photon
★Photon Help Center
https://support.photonengine.jp/hc/ko
[Photon Chat] 채팅 창 만들기(Unity3D) (3) | 2019.02.07 |
---|---|
[Photon Chat] 채팅 조금 더 알아보기 (0) | 2019.02.02 |
[Photon Chat]포톤 챗 시작하기(Unity3D) (2) | 2018.06.02 |
포톤은 스토리지 기능이 없습니다.
그래서 다른 회사에서 제공하는 스토리지를 사용하여
계정관리, 유저 데이터 관리를 하는 것이 좋습니다.
그래도
멀티플레이 중 상황을 파악하고 싶거나
서버에서 게임 컨트롤을 하고 싶거나
치트, 해킹에 대한 대책이 필요합니다.
이럴때 포톤에서는
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
[Photon 팁]포톤엔진 구매-클라우드편 (0) | 2018.09.28 |
---|---|
[Photon 팁]포톤엔진 구매-서버편 (0) | 2018.09.07 |
[Photon 팁]포톤엔진을 유니티(Unity 3D)에 적용 (0) | 2018.07.23 |
[Photon 팁] 포톤 Cloud vs Server (0) | 2018.06.20 |
<PUN(Photon Unity Networking) 도입>
크게 4단계만 따라 오시면, 멀티플레이를 실행할 수 있습니다.
1. 유니티짱 오브젝트 설정
2. PUN 설정
3. 연결 코딩
4. 메인 카메라 설정
먼저, 멀티플레이 게임을 만들 준비를 합니다.
포톤(Photon)엔진 홈페이지에서 회원가입을 진행합니다.
먼저,
유니티 어셋 스토어에서 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 변수 선언
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
[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 |