안녕하세요

포톤 코리아(Photon Engine)입니다.




유니티(Unity 3D)에서 채팅을 만들적에

꼭 필요한 스크롤 창을 만들어 보겠습니다.



먼저, Canvas를 추가하세요

Create > UI > Canvas


정리가 필요한 경우,

빈 오브젝트를 추가하여 

폴더처럼 관리해주시면 되고요.

Create > Create Empty



이제 채팅이 보여질 스크롤 뷰를 추가합니다.



오늘은 스크롤 바 중에서 세로만 이용할 거라서

스크롤 바 호리젠탈(Scrollbar Horizontal)은 삭제를 하겠습니다.





뷰포트 \ 컨텐트 에 텍스트를 하나 만들어 주세요.





이 텍스트(Text)에 

컨텐트 사이즈 피터(Content Size Fitter) 컴포넌트를 추가하고


스크롤 뷰에서도 세로만 이용했듯이

사이즈 피터에서도 세로만 설정하면 됩니다.

버티컬 핏(Vertical Fit)을 Preferred Size 로 설정해주세요.







이제 다 하셨습니다.


빌드해보시면

채팅 대화가 위로 올라가면서

스크롤 뷰에서 잘 구현되는 것을 보실 수 있을 겁니다.






포톤 챗 이용하시어

대박 어플리케이션 만드세요!

수고하셨습니다~









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

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


★Photon Korea 공식 블로그
https://photonkr.tistory.com


채팅필터

채널




안녕하세요!

이 전 포스팅에서는

유니티에 Photon Chat을 임포트하고 간략하게 동작하기까지 해보았습니다.



아직 Unity에 Photon Chat을 임포트 못 해보신 분은

위 포스팅 한번 보고 오세요~



이번 포스팅에서는

채널, 채팅필터 설정 등을 알아보려고 합니다.




접속

함수: Connect()





채널

사용자 그룹 또는 주제별로 채널을 만들 수 있습니다.



채널 구독하기 

함수: Subscribe()

        파라미터에 구독할 채널을 문자열로 넘기면 됩니다.

구독할 채널 수의 상한은 없습니다.



다만, 500 message / sec 제한이 있으니

이 부분 주의해서 개발하시면 됩니다~



메시지

Public 메시지 보내기

함수: PublishMessage()


Private 메시지 보내기

함수: SendPrivateMessage()

        파리미터에 보내고 싶은 유저이름과 내용(메시지)을 각각 넣으면 됩니다.




* 메시지 카운트

RPC 호출이나 메시지 전송 횟수 등으로 카운트합니다.

간략하게 예를 들어 보겠습니다.

4명이 룸에 있는 경우,

A 유저가 룸 퍼블릭 메시지를 보내면(1 send), 

나머지 3명이 그 메시지를 받습니다(3 receive).

그래서 4 메시지로 카운트 됩니다.



더 자세한 내용은 아래 링크에서

'초당 메시지 룸당 메시지는 어떻게 계산되나요' 부분을 참고하세요.

https://doc.photonengine.com/ko-kr/pun/current/troubleshooting/faq





포톤챗은 채팅필터 기능도 있습니다.

이 필터를 이용하는 방법에 대해 알아보겠습니다.


1. 라이센스 동의





2. 필터 설정



3. 채팅 필터 설정 후




챗 유저상태(ChatUserStatus)

int 로 그 상태를 구분하고 있습니다.

0 : offline

1 : invisible 

2 : online

3 : away 방해할 수 없는 상태

4 : DND 게임이나 그룹을 찾고 있는 상태

5 : LFG 방에서만 사용가능하고 게임 중인 상태

6 : Playing 






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


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



★Photon Korea 공식 블로그
https://photonkr.tistory.com



* 로비

- 로비에서 제공하는 정보

- 로비 자동 입장


* 룸

- 룸 생성

- RoomOptions

- 커스텀(룸)프라퍼티






로비에서 알 수 있는 내용

로비 이름,

룸 목록, 룸 수 

플레이어 수 등등

이 있습니다.






로비 자동입장 하는 방법





* PhotonServerSettings 파일 위치

PUN \ Resources \ PhotonServerSettings





참고로,

플레이어를 로비로 거치지 않고 바로 룸으로 들어가게 할 수도 있습니다.




룸 생성에 대해 알아보겠습니다.


먼저, API 부터 보겠습니다.


static bool PhotonNetwork.CreateRoom(string roomName)


static bool PhotonNetwork.CreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedlobby)


static bool PhotonNetwork.CreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedlobby, string[] expectedUsers)



- roomName 이 null 인 경우 무작위 생성됩니다.

- RoomOptions 란 maxPlayers, room 프라퍼티 등의 정보를 넣을 수 있는 클래스 입니다.

- expectedUsers 는 슬롯이 부여된 유저를 말합니다.





* PUN API

http://doc-api.photonengine.com/ko-kr/pun/current/index.html









많이 쓰이는 RoomOptions 클래스를 더 알아보겠습니다.

먼저, 이 클래스의 프라퍼티로는

MaxPlayers, IsVisible, CustomRoomProperties 등등이 있습니다.


이 프라퍼티들을 용도에 맞게 사용하시면 됩니다.




이제 사용방법에 대해 알아보겠습니다.

초기화>


ros 라는 변수명으로 초기화했습니다.



구현>




이 방 최대 플레이어 수는 10

로비에서 검색이 가능하게 세팅하였습니다.

그외 여러 프라퍼티가 있으므로 필요한 프라퍼티 값을 세팅하면 됩니다.







CustomProperties 를 알아보겠습니다.

룸에 커스텀 프라퍼티를 줄 수 있습니다. 물론 플레이어에도 줄 수 있습니다.

커스텀 프라퍼티는 HashTable 자료형입니다.






룸에 있는지 확인합니다.

그리고 나서

미리 생성해놓은 룸 커스텀프라퍼티를 받아옵니다.

받아온 룸 커스텀프라퍼티를 입맞에 맞게 가공하시면 됩니다.








* HashTable

키의 해시코드에 따라 구성된 키/값의 쌍의 컬렉션










그리고 룸에 들어오면 플레이어는 actorID를 가지게 됩니다.












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

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


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

로비.룸 알아보기  (0) 2018.12.19
RPC 알아보기  (0) 2018.12.10
[Photon 팁]포톤엔진을 유니티(Unity 3D)에 적용  (0) 2018.07.23
VR 프로젝트 구현하기  (0) 2018.07.22
유니티짱을 이용한 PUN 시작하기  (0) 2018.05.30

포톤은 여러 서비스를 제공합니다.

Realtime, PUN 등등


그 중 PUN은 원격프로시저호출(Remote Procedure Call)을 지원합니다.




* 프로시저(Procedure)란?

- 루틴이나 서브루틴 및 함수와 같은 뜻

- 어떤 행동을 수행하기 위한 일련의 작업순서




*원격프로시저 호출(Remote Procedure Call)이란?

원격제어를 통해 함수나 프로시저의 실행을 허용하는 기술

사용예시: 윈도우 인증, SMS 서버 등등



이를 게임에 적용해보면

같은 룸에 있는 다른 유저(클라이언트)의 함수를 실행하는 것입니다.




API 중 PhotonView 클래스

(http://doc-api.photonengine.com/en/PUN/current/class_photon_view.html)

를 보면


void PhotonView.RPC (string methodName, PhotonTargets targets, params object[] parameters)


와 같이 나와있습니다.



유니티에 적용하려면

PunRPC 속성을 적용해야합니다.




이제 실제로 적용해보기 위해

유니티짱 프로젝트를 이용해보겠습니다.




유니티짱 프로젝트는 

아래 링크로 가시면 자세히 보실 수 있습니다.


http://photonkr.tistory.com/6?category=1000132









위 '유니티짱을 이용한 PUN 시작하기' 포스팅을 

차근차근 따라하시면

RPC를 알아보기 위한 base 프로젝트가 완성이 됩니다.




RPC 가 호출될 시점은

유니티짱이 룸에 입장할때 입니다.




유니티짱(플레이어 캐릭터)와 컨트롤러에 RPC 코드를 작성하겠습니다.




유니티짱에는 위와 같이 작성하겠습니다.

PhotonView 를 찾고, RPC 함수를 호출하겠습니다.

모든 대상에 RPC를 호출하고, 

'RPC success'라는 메시지를 보내겠습니다.







그리고

유니티짱에는 위 소스(SendMessage.cs)를 컴포넌트에 넣겠습니다.





컨트롤러에는 

RPC가 호출되면 로그 찍히도록 작성하겠습니다.






그리고

컨트롤러에는 PhotonView 컴포넌트를 추가하겠습니다.





이제 빌드앤런을 해보세요




보낸 메시지가 성공적으로 잘 찍혔습니다.




이상 RPC 에 대해 알아보았습니다





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

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














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

로비.룸 알아보기  (0) 2018.12.19
RPC 알아보기  (0) 2018.12.10
[Photon 팁]포톤엔진을 유니티(Unity 3D)에 적용  (0) 2018.07.23
VR 프로젝트 구현하기  (0) 2018.07.22
유니티짱을 이용한 PUN 시작하기  (0) 2018.05.30


오늘은 포톤 서버 라이센스 연결해보겠습니다.





먼저, 포톤 서버 SDK 설치를 하셔야겠죠?




https://www.photonengine.com/ko-KR/sdks#serverserver



포톤 서버 SDK 다운로드 페이지입니다.

현재는 server 4 다운로드 받을 수 있게끔 링크가 걸려있고요.

구버전도 다운로드 받을 수 있습니다.




윈도우에서 압축파일을 풀고

바로 이용하셔도 됩니다.


그러면 아래 화면처럼

라이센스 파일 알람이 뜰겁니다.


에러화면은 아니고요. 

라이센스 파일이 없어서 CCU 제약이 있다고 알려주는 겁니다.









무료 라이센스는 100 CCU로 사용할 수 있고요.

구매하시면 무제한 CCU로 사용할 수 있습니다.


CCU를 올리고 싶으시다면

로그인한 포톤 홈페이지에서

Photon Server 관리화면으로 들어오시면

아래와 같은 화면이 나타날 것입니다.











그리고 원하시는 사양으로 라이센스를 다운로드 누르시면

라이센스 파일이 다운로드 됩니다.






다운로드한 라이센스 파일을

실행파일이 존재하는 폴더에 옮겨놓으시면 됩니다.




잠시!

실행 중에 라이센스 파일을 옮겨도 적용은 안됩니다.

그래서 포톤 서버를 종료 후 재시작해야 라이센스가 적용이 됩니다.




라이센스에 관한 내용은 

아래 기술 문서 URL을 통해서도 확인이 가능합니다


https://doc.photonengine.com/ko-kr/server/current/operations/licenses








이제 

라이센스 연결하시어 

초기에 세팅(라이센스 없는 서버)된 20 CCU 이상으로 

개발을 해보세요!




감사합니다!!





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

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


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

Photon Server 라이센스 연결  (0) 2018.11.04

안녕하세요!

이번 포스팅은 포톤 엔진을 유니티에 적용하는 과정에 대해 알아보려고 합니다.


먼저, 여러분이 사용할 포톤 엔진을 간략하게 설명해드릴께요.

독일의 함부르크에 위치한 엑시트 게임즈(Exit Games)가 처음 개발했어요. 골프 게임인 '월드 골프 투어' 온라인 엔진을 만드는 과정에서 쌓인 노하우로 시작했습니다.



이제

포톤 홈페이지에 오셔서 회원가입을 해주세요

물론, 무료고 간단하게 이메일로 회원가입하시면 됩니다.


https://www.photonengine.com/




회원가입을 하셨으면

포톤엔진(Photon) 관리페이지에서

새 어플리케이션을 만들겠습니다.






필요한 포톤 서비스를 선택하시고 (Realtime, PUN, Bolt 등등)

생성버튼을 누르세요!




부담없이 관리화면에서 '새 어플리케이션'을 만드세요.

20CCU는 무료로 얼마든지 이용가능합니다!


그리고 생성된 어플리케이션 ID를 유니티에 세팅하면 됩니다.




유니티란

3D 및 2D 비디오 게임의 개발환경을 제공하는 게임엔진이자, 3D 애니메이션과 건축시각화, 가상현실(VR) 등 인터렉티브 콘텐츠 제작을 위한 통합 저작 도구입니다.

그리고 2005년 WWDC(애플 세계 개발자 회의)에서 소개되었고, 현재 가장 인기있는 게임엔진입니다.



유니티(Unity 3D) 다운로드

https://store.unity.com/kr/?_ga=2.183207782.134718227.1532307302-2009930978.1440059350




게임 만들적에 한국에서 가장 많이 이용하는 툴이죠.



이제 유니티를 설치하셨으면

어셋 스토어로 가볼까요!!?



어셋스토어에서 'PUN'을 검색해보세요


위와 비슷한 화면이 나올텐데요.


사진과 같이

PLUS 와 FREE 두 종류의 PUN이 있습니다.



* PUN vs PUN+ (차이점)

1. Photon Unity Networking Free 모바일용에 빌드 Android/iOS Pro라이센스가 필요하지만, PUN+ 필요하지 않습니다.

2. PUN+에는 60개월간 100CCU까지 사용할 있는 쿠폰이 포함되어 있습니다.



이번 포스팅에서는 모바일로 빌드를 하는게 아니라서

FREE 를 다운받고, 임포트하겠습니다. 





임포트가 완료되면

포톤 어플리케이션 ID를 세팅하는 창이 뜹니다.



실수로 창을 닫으셨거나

나중에 설정하고 싶으시면


Photon Unity Networking \ Resources \ PhotonServerSettings

에서 값을 입력하시면 됩니다.




이상

포톤엔진을 유니티에 적용하기를 마치겠습니다.




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

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




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

로비.룸 알아보기  (0) 2018.12.19
RPC 알아보기  (0) 2018.12.10
[Photon 팁]포톤엔진을 유니티(Unity 3D)에 적용  (0) 2018.07.23
VR 프로젝트 구현하기  (0) 2018.07.22
유니티짱을 이용한 PUN 시작하기  (0) 2018.05.30

VR(가상현실)이란

컴퓨터 등을 사용한 인공기술로 만들어낸 실제와 유사하지만 실제가 아닌 어떤 특정한 환경이나 상황 혹은 그 기술자체를 의미합니다.



사실상 최초의 현실적인 게이머용 VR 헤드셋 영상을 한번 보세요!


https://www.youtube.com/watch?v=l9o8MJKsU_0





구글 카드 보드란

2014년 구글 I/O 컨퍼런스에서 발표된 DIY 도면 및 해당 도면으로 만들어진 HMD(Head Mounted Display)를 지칭합니다.


* HMD : 주로 가상현실 또는 증강현실의 구현을 위한 디스플레이 장치



* 공식 홈페이지

https://vr.google.com/cardboard/index.html





이제 서론은 접고, 개발을 시작해보겠습니다.



요약

1. SDK 준비 (구글 카드보드, PUN)

2. 



유니티 (포스팅시 적용 버전 2018.1.8f1)

VR 개발툴 선두주자라고 할 수 있는 유니티는 다 설치해놓으셨죠?



그 다음,

구글 카드보드 SDK for Unity 를 다운 받겠습니다.


유니티 어셋스토어에서 받는게 아니라

깃허브에서 다운받으면 됩니다.


https://github.com/googlevr/gvr-unity-sdk/releases

(포스팅시 적용 버전 1.150.0)





* 참고

(혹시나 예전버전 SDK가 필요하시면)

https://github.com/googlevr/gvr-unity-sdk/releases/tag/v1.110.0








유니티 공식 샘플 소스로 VR 테스트를 해보겠습니다.

Roll A Ball 프로젝트입니다.




튜토리얼 사이트


https://unity3d.com/kr/learn/tutorials/s/roll-ball-tutorial


 



VR이 아닌 앱으로 실행을 하면



이제 VR 프로젝트로 변환시켜보겠습니다!!


구글 카드보드 SDK의 카메라 말고

Dive Camera를 한번 사용해보겠습니다.


https://www.durovis.com/en/sdk.html





홈페이지에서 유니티 플러그인 패키지를 다운받으세요.

그리고 프로젝트에 임포트를 하세요.





Asset \ _Completed-Game \ Roll-a-ball 씬을 엽니다.

그리고 
임포트한 Dive Camera 를 하이라키에 넣겠습니다.

Asset \ Dive \ Prefabs \ Dive_Camera 프리팹을 하이라키에 드래그앤 드랍하세요.

기존에 하이라키에 있던 MainCamera는 비활성화시켜주세요.

그러면 이런 하이라키를 구성할 겁니다.




이제 VR 프로젝트가 완성되었습니다.
빌드앤 런을 해보세요






VR로 잘 실행되었다면
이제 멀티플레이어가 되도록 만들어보겠습니다.


멀티플레이어 게임을 만들기 위해서

포톤 어셋부터 임포트 하겠습니다.



PUN을 유니티에 적용하는 부분은

포톤코리아 블로그에서 포스팅한 글('포톤엔진을 유니티에 적용')을 참고해주세요~



http://photonkr.tistory.com/13?category=1000133







위 포스팅을 잘 따라하시면

유니티에 PUN 임포트&설정은 문제 없을 것입니다.




그 다음

빈 오브젝트를 생성한 후

이름을 'NetworkController'로 변경합니다.

곧 이 오브젝트에 곧 생성할 NetworkController.cs 파일을 컴포넌트로 넣을 것입니다.







이제 플레이어가 될 오브젝트를 프리팹(Prefab)으로 만들겠습니다.


Asset 폴더 아래에 Resources 폴더를 하나 생성합니다.

이 폴더로 Player 게임오브젝트를 드래그앤 드랍하세요.





프리팹을 만들었으니

하이라키에 있는 Player 오브젝트는 삭제하거나 비활성화 시켜주세요.





프로젝트 하이라키는 아래와 같습니다.



(Main Camera와 Player는 비활성화)





이제는 스크립트 파일을 만들겠습니다.


NetworkController.cs






* PhotonNetwork.ConnectUsingSettings()


* PhotonNetwork.Instantiate()

- 네트워크 객체를 자동으로 생성

- 프리팹 이름, 시작위치, 회정정보

- 프리팹은 Resources 폴더 안에 존재, 프리팹은 PhotonView 가 컴포넌트로 존재


NetworkedPlayer.cs




* OnPhotonSerializeView()

- steam 변수를 통해 read, write


**steam.isWriting


**steam.SendNext()

- 데이터 직렬화

- 다른 유저에게 데이터를 보냄

 





아까 말씀해드린대로

NetworkController.cs 파일은 NetworkController 게임오브젝트에 컴포넌트로 추가해주세요.




NetworkedPlayer.cs 파일은 프리팹에 컴포넌트로 넣어주세요.

그리고 포톤 엔진이 제어할 수 있도록

PhotonView 도 컴포넌트로 넣어주세요.


PhotonView를 넣은 후

Observed Components에는 NetworkedPlayer 컴포넌트를 드래그앤 드랍해주세요.


아래 사진은

Player 프리팹 수정한 인스팩터 부분입니다.





빌드 앤 런 해보세요!









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

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







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

로비.룸 알아보기  (0) 2018.12.19
RPC 알아보기  (0) 2018.12.10
[Photon 팁]포톤엔진을 유니티(Unity 3D)에 적용  (0) 2018.07.23
VR 프로젝트 구현하기  (0) 2018.07.22
유니티짱을 이용한 PUN 시작하기  (0) 2018.05.30

안녕하세요!!

이번에는 PUN만 사용해서는 데이터를 저장할 수 없는데요.
이를 해결하기 위해서 DB를 연동해보겠습니다.

DB 서비스를 제공하는 업체 중에서 playfab을 이용해보겠습니다.



본격적으로 개발하기에 앞서서 3가지를 준비할 것입니다.
유니티 프로젝트 생성, 포톤 어플리케이션 생성, 플래이팹 타이틀 생성




유니티 프로젝트 생성







* 유니티 설치 혹은 회원가입은 유니티 홈페이지에서
https://unity3d.com/kr







포톤 어플리케이션 생성
포톤 서비스 중 Realtime 으로 선택해주세요~







* 포톤 회원가입은 홈페이지에서
https://www.photonengine.com/ko-KR/Photon









Playfab 타이틀 생성




* 플레이팹 회원가입은 홈페이지에서
https://playfab.com/







조금 전 말씀해드린대로

Photon의 'Realtime' 서비스를 이용한 어플리케이션을 생성한 화면입니다.







그리고 이 어플리케이션에서 커스텀 서버를 생성합니다.
인증 URL 에
https://{PlayFabTitleId}.playfabapi.com/photon/authenticate
을 넣습니다.


{PlayFabTitleId} 은 생성한 타이틀 ID 입니다. 







이제 Playfab에서 시크릿키를 받을 겁니다.
(Photon 어플리케이션에서 Webhooks 세팅할 적에 시크릿키가 필요합니다)

다시 PlayFab 으로 오셔서
Add-ons 에서 Photon을 추가합니다.









Photon 홈페이지에서 미리 생성한 어플리케이션 기억나시죠?
어플리케이션 ID를 넣으면 시크릿키가 생성됩니다.










 
Webhooks
Playfab에서 시크릿키도 생성했으니,
Photon 어플리케이션에서 webhooks를 설정해보겠습니다.




- 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 파일을 포함할 게임오브젝트를 하나 추가합니다.









* 소스는 파일로 첨부했습니다.

PlayFabAuthenticator.cs







이제 빌드&런을 해보세요










* 2번까지는 실행되었으나,

PlayFab TitleId 세팅 에러가 난 경우


    public void Awake() {
        PlayFabSettings.TitleId = {PlayFabID};
        AuthenticateWithPlayFab();
    }





만약 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










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

[PUN 튜토리얼]Realtime에 DB연동(PlayFab)  (1) 2018.06.02
  1. ㄷㄱㄱㅎ 2019.04.23 16:43 신고

    invaild endpoint 라뜨면서 2번박에안되네요 이유를 모르겟어요

안녕하세요!
이번 포스팅에서는 포톤 챗을 다뤄보겠습니다.

* 포톤 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파일

ChatTest.cs



포톤 chat 구현을 위한 2단계를 다 하셨습니다.



이제 마지막으로 변수 연결만하면 chat 이 동작하는 것을 볼 수 있습니다.







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

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






* 한국 이용사례

- 콜 오브 라스트 에이전트

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






+ Recent posts