안녕하세요~

이번에는 포톤 서버를 구축해보겠습니다.

 

가정에 윈도우 컴퓨터가 있다면

그 컴퓨터를 이용해서 간단하게 포톤 서버를 구축할 수 있습니다.

그렇지만 요즘은 클라우드 플랫폼도 워낙 잘 나와서

클라우드 플랫폼을 이용해보도록 하겠습니다.

 

 

클라우드 컴퓨팅이란?

컴퓨팅 파워, 데이터베이스 스토리지, 애플리케이션 및 기타 IT 리소스를 필요에 따라

인터넷을 통해 제공하고 사용한 만큼만 비용을 지불하는 것을 말합니다.

 

대표적 업체로는

아마존, 마이크로소프트, 구글 등 

해외 공룡(?) 업체들이 클라우드 서비스를 제공하고 있습니다.

 

이번 포스팅은 한국 시장 절반 이상을 차지하고 있는 아마존을 이용해보겠습니다.

* 참고기사

https://www.hankyung.com/it/article/2019062745161

 

외국 클라우드社, 국내 점유율 67%

한국 클라우드 시장에서 국내 업체 입지가 좁아지고 있다. 외국 클라우드 업체의 국내 시장 점유율이 높아지면서다. 클라우드 각 분야에서도 외국 업체가 모두 1위를 차지하고 있다. 27일 정보통신산업진흥원의 ‘인공지능 확산의 핵심 인프라, 클라우드산업 동향 분석과 시사점’ 보고서에 따르면 글로벌 시장조사 업체 IDC는 지난해 외국 업체의 한국 클라우드 시장 점유율이 67%를 기록한 것으로 파악했다. 국내 시장의 업체별 점유율이 공개된 것은 이번이 처음이다.

www.hankyung.com

 

아마존은 2006년 온라인 상거래를 통해 쌓은 인프라를 개방했습니다.

그 서비스가 클라우드의 대명사인 EC2와 S3 입니다.

 

* EC2 (Elastic Compute Cloud)

* S3 (Simple Storage Service)

 

 

아마존을 이용하려면 계정부터 있어야겠죠?

 

* 홈페이지

https://aws.amazon.com/ko/

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

예측 분석 Formula One Group에서 Amazon SageMaker를 사용하여 레이스를 최적화 Formula 1에서 어떻게 Amazon SageMaker와 다른 AWS 서비스를 사용하여 레이스 의사 결정을 최적화하고 팬 경험을 개선하는지 알아보십시오. 자세히 알아보기  변혁 시작 Formula One Group은 인프라 대부분을 온프레미스 데이터 센터에서 AWS로 이전하고 Amazon SageMaker를 비롯한 AWS 기계 학습 서비스에서 이를

aws.amazon.com

 

 

* 계정 생성

무료로 계정생성을 할 수 있습니다.

 

계정을 생성하셨으니

인스턴스 생성을 해보겠습니다.

 

 

아마존 솔루션 중 EC2를 선택하세요.

 

 

* EC2란? 

Amazon Elastic Compute Cloud 로서 

안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스 중 하나 입니다.

 

간단한 웹 서비스 인터페이스를 통해 간편하게 필요한 용량을 얻고 구성할 수 있습니다.

그리고 제일 중요한 점으로 무료로 구축이 가능합니다.

리눅스는 물론 Window t2.micro 인스턴스를 무료(12개월 750시간/월) 로 제공합니다.

 

 

총 7단계만 선택하면 구축됩니다.

 

 

 

말씀해드린대로

t2.micro 유형을 선택합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

계정(비밀번호)을 받도록 하겠습니다.

인스턴스 연결을 시도하면 암호를 가져오는 버튼이 활성화되어 있습니다.

 

 

EC2 인스턴스 생성시 발급받은 키페어가 필요합니다.

 

 

* 키페어

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair

 

Amazon EC2 키 페어 - Amazon Elastic Compute Cloud

Amazon EC2 키 페어 Amazon EC2는 퍼블릭 키 암호화 기법을 사용하여 로그인 정보를 암호화 및 해독합니다. 퍼블릭 키 암호화 기법은 퍼블릭 키를 사용하여 데이터를 암호화하고, 수신자가 프라이빗 키를 사용하여 해당 데이터를 해독하는 방식입니다. 퍼블릭 키와 프라이빗 키를 키 페어라고 합니다. 퍼블릭 키 암호화 기법을 사용하면 암호 대신 프라이빗 키를 사용하여 인스턴스에 안전하게 액세스할 수 있습니다. 인스턴스를 시작할 때 키 페어를 지정합니다

docs.aws.amazon.com

 

 

 

윈도우에서 제공하는 원격접속 프로그램을 이용해

접속을 해보세요.

 

 

 

 

 

 

 

<< 접속이 안되는 경우 >>

1. 보안그룹설정

2. 원격접속 프로그램 설정

을 한번 확인해보세요.

 

 

 

1. 보안그룹설정

 

설정되어있는 그룹을 선택 후

인바운드 규칙을 설정합니다.

예를 들어,

 

* RDP (Remote Desktop Protocol)

원격 데스크톱 프로토콜

 

 

 

 

2. 원격 접속 프로그램

Microsoft Remote Desktop 10

 

 

 

 

 

 

윈도우 서버를 설치하면

집에서 사용하는 윈도우처럼 익스플로러가 존재합니다.

그래서 익스플로러를 이용해 포톤 홈페이지에서 포톤 서버 SDK를 다운로드 받으시면 됩니다.

 

 

 

받은 SDK를 실행하세요.

 

포톤 서버 폴더가 하나 생깁니다.

그 중 deploy 폴더에서 설치된 윈도우 비트에 맞는 폴더로 오시면

PhotonControl 실행파일이 있습니다.

 

 

PhotonControl이 실행하면 

라이센스를 연결하거나 로드밸런스, MMO 어플리케이션을 동작할 수 있게 됩니다.

 

감사합니다!

 

참!

포톤 서버 라이센스 연결은  다음 포스팅을 참고하시면 됩니다.

https://photonkr.tistory.com/18?category=1030314

 

Photon Server 라이센스 연결

오늘은 포톤 서버 라이센스 연결해보겠습니다. 먼저, 포톤 서버 SDK 설치를 하셔야겠죠? https://www.photonengine.com/ko-KR/sdks#serverserver 포톤 서버 SDK 다운로드 페이지입니다. 현재는 server 4 다운로드..

photonkr.tistory.com

 

 

 


 

 

 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

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

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

 

 

구조도

PUN :

릴레이 서버. API 중 최상위 레벨은 PUN 코드로, 네트워크 객체, RPC 등과 같은 Unity의 기능을 구현합니다. 두번째 레벨은 Photon 서버, 매치메이킹, 콜백 등과 관련된 로직이 포함되어 있습니다. 가장 낮은 레벨은 DLL 파일들로 이루어져 있으며, 직렬화/비직렬화, 프로토콜 등과 같은 것으로 구성되어 있습니다.

 

Bolt :

호스팅된 클라이언트. 위 이미지의 2,3번 유저는 직접 연결이 불가능하여 포톤을 통해 접속하고, 4,5,6번 유저는 직접 연결이 가능하여 1번 유저가 직접 호스팅을 하고 있습니다.

 

 

 

지연보상

동기화 문제에서 발생하는 증상으로써 한 클라이언트에서 보내는 메시지가 다른 클라이언트로 ‘이동’하는데 걸리는 시간차이 때문에 발생합니다. 움직임이 느린 경우 눈에 띄지 않을 수도 있습니다. 그러나 이동 속도가 매우 빠르면 다른 게임에서 차이가 명확하게 표시될 수 있습니다.

PUN : OnPhotonSerializeView함수에서 포지션 격차를 보완하고, FixedUpdate함수에서 회전 격차를 보완합니다.

코드 예시

OnPhotonSerializeView함수는 PhotonView에 대한 동기화 데이터를 쓰고 읽을 수 있도록 초당 PUN에 의해 ​​여러 번 호출됩니다. 이는 PhotonView가 정기적으로 동기화하는 데이터를 사용자가 정의할 수 있습니다. 즉, 전송되는 내용과 클라이언트가 데이터를 사용하는 방법을 정의합니다. 이 함수 인자로 PhotonStream을 받습니다. PhotonView를 제어하는 ​​클라이언트의 "쓰기"모드 (PhotonStream.IsWriting == true)와 제어 클라이언트가 전송 한 원격 클라이언트의 "읽기 모드"입니다. 스트림에 값을 쓰지 않으면 PUN은 업데이트를 건너 뜁니다.

 

Bolt : Bolt Physics를 이용해서 격차를 보완합니다.

코드예시

Bolt Physics를 사용하기 전에 Bolt Hit Box Body 컴포넌트를 추가해야합니다. 그리고 나서 RaycastAll 함수를 이용하면 됩니다. 

* RayCast란? 3차원 공간에서 어느 한 점(시작점)에서 Ray를 정해진 방향(direction vector)으로 진행하여 Ray와 충돌되는 객체를 구하는 방법

 

 

 

동기화

PUN : RPC(원격 프로시저) 등. 같은 룸에 있는 다른 클라이언트에 있는 메소드를 호출하는 것입니다. 호출될 함수에는 '[PunRPC]' 속성이 적용되어 있어야 합니다. PhotonView가 함수를 호출합니다.

 

* RPC 조금 더 자세히

https://photonkr.tistory.com/22

 

[PUN]RPC 알아보기

포톤은 여러 서비스를 제공합니다. Realtime, PUN 등등 그 중 PUN은 원격프로시저호출(Remote Procedure Call)을 지원합니다. * 프로시저(Procedure)란? - 루틴이나 서브루틴 및 함수와 같은 뜻 - 어떤 행동을 수..

photonkr.tistory.com

Bolt : 이벤트 입력. 즉, 플레이어가 입력한 w,a,s,d 키, 마우스 클릭 등 이런 input을 동기화 합니다.  또한 3D물리엔진을 구비하고있고 클라이언트쪽에서 움직임을 예측하며 롤백기능이 있어 서버와 클라이언트가 일치하도록 조절해줍니다

 

 

매치메이킹

다른 유저와 같이 플레이하기 위하여 룸에 입장하는 것은 Photon에서 매우 쉽습니다. 

PUN : 기본적으로 3가지 방법을 제공합니다. 1. 서버에게 매칭되는 룸을 찾은 후 입장 2. 친구를 따라 룸에 입장 3. 룸의 목록을 얻어 사용자가 하나를 선택하여 입장. 여러 방법 중 대표적인 하나를 예로 들면, JoinRandomRoom 함수를 이용해 룸에 입장할 수 있습니다. 즉, 로비에서 룸에 입장하고, 룸이 없으면 입장 실패합니다. 로비를 많이 생성했다면 맞는 룸을 찾기 위하여 JoinRandomRoom 함수를 반복해야 할 수 있습니다. 이 메소드는 현재 참여한 로비내에 있는 룸을 찾거나 로비에 있지않는 상태라면 디폴트 로비에서 찾습니다.

 

Bolt : Bolt.Matchmaking.BoltMatchmaking 클래스를 이용합니다. 순서로는 현재 세션 얻어오기->세션 생성하고 갱신하기->만든 세션에 참여하기. 세션에 참여하는 방법은 udp로, 이름으로, 랜덤으로 할 수 있습니다. 

코드예시

세션 얻어오기

세션 생성

세션 참여

 

 

Bolt.Matchmaking.BoltMatchmaking 클래스 API

https://doc-api.photonengine.com/en/bolt/current/class_bolt_1_1_matchmaking_1_1_bolt_matchmaking.html

 

Photon Bolt Engine API: Bolt.Matchmaking.BoltMatchmaking Class Reference

Join a Session in a random fashion. In order to filter the rooms the player can join, you can make use of the UdpSessionFilter class and pass custom parameters. Parameters sessionFilterSession filter parameters tokenJoin Token Example: public void Join(str

doc-api.photonengine.com

 

추천 게임장르

PUN : 퍼즐, 턴베이스 등

 

Bolt : FPS, TPS, 슈팅 등

 

아래 링크에서 플랫폼, 장르, Photon 서비스를 필터링하여 출시된 게임을 확인할 수 있습니다.

https://www.photonengine.com/ko-kr/pun/showcase#allPlatforms-allGenres-allTypes

 

Photon PUN을 이용한 게임 : | Photon Engine

MULTIPLAYER REALTIME PUN BOLT QUANTUM COMMUNICATION CHAT VOICE SELF-HOSTED SERVER 멀티플레이를 간단하게 실현합니다! Photon Realtime 인디/프로 개발자 누구나 실시간 멀티 플레이어 게임을 개발하여 세계로 진출할 수 있습니다. Photon PUN 인디/프로 개발자 누구나 실시간 멀티 플레이어 게임을 개발하여 세계로 진출할 수 있습니다. Photon BOLT 비교불가! Photon B

www.photonengine.com

 

 

요약

PUN : Photon Realtime을 유니티에 매우 적합하게 만든 제품입니다. 네트워킹 경험이 적다면 PUN으로 시작하는 것이 좋습니다.

Bolt : 이벤트 기반의 네트워크 솔루션입니다. 기술문서를 참고하면서 개발하시면 됩니다.

 


 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

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

[Photon Engine]유니티짱을 이용한 Bolt 시작하기  (0) 2019.08.20

 

FPS, 배틀로얄, 액션 게임을 위한 네트워크 엔진 'Photon Bolt'에 대해서 설명해드리려고 합니다.

 

Bolt는 Authoritative movement를 지원합니다. 클라이언트 서버 형식의 게임을 구축하실 경우 , Bolt의 예측가능 기능과 렉(lag) 및 지연을 보상하는 기능을 이용하시면 아주 편리합니다. 그리고 Clientside prediction을 통한 동기화를 구현합니다.

 

어셋 스토어에서 최고의 평가를 받고 있고, 최고 수준의 Unity 네트워킹 솔루션을 하나씩 알아보겠습니다.

 

 

유니티에서 새 프로젝트를 만드세요.

 

 

유니티 어셋스토어 Bolt 다운로드

유니티 어셋스토어에서 'Photon Bolt'를 검색하세요. 그 중 아래 화면과 같이 Bolt Free 버전을 다운로드 받으시면 됩니다.

 

 

Bolt 프로젝트 구성

다운로드, 임포트 후 프로젝트를 보면 아래화면과 같이 구성될 것입니다.

 

Bolt Assets 위자드

유니티 \ Window \ Bolt \ Assets 을 통해서 윈도우를 관리할 수 있습니다.

 

Bolt Editor는 정말 강력합니다.

코딩없이 inspector 설정만으로 구현할 수 있습니다.

강력한 이벤트 시스템을 지원합니다. 수신자에게 이벤트를 보내는 이벤트 시스템이 내장되어 있으며, 구성의 자유도가 매우 높고 구성의 자동화도 지원합니다. 특정 게임 오브젝트를 대상으로 한 이벤트 뿐만 아니라, 글로벌한 이벤트도 지원합니다. 이벤트의 발신에는 3가지 모드가 있습니다(Unreliable、Unreliable Synced、Reliable). 상태 복제는 게임 오브젝트 변형 및 사용자 정의 속성을 자동으로 복제할 수 있습니다. 비쥬얼 에디터를 통해 모든 기능을 깔끔하게 이용할 수 있으며, 이를 통해 상세한 수준으로 속성을 정의 및 커스터마이즈할 수 있습니다. 우선 순위 결정과 스코핑(Scoping)도 지원합니다. Bolt에서는 엔티티의 스코핑(Scoping, 플레이어가 인식하는 엔티티의 결정)과 스코핑된 엔티티의 우선 순위 결정(스코핑된 엔티티가 2개 존재할 경우, 어느 쪽이 플레이어에게 중요한지 그 우선순위를 정함)을 지원합니다.

 

 

유니티 어셋스토어 유니티짱 다운로드

 

 

유니티짱 모델 프리팹만들고 등록

유니티짱 폴더에 있는 프리팹을 Bolt가 컴파일하여 인식하는 폴더에 옮겨주세요.

 

이름 변경해보겠습니다. 물론 그대로 사용하셔도 됩니다.

여기서는 unitychan_dynamic을 'Unitychan'으로 변경했습니다.

 

 

유니티짱 State 만들기

Bolt Assets 위자드에서 우클릭 후 New State를 클릭합니다. 그리고 이름을 UnityChanState로 변경해주세요.

UnityChanState로 들어오시면,

New Property 클릭하여 Property를 하나 생성합니다. 필터를 Transform으로 변경한 후  Replication을 Everyone Except Controller로 변경해주세요.

 

 

 

유니티짱 프리팹 인스펙터에 Bolt Entity 컴포넌트 추가

유니티짱 프리팹에 Bolt Entity를 추가하세요. Prefab Id와 State가 설정되지 않아 에러가 뜹니다. Bolt Assets 컴파일하면 Id 부여받습니다. Id가 부여받은 것을 확인 후 State 선택하세요. 여기서는 IUnityChanState를 선택합니다.

 

 

Bolt Assets 컴파일 

(컴파일 성공)

 

 

 

팁> States에서 중복된 이름이 있으면 컴파일 안됩니다.

예시: CubeState 중복

결과: Duplicate assete name 에러

 

 

이제 코드로 활용할 수 있게 준비를 다 갖추었습니다.

 

 

유니티짱 instantiate

생성할 수 있는 코드는 8가지 입니다. 그 중 몇 가지를 소개합니다.

1. 단순 인스턴스 생성

2. 위치, 방향 지정

 

 

 

이벤트(글로벌) 

Bolt 이벤트 중 글로벌에 대해 알아보겠습니다. Bolt Assets의 Senders를 설정하겠습니다. Global Senders, Entity Senders 를 Everyone 으로 선택해주세요.

 

키보드 이벤트는 Input 클래스를 통해서 받습니다. KeyCode에서 키보드 입력값을 지정할 수 있습니다.

 

OnEvent 함수를 이용해 이벤트를 처리합니다.

처리하고 싶은 이벤트를 구현하시면 됩니다. 여기에서는 로그만 찍어보겠습니다. 아래 그림과 같이 로그가 잘 찍히면 글로벌 이벤트 구현은 잘 하신 것 입니다.

 

 

 

 

 

애니메이션

 

메카니즘 애니메이션 연결을 해보겠습니다. Bolt Assets에서 UnityChanState를 활성화합니다. 아래와 같은 화면이 나오면 됩니다. (Transform은 없어도 됩니다. 없다면 애니메이션 설정 후 Transform을 추가하셔도 됩니다.) 여기서는 Import Mecanim Parameters를 모델의 애니메이션과 연결하겠습니다. 유니티짱 모델의 애니메이션을 찾아서 연결해주세요. (만약 다른 모델을 넣으셨다면 그 모델의 애니메이션을 찾아서 연결해주세요.) 연결을 하면 오른쪽에 Import 버튼이 생성됩니다. 

 

애니메이션을 State 프라퍼티에 임포트하면 아래화면과 같이 Speed, Direction, jump 등 애니메이션에 설정된 값들이 하나씩 나옵니다.

 

 

 

키보드 입력 받아보겠습니다. 앞서 예로 든 키보드는 물론 조이스틱, 마우스, 화살표 등 모든 입력 이벤트를 처리할 수 있습니다.

 

 

 

 

SimulateOwner 함수에서 받은 키 이벤트만큼 위치이동을 하겠습니다.

 

 

빌드 앤 런을 하시면 입력키 이벤트에 동작하는 것을 확인하실 수 있습니다.

감사합니다.

 

 


 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

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

[Photon Engine] PUN vs Bolt  (0) 2019.09.03

포톤 코리아 블로그에서

'유니티짱을 이용한 PUN classic 시작하기' 와 (https://photonkr.tistory.com/6?category=1030095) 매우 유사합니다.

그래서 주의깊게 보셔야 할 곳은 PUN2 부분입니다.

 

 

* 어셋 다운로드 (PUN2, Unity chan)

(유니티 짱 모델도 디렉토리 구조가 변경되었더군요)

 

* App ID 설정

포톤 홈페이지에서 어플리케이션을 생성하고 App ID를 얻습니다.

얻은 App ID를 입력할 위치는 Assets\Photon\PhotonUnityNetworking\Resources\PhotonServersettings 입니다.

만약 어셋스토어에서 PUN2를 다운로드 받는 즉시 뜨는 팝업에서 App ID를 입력하셨다면 이 단계는 뛰어넘으셔도 됩니다.

 

이 단계는 포톤 코리아 블로그 중 '포톤엔진을 유니티에 적용'을 (https://photonkr.tistory.com/13?category=1000133) 참고하세요.

 

 

* Locomotion 씬 오픈

위치는 Assets\unity-chan!\Scenes\Locomotion 입니다.

 

 

* 유니티짱 프리팹화

-컴포넌트 추가 (Photon View, Photon Animator View, Photon Transform View)

 

 

* 유니티짱 스크립트 수정 - UnityChanControlScriptWithRgidBody.cs

-부모 클래스를 MonoBehaviourPun으로 변경(using 키워드에 Photon.Pun 추가)

-FixedUpdate 함수에 조건문 추가(나의 오브젝트만 제어가능하게)

 

* 메인 카메라 수정

-Third Person Camera 비활성화

인스턴스화 되면서 카메라와의 연결이 끊어집니다. 그래서 코드로 다시 활성화를 합니다.

 

 

* 인스턴스화 스크립트 -> 이 부분이 PUN 2에서 달라진 부분입니다.

MatchMaker.cs
0.00MB

 

PUN 2에서는 PUN classic과 달리 Auto Join Lobby 기능이 없어졌습니다.

 

이번에는 Master Server에서 바로 룸으로 가도록 하겠습니다. 

물론 로비로 이동한 후(JoinLobby 함수 이용) 룸으로 가도록 해도 됩니다.

 

일부 코드 설명을 붙이면요.

OnConnectedToMaster 함수를 이용해 마스터 서버 접속합니다.

그리고 나서 룸이 있다면 JoinRandomRoom 함수를 이용해 룸에 입장합니다.

룸에 입장을 하면 Instantiate 함수가 프리팹(오브젝트)을 인스턴스화 합니다.

 

OnConnectedToMaster 

MonoBehaviourPunCallbacks 클래스에 있습니다.

인터페이스로 정의되어 있습니다.

로비 3종류 중 Default 로비에 접속합니다.

 

JoinRandomRoom

콜백으로 OnJoinedRoom 또는 OnJoinRandomFailed 가 호출됩니다.

 

* OnJoinedRoom

MonoBehaviourPunCallbacks 클래스에 있습니다.

인터페이스로 정의되어 있습니다.

 

 

 

* 컨트롤러

하이라키에서 빈 오브젝트 생성 후 이름을 PhotonController 로 변경합니다.

위 MatchMaker.cs 파일을 컴포넌트로 추가합니다.

 

PhotonObject 변수에 프리팹으로 만든 유니티짱을 연결합니다.

 

 

* 빌드 앤 런

 

 

 

감사합니다!

 

 


 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

 

 

'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

보이스챗 둘러보기 포스트(https://photonkr.tistory.com/36?category=1054486)에 이어

보이스챗 적용하기를 해보겠습니다.

 

이번 시간에는 

PUN도 연동하여 프리팹을 생성하고

프리팹에 Photon Voice가 적용되어 보이스챗을 구현해보도록 하겠습니다.

 

 

 

Voice컨트롤러

: 하이라키에서 Create Empty를 이용해 빈 오브젝트 하나 생성 -> 이 오브젝트 이름을 VoiceController로 변경

 

1. 컴포넌트 추가

-Photon Voice Network 컴포넌트

-Recorder 컴포넌트

 

2. 컴포넌트 설정

2.1. Photon Voice Network 컴포넌트

Primary Recorder에 Voice 컨트롤러에 추가한 Recorder를 연결

2.2. Recorder 컴포넌트

Transmit Enabled 체크

Debug Echo 체크

 

Photon Voice Network 컴포넌트

 

Recorder 컴포넌트

 

 

프리팹 만들기

1. 큐브 생성

하이라키에서 3D Object를 이용해 그 중 Cube를 생성 

2. 큐브에 컴포넌트 추가

-PhotonView

-PhotonVoiceView

3. PhotonVoiceView 설정

-UsePrimaryRecorde 체크

-SetupDebugSpeake 체크

 

PUN 컨트롤러

1. 로비.룸 입장

-OnConnectedToMaster()

-PhotonNetwork.JoinRandomRoom()

2. 프리팹 인스턴스화 등등

-PhotonNetwork.Instantiate()

 

MatchMaker.cs
0.00MB

 

 

 

 

빌드 앤 런

1. 큐브 인스펙터

Speaker 컴포넌트가 자동 생성되어 마이크로폰으로 테스트 가능

 

 

 

 

* 최종 하이라키

 

 

참고로 PUN을 같이 사용안하고, 

Photon Voice2만 사용하셔도 됩니다.

 

 


 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

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

[Photon Voice2] 보이스 챗 둘러보기  (1) 2019.06.18

안녕하세요~

이번 포스팅에서는 VR 개발시 

많이 이용하는 Voice를 같이 알아보려고 합니다.

 

* Unity Assets 다운로드&임포트

https://assetstore.unity.com/packages/tools/audio/photon-voice-2-130518

 

 

 

* App ID 설정하기

Photon Voice2를 다운로드&임포트를 하면

위와 같은 위자드가 뜹니다.

App ID나 Email을 준비하셨다면 바로 기입하시면 되고요.

 

조금 후에 설정하고 싶다면,

Assets\Photon\PhotonUnityNetworking에 위치한

PhotonServerSettings를 찾으시면 됩니다.

 

*데모를 살펴보면서 Voice를 하나씩 파악해볼까요?!

 

데모 위치

Assets\PhotonVoice\Demos\DemoVoicePun

씬 명

DemoVoicePUN-Scene

 

빌드&런 전

빌드&런 후

 

마이크로폰은 준비하셨죠?

바로 테스트는 확인이 안되고요.

InGame Settings에

Transmit, VoiceDetection, DebugEcho 

체크를 해주세요.

그러면 이제 테스트 가능합니다.

 

 

그리고 오른쪽 위 카메라 설정도 변경해보세요.

처음 시작은 Orthographic 이고요.

 

Third Person

 

First Person

 

카메라를 따라 사운드도 같이 변경되는 것을 확인할 수 있습니다.

 

 

핵심 컴포넌트 몇 개를 안내해드리겠습니다.

1. Photon Voice Network

PUN과 같이 사용한다면 꼭 필요한 컴포넌트로서, PUNVoice클라이언트 상태를 자동으로 싱크 맞춰주는 역할

2. Recorder

오디오 스트림을 전송하는 컴포넌트

3. Photon Voice View

PUN에 연결(네트워킹)하는 역할

 

 


 

 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

 

 

 

 

 

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

[Photon Voice2]보이스 챗 적용하기  (0) 2019.07.14

<PUNs 비교>

2018년 8월 PUN2가 출시되었습니다.

업데이트 리스트는 아래 링크에서 확인할 수 있어요.

https://doc.photonengine.com/en-us/pun/current/getting-started/migration-notes

 

Migration Notes | Photon Engine

MULTIPLAYER REALTIME PUN BOLT QUANTUM COMMUNICATION CHAT VOICE SELF-HOSTED SERVER We Make Multiplayer Simple Photon Realtime Develop and launch multiplayer games globally whether you are an indie developer or AAA studio. Create synchronous or asynchronous

doc.photonengine.com

 

그 외 더 정리해서 포스팅합니다~

- Asset 다운로드, 임포트 (Classic 버전과 동일하게 Free 앱, Plus 앱 2종류가 있습니다.)

PUN 2 :

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

 

PUN 2 - FREE - Asset Store

Note: Contains breaking changes to existing PUN Classic (v1) projects. Please read our PUN 2 migration notes . In doubt: keep PUN Classic. Photon Unity Networking 2: NEW demos, cleaner API & structure, clear separation of PUN and Realtime API Export to all

assetstore.unity.com

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

 

Photon PUN 2+ - Asset Store

Note: Contains breaking changes to existing PUN Classic (v1) projects. Please read our PUN 2 migration notes . In doubt: keep PUN Classic. Photon Unity Networking 2 - PLUS Version - includes 100 concurrent user Photon Cloud plan for 60 months NEW demos, cl

assetstore.unity.com

 

VS

PUN classic :

https://assetstore.unity.com/packages/tools/network/photon-unity-networking-classic-free-1786

 

Photon Unity Networking Classic - FREE - Asset Store

+++ New to Photon? please get the new PUN 2 package . +++ Already using PUN and not sure if you should switch to PUN 2 ? No worries, we will continue supporting PUN v1 as PUN Classic. If you are short before launch or already invested a lot of time in deve

assetstore.unity.com

https://assetstore.unity.com/packages/tools/network/photon-pun-classic-12080

 

Photon PUN+ Classic - Asset Store

+++ New to Photon? please get the new PUN 2+ package . +++ Already using PUN and not sure if you should switch to PUN 2+ ? No worries, we will continue supporting PUN v1 as PUN Classic and you can upgrade to PUN 2 for free at any time . If you are short be

assetstore.unity.com

 

 

 

 

- PhotonServerSettings

PUN 2 :

App Version필드 생성, Fixed Region은 직접 기입 등등

 

vs

PUN classic :

Hosting 선택, Auto-Join Lobby 선택 등등

 

 

 

-Connect to Master(Photon)

PUN 2 : PhotonNetwork.ConnectUsingSettings ()

vs

PUN classic : PhotonNetwork.ConnectUsingSettings ("[버전]")

 

 

 

-AutoJoinLobby

PUN 2 : 없음

vs

PUN classic : 존재

 

 

 

-콜백함수 사용하기 위해 부모 클래스 상속

PUN 2 : MonoBehaviourPunCallbacks

vs

PUN classic : PUN.MonoBehaviour or MonoBehaviour

 

콜백함수 예시

OnJoinedRoom()

OnJoinRandomFailed()

 

 

 

<PUN 2 업데이트>

- 새로운 데모, 샘플, 파일(디렉토리)

: Unity 2017.2018이후 버전 GUI 사용

- 직관적이고 명확해진 API, 프로그램 구조

: 'Photon' 루트 디렉토리에 정리된 소스

클래스, 콜백, 메소드 등이 리뉴얼

- 구별된 네임스페이스

: PUN, Realtime 레이어에 따라 구별된 API 코드

즉, Photon.PUN, Photon.Realtime

 

 

 

<PUN 2 구조>

- 최상위 레이어

: 네트워크 개체, RPC, 유니티 관련 부분

- 두번째 레이어

: Photon Server, 게이머 페어링 옵션, 통신 API(콜백)

- 세번째 레이어

: DLL(유니티 플러그인), 직렬화, 네트워크 프로토콜.패킷 

 

 

 


 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

https://bitly.kr/photonyoutube

 

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

[PUN]유니티짱을 이용한 PUN2 시작하기  (0) 2019.07.21
[PUN] 매치메이킹  (0) 2019.04.24
[PUN]로비.룸 알아보기  (0) 2018.12.19
[PUN]RPC 알아보기  (0) 2018.12.10
[PUN]VR 프로젝트 구현하기  (0) 2018.07.22

 

안녕하세요

MatchMaking을 알아보겠습니다!

 

매치메이킹이 적용되는 곳은

게임이외에도

소개팅, 택시 등에서 찾아볼 수 있습니다.

 

 

포톤에서 매치메이킹이 되려면,

3가지를 일치시켜야합니다.

1. app version

2. app id

3. region

 

 

 

로비는 자동으로 조인하게 하고,

룸은 아무런 조건을 넣지않고 생성하고

유저는 랜덤으로 룸에 들어가도록 하겠습니다.

 

 

로비 자동으로 들어가게 하는 것은 설정에서 쉽게 할 수 있습니다.

PhotonServerSettings의 Client Settings 아래 Auto-Join Lobby 를 체크하면 됩니다.

 

조건없는 룸 생성방법은

CreateRoom 함수의 인자에 아무것도 안넣으면 됩니다.

 

룸이 생성되었으니

JoinRandomRoom 함수를 이용해

생성된 룸 중에서 랜덤으로 조인하겠습니다.

 

 

참고로

오브젝트 동기화 부분은 

아래 링크에서 확인할 수 있는 포스팅을 참고하시면 됩니다.

 

https://photonkr.tistory.com/6?category=1030095

 

유니티짱을 이용한 PUN 시작하기

<pun(photon unity="" networking)="" 도입=""> 크게 4단계만 따라 오시면, 멀티플레이를 실행할 수 있습니다. 1. 유니티짱 오브젝트 설정 2. PUN 설정 3. 연결 코딩 4. 메인 카메라 설정 먼저, 멀티플레이 게임을 만들 준..</pun(photon>

photonkr.tistory.com

 

 

 

이번에는

지정한 로비로 들어가게 해보겠습니다.

 

조금 전 PhotonServerSettings의 Client Settings 아래 Auto-Join Lobby 에 한 체크를 해제합니다.

그리고 나서

OnConnectedToMaster함수를 이용해 마스터 클라이언트에 접속하도록 합니다.

마스터 클라이언트에 접속하면 JoinLobby 함수를 이용해 로비에 들어가게 합니다.

 

로비에 들어왔으니

룸 생성과 룸 입장은 조금 전과 같이 하면 됩니다.

 

 

주의!)

로비를 너무 많이 생성하면 

매치메이킹이 잘 안될 수도 있습니다!

 

 

 

 

이번에는

룸 생성시 비밀번호를 넣어보겠습니다.

 

로비 입장 방식은 앞에서 알아본 2가지 방식(자동, 수동-마스터 클라이언트-) 중 하나를 고르시면 됩니다.

룸 이름 지정할적에 비밀번호를 같이 부여하면 됩니다.

형식은 [이름]_[비밀번호] 입니다.

 

예제 1

예제 2

 

 

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


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

 

 

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

 

 

★Photon Korea 페이스북

https://www.facebook.com/photoncloudkr

 

 

★Photon Korea 유투브

http://bit.ly/youtube-photonkr

 

 

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

[PUN]유니티짱을 이용한 PUN2 시작하기  (0) 2019.07.21
[PUN]PUN classic VS PUN 2  (0) 2019.05.30
[PUN]로비.룸 알아보기  (0) 2018.12.19
[PUN]RPC 알아보기  (0) 2018.12.10
[PUN]VR 프로젝트 구현하기  (0) 2018.07.22

안녕하세요

포톤 코리아(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' 카테고리의 다른 글

[Photon Chat] 채팅 조금 더 알아보기  (0) 2019.02.02
[Photon Chat]포톤 챗 시작하기(Unity3D)  (2) 2018.06.02
[Photon Chat]챗 이모저모  (0) 2018.06.01

채팅필터

채널




안녕하세요!

이 전 포스팅에서는

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



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

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



이번 포스팅에서는

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




접속

함수: Connect()



유저이름 설정

클래스: AuthenticationValues




채널

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



채널 구독하기 

함수: 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




그리고 위 내용 클래스 파일 첨부합니다~

ChatTest.cs





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

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


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



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

[Photon Chat] 채팅 창 만들기(Unity3D)  (3) 2019.02.07
[Photon Chat]포톤 챗 시작하기(Unity3D)  (2) 2018.06.02
[Photon Chat]챗 이모저모  (0) 2018.06.01

+ Recent posts