* 로비

- 로비에서 제공하는 정보

- 로비 자동 입장


* 룸

- 룸 생성

- 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' 카테고리의 다른 글

[PUN]PUN classic VS PUN 2  (0) 2019.05.30
[PUN] 매치메이킹  (0) 2019.04.24
[PUN]RPC 알아보기  (0) 2018.12.10
[PUN]VR 프로젝트 구현하기  (0) 2018.07.22
[PUN]유니티짱을 이용한 PUN classic 시작하기  (1) 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' 카테고리의 다른 글

[PUN]PUN classic VS PUN 2  (0) 2019.05.30
[PUN] 매치메이킹  (0) 2019.04.24
[PUN]로비.룸 알아보기  (0) 2018.12.19
[PUN]VR 프로젝트 구현하기  (0) 2018.07.22
[PUN]유니티짱을 이용한 PUN classic 시작하기  (1) 2018.05.30

2018년 마지막 세미나(워크샵)을 강남에서 개최합니다!!



모임장소





올해

VR-Photon (http://photonkr.tistory.com/12), 


DB-Photon (http://photonkr.tistory.com/10),

 


Photon 시작하기 (http://photonkr.tistory.com/6)


등등을 

알아보았습니다.




이번에 2018년 마지막으로

알아볼 주제는

'RPC와 룸.로비' 입니다.





2018년 12월 8일 낮 3시 30분부터 시작합니다.




참가신청은 온오프믹스에서 받고 있습니다~


https://onoffmix.com/event/158954








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

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









2018년 8월부터 PUN '2' 버전도 출시되었습니다!



그런데 유니티 어셋 스토어에 '1'버전과 '2'버전 둘 다 존재하고 있죠!??

기능적으로는 PUN2와 기존 PUN도 다른점은 없습니다. 

주된 변경점은 API 구조의 개선을 통해 안정성이 향상된 점이라고 보시면 됩니다. 

기존 PUN '1'도 계속해서 지원할 예정이므로, 특별히 문제가 없으시면 PUN2로 교체하지 않으셔도 됩니다.




PUN 1 과 마찬가지로

Free 버전과 Plus 버전이 있어요



* FREE


https://assetstore.unity.com/packages/tools/network/pun-2-free-119922






* PLUS


https://assetstore.unity.com/packages/tools/network/photon-pun-2-120838






PUN2 API

https://doc-api.photonengine.com/en/pun/v2/index.html




PUN2 기술문서

https://doc.photonengine.com/ko-kr/pun/v2/getting-started/pun-intro




PUN2 migration note

https://doc.photonengine.com/ko-kr/pun/v2/getting-started/migration-notes









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

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

저번 포톤엔진(Photon) 구매-서버편에 이은



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




이번에는 클라우드편입니다.



서버편이 궁금하시면 위 링크로 들어가시면 됩니다.








아시다시피, 만드신 어플리케이션은 20CCU를 무료로 이용할 수 있습니다.


CCU를 조금 더 업그레이드 하려면 

플랜을 변경하고 결제를 하셔야 합니다.




로그인




업그레이드 하고자 하는 어플리케이션의 'CCU 변경하기' 버튼을 누르세요.







* 무료 플랜 어플리케이션 화면






20CCU 이상 플랜을 선택하시면

'월 정액 플랜을 선택하기' 와

'연간 플랜을 선택하기(1년 후 자동갱신 됩니다)' 에

맞는 금액이 표시되고요.


둘 중 원하시는 결제방식을 체크하시면 됩니다.




결제방법을 선택한 후

'선택한 플랜을 구입하기' 버튼을 누르세요.









그러면 구입확인 팝업이 뜨고요

내용 확인 후 문제가 없으면

'네'를 클릭하시면 됩니다.







최종 구매 후 

어플리케이션 정보에서

CCU가 설정하신대로 나오면 결제가 잘 된 것 입니다.









이로써 포톤서버엔진(Photon) 구매 방법을 모두 안내해드렸습니다.

클라우드, 서버(온프레미스) 무료로 마음껏 이용해 보시고, 

더 높은 플랜이 필요할때 결제해주세요~ 


감사합니다!





Photon 공식 홈페이지 

https://www.photonengine.com/ko-kr/Photon

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




포톤은 클라우드와 서버(온프레미스) 제품군이 있는데요


Photon Cloud 서비스를 이용해 출시한 게임이 있어서

여러분들께 소개하려고 합니다.





바로 뱅드림(Bang Dream)


http://bangdream.kakaogame.com/web/main.html




다운로드


iOS

https://itunes.apple.com/KR/app/id1308168618?mt=8



Android

https://play.google.com/store/apps/details?id=com.kakaogames.bangdreamkr&referrer=af_tranid%3DOFRWjcq0DDiqVAImBOAnPw%26pid%3Dbrandpage%26c%3DbtnAOS%26utm_source%3Dbrandpage%26utm_campaign%3DbtnAOS





공식커뮤니티


https://playgame.kakao.com/bangdream/home





먼저 일본에서 출시하여

대히트를 친 게임입니다!




한국에서는 카카오게임즈가 개발 퍼블리싱했어요




포톤 서버엔진을

한국에서도 믿고 사용해주시고, 서비스 잘 되고 있으니

정말 뿌듯합니다!!




카카오게임즈도 포톤 엔진도 다 화이팅!!






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

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







포톤엔진(Photon Engine)은 

회원가입만 하시면

100CCU 라이센스를 무료로 자유롭게 이용할 수 있습니다.



개발과 테스트를 다 하시고

이제 릴리즈를 해야할때


포톤엔진 라이센스를 업그레이드 해야할때


결제과정이 조금 이해가 안되는 분들을 위해서

오늘 차근차근 알려드리겠습니다!



먼저, 포톤엔진(Photon Engine) 홈페이지 로그인을 해주세요.


https://www.photonengine.com/





* 아직 계정이 없다면, 회원가입 고고!








포톤 서버 관리화면으로 이동할텐데요.

로그인을 하면 로그인 버튼이 사람모양이 되요.

이 사람모양 버튼을 누르면 아래 사진처럼 될거에요~









그리고

이번에는 서버 결제를 할거니까

Photon Cloud가 아닌

'Photon Server 관리화면'을 눌러야겠죠?!




아직 구매한 적이 없으시면

아래와 같은 화면이 나옵니다.






라이센스 주문을 클릭하면

플랜을 설정하는 화면이 나옵니다.








언제든지 라이센스 수를 업데이트할 수 있습니다!




필요하신 플랜과 라이센스를 설정 후

가입을 누르시면

아래와 같이 주문 확인 팝업이 뜹니다.





다 되었습니다!

이제 재있는 게임 개발하러 고고!!



포톤엔진으로 마음편히 게임 오픈하시고 대박나세요!!






그리고

다음 포스팅에서는 클라우드 구매하는 방법을 안내해드릴께요~






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

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


안녕하세요!!

이번에는 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










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

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



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

[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






+ Recent posts