[IGC 2016] Photon 운영사무국 - 실시간 게임의 빠른 개발을 위한 솔루션 「Photon」
1. 실시간 게임의 빠른 개발을 위한 솔루션
「Photon」!
~도입 사례도 함께 소개합니다 ~
Inven Game
Conference
2. INDEX
1
Chapter
Photon Engine 소개
by Photon 운영사무국
2
Chapter
Photon in Korea
by Flexball
3
Chapter
Photon Cloud 자동 셋 업
~Photon×GMOAppsCloud~
by GMO 데이터센터 코리아
4. About Me
• 이름: 야마모토 쇼헤이(Syohei Yamamoto)
• 소속: GMO클라우드 주식회사
• 담당: 각종 솔루션 기술
• 취미: 게임과 한국요리 먹방
– 최근 빠져있는 게임: Splatoon(닌텐도)
총 2,000시간 플레이, S+99(カンスト)레벨의 실력!
그 외 오버워치등, FPS/TPS게임 전반을 좋아합니다!
7. 멀티플레이의 요건
• 대전 게임이나 협력 플레이 처럼
• 여러 명의 플레이어가 같은 게임을 동시에 즐길
수 있어야 하고,
• 여러 명의 플레이어(어플리케이션) 간의 통신을
통해, 리얼타임으로 데이터를 주고 받을 필요가
있습니다.
8. 통신에 필요한 정보
• 예를 들면
– 충돌 판정의 결과
– 캐릭터의 위치, 상태 등
• 여러 가지 데이터의
종류가 있지만,
기본적으로는 데이터의
교환/동기가 가능하다면
OK Player A
Playe
r A
Player A
Enem
y
Attac
k
Player
B
Player
C
通知
通知
Playe
r B
9. 실현하고 싶은 것들(아주 간단한 ver.)
• 오른쪽과 같은
프로그래밍
• 송신측이 보낸 임의의
데이터를 수신측이
수신
Player A (송신측)
// 이벤트 정보
ev = "event";
// 이벤트 송신
sendEvent(ev);
Player B (수신측)
// 이벤트 수신 방법
OnReceiveEvent(ev)
{
if (ev == "event") {
// 처리
}
10. 어떻게 실현하지?
• 플레이어 간의 데이터 주고받기는, P2P로 직접
Socket로 연결하면 OK!
– 호스트 관리는? NAT문제는?
• Socket Server를 세운다면?
– Server 코드는 어떻게? 운용은?
등등, 이것저것 귀찮은 일이
한 두가지가 아니죠!
11. 귀찮은 일들은 누군가에게
맡겨버리는게 정답!
• 통신 등, 게임의 본질이 아닌 부분들은 외부에
맡기고, 콘텐츠나 게임 시스템 등 게임의
본질적인 부분에 집중하세요!
• 통신 부분은 Photon에게 맡겨만 주세요!
12. 가능합니다!
• 이벤트는 거의
오른쪽과 같이 아주
간단한 형태로 수신
가능!
• 보내는 곳의 지정이나
그 외 세세한 부분들도
설정 가능 !
Player A (송신측)
// 이벤트 정보
ev = "event";
// 이벤트 송신
sendEvent(ev);
Player B (수신측)
// 이벤트 수신 방법
OnReceiveEvent(ev)
{
if (ev == "event") {
// 무언가 처리
}
13. 연결도 간단!
• 매치 메이킹의 요건에
따라 달라지지만,
심플한 사용 방법의
경우, 단 몇줄로 접속
완료!
• 소켓 같은건 전혀 신경
쓸 필요 없음!
main() {
connect();// Master에 접속
}
onConnectedMaster() {
opJoinRandomRoom(); // 랜덤 매치
}
onFailedJoinRandomRoom() {
opCreateRoom(); // Room이 없으므로 작성
}
onJoinedRoom() {
// Room에 입장하였으므로 실제 처리를 시작
}
14. Photon의 주요 기능
• 로비
– Named 로비
– 매치 메이킹
– 플레이어 검색
• 룸
– 인원 수 제어/ 표시 제어
– 사용자 정의
속성(Custom Property)
• 동기 관련
– 오브젝트 동기
– 이벤트 통지
– RPC
• 외부와의 연계
– Webhooks/WebRPC
– Plugin
15. Photon의 구조
• 모든
클라이언트(=플레이어)
는 서버로 연결
• 서버는 클라이언트 간의
통신을 중개하는 역할
• 서버 자체는 기본적으로
처리 역할은 없으나,
Webhooks나 Plugin을
이용해 커스터마이징도
가능
Photon
Clien
t
Clien
t
Clien
t
SDK SDK SDK
37. 1. 방 생성, 룸매칭 등 커스터마이징 만으로 개발 가능
- 방생성, 쿼리문을 통한 자동매칭 시스템을 적절히 활용
2. 빠른 개발이 가능
- C# 으로 작성되어 개발편의성 증대
- Unity 게임에서 쓰이는 p2p 함수와 PhotonSever 에서 제공하는 p2p 함수가 구조적으로 동일
서버개발자 없이 멀티플레이 게임 개발
CasesinKorea
45. ㈜플렉스볼 CEO &
Photon 한국파트너
futurePlans
• ㈜ 플렉스볼 대표
• ㈜ YJM Entertainment 부사장, Co-founder
• ㈜ 넥슨 사업 실장
• ㈜ 엔씨소프트 마케팅 파트장
• ㈜ CCR 마케팅 파트장
• ProeSports Inc 대표 및 Co-founder
박홍서 대표
53. 1 Photon×GMOAppscloud
서비스 개요
▼Photon의 라인업
클라우
드
미들웨
어
자체 커스텀 로직, 프레임 워크, 자체적으로 관리하고 싶은 경우는 미들웨어 형.
인프라 비용 없이 저렴한 가격에 Photon 서비스를 이용하고 싶은 경우는 클라우드 형.
용도에 맞게 선택 가능합니다.
클라우
드
클라우
드
리얼타임, 멀티플레이어, 매치메이킹 등의 네트워
크 기능을 서버 없이 간단하게 설치하여 이용할 수
있는 네트워크 엔진.
리얼타임, 멀티플레이어, 매치메이킹 등의 네트워크
기능을 자체 관리하거나 호스팅 서버(Windows)에
인스톨해서 이용할 수 있는 네트워크 엔진.
최첨단 Opus코덱을 이용하였으며, 최고 레벨의 오디
오 퀄리티에 VR 혹은 AR 애플리케이션에 최적화된
유저간 보이스채팅을 간단하게 추가할 수 있습니다.
채팅에 특화 된 서비스. 다양한 멤버들 간의 채팅 (길
드 채팅, 개별 채팅) 구현 가능.
54. 1 Photon×GMOAppscloud
GMOAppsCloud의
일본리젼은 Photon 운영 사무국의 권장 환경으로 공인된 클라우드 서버입니다.
「Photon」과 함께 이용 신청 할 수 있습니다.
물론 「Photon」 엔진만 이용 신청하는 것도 가능합니다.
Photon 소개 페이지
https://www.photonengine.kr/
Photon × GMOAppsCloud
56. 1 Photon×GMOAppscloud
Photon Server 간단 셋 업
STEP1
• 서버 (Windows) 구성
STEP2
• Photon SDK 다운로드 + 설치
STEP3
• 로드밸런서 네트워크 설정
STEP4
• Photon Config 설정
STEP5
• 라이센스 다운로드 + 설치
STEP6
• Photon Application 기동
・서버 (Windows) 구성
・라이센스 다운로드 + 설치
・Photon Application 기동
■Before
Photon Server 전자동 셋 업 설치 전・후의 비교
■After
58. 1 Photon×GMOAppscloud
AppsCloud에서 이용시 메리트
2. Photon Server 전자동 셋업 【new】
컨트롤 패널에서 Photon Server가 인스톨 된 서버를 불과 몇 번의 클릭, 몇 분 안에 기
동시킬 수 있습니다. 기동 시 번거로운 네트워크 설정이나 Config 설정도 전자동으로
설정합니다.
3. 24시간 365일 무료 전화 서포트
GMOAppsCloud의 이용 고객에게는 Photon 운영사무국에서는 통상 행하지 않는
전화 서포트를 24시간 365일 체제로 무료 제공 하고 있습니다.
Photon Server의 셋업 방법을 친절하게 서포트 해 드립니다.
4. 데이터 전송량 이용 요금에 상한선
리얼타임이나 멀티 대전 등의 온라인 게임은 많은 데이터 전송량이 요구됩니다.
GMOAppsCloud에서는 데이터 전송량이 아무리 많이 발생하더라도 이용 요금은 30만원/월
(모바일 게임의 경우) 이 상한선입니다.
1. GMOAppsCloud와 PhotonServer 신청시 10%OFF 【new】
Photon과 GMOAppsCloud를 신청하시면 GMOAppsCloud 이용요금을 10%OFF 로
제공합니다.
59. 1 Photon×GMOAppscloud
Contact Us
서비스 이용 에 관한 자세한 내용은 아래로 문의 바랍니다.
GMOAppsCloud https://cloud.gmo-dc.kr/
GMO Datacenter Korea, Inc. https://www.gmo-dc.kr/
Facebook https://www.facebook.com/GMOAppsCloud.k
r
Twitter https://twitter.com/AppsCloudKorea
Web사이트와 SNS에 고객 사례와 최신 정보를 수시로 게재하고 있습니다.
◆ 문의처
TEL:02-522-0813
Mail:info@gmo-dc.kr
클라이언트 로직 사용만으로 멀티 플레이를 구현할 수 있었고,
클라이언트 프로그래머만으로 약 한달만의 시간으로 펀QA의 단계의 게임 플레이를 만들 수 있었다고
합니다.
포톤은 유니티 클라이언트에 맞춘 API를 사용해서 만들어졌기 때문에 호환성 테스트도 최소화 할 수
있었습니다.
다음에 소개드릴 프로젝트는 독립 개발사 폰에서 만든 몬스터 사커라는 게임입니다.
본 게임은 실시간으로 유저끼리 대전을 할 수 있도록 개발 되었구요. 물론 포톤을 사용해서 개발 되었습니다.
보통의 축구 게임과 다르게 화려한 필살기를 쓸 수 있다는 것이 장점입니다.
그리고, 다양한 캐릭터가 존재하는 컬렉팅 요소도 존재합니다.
지금 네이버 앱 스토어에서 테스트를 진행하고 있으니, 다운 받아서 실행해 보시면 포톤이
어떻게 실제로 사용되고 있는지 체험해 보실 수 있습니다.