SlideShare a Scribd company logo
유니티로 실시간 멀티플레이 게임서버를 

만들 수 있을까?
에이스프로젝트 안현석
INVEN
GAME
CONFERENCE
01
나는 클라이언트 프로그래머
01 나는 클라이언트 프로그래머
나는 클라이언트 프로그래머
피쳐폰 시절부터 모바일 게임 프로그래머로 시작
03 나는 클라이언트 프로그래머
서버 개발 경험은?
단순한 웹기반 랭킹서버
VB / C#으로 소켓 서버 개발해본적 있음
INVEN
GAME
CONFERENCE
02
실시간 게임서버를 만들어야 한다
01 실시간 게임서버를 만들어야 한다
KOCCA 지원사업 선정
실시간 카드배틀 야구게임
1:1 실시간 대전 / 관전
02 실시간 게임서버를 만들어야 한다
제가 한번 해볼게요
실시간 서버 개발이 필요한 상황
잼있을것 같은데? 제가 해볼까요?
내 전문분야는 아니지만... 어떻게 되겠지... ㅋㅋㅋ
03 실시간 게임서버를 만들어야 한다
우리 게임의 특징
실시간 매칭을 통한 1:1 PvP 대전 게임
Turn Base 기반 가위바위보 전략 플레이
실시간 관전 / Replay
04 실시간 게임서버를 만들어야 한다
어떤 서버엔진을 쓸까?
GBaaS
게임 서비스를 위한 인프라를 클라우드 형태로 제공하는 서비스
인증, 매치메이킹, 랭킹등의 기능을 API형태로 클라우드로 제공
Game Spark, Photon Cloud, Amazon Game Lift..
제공하는 범위외의 기능이 필요할시 커스터마이징 어려움
사용량 또는 CCU에 따른 이용금액 지불
설치형 게임서버 엔진
서버엔진을 이용하여 원하는 형태로 직접 개발
대부분의 기능을 직접 개발해야 함
Photon, Proud Net, iFun Engine...
입맛에 맞게 개발 가능
엔진 라이센스 비용만 지불
설치형 게임서버 엔진으로 결정!
VS
클라우드 서비스로 서버관리 이슈가 적음 자체 서버관리 필요
05 실시간 게임서버를 만들어야 한다
유니티 UNet으로 결정
Photon, Proud Net, iFun 등 다양한 게임서버 엔진을 고민하던 중...
모든 조건을 만족시키는 유니티 UNet 발견
C#으로 개발 가능
Mac OS에서 개발 가능
윈도우/리눅스 서버 배포 가능
무료
INVEN
GAME
CONFERENCE
03
유니티로 게임서버를 만들어보자
01 유니티로 게임서버를 만들어보자
유니티 네트워킹
유니티에서 제공하는 네트워킹 API
유니티 멀티플레이어 서비스
매치 메이킹
릴레이 서버
각종 네트워킹 컴포넌트로 에디터에서 멀티플레어 게임 손쉽게 개발 가능
HLAPI / LLAPI 제공으로 고수준에서 저수준의 네트워킹 API 사용 가능
P2P 기반 실시간 멀티플레이 게임 개발에 적합 (RPC)
02 유니티로 게임서버를 만들어보자
하지만 우리가 개발할 서버에 필요한 기능
Match Maker
Room
Turn Base Game Play
AI Bot Player
실시간 관전 / Replay
오브젝트 위치 / 변수 동기화 사용안함
P2P 사용안함
Client / Server 형태 서비스 필요
Turn Base 게임 플레이
03 유니티로 게임서버를 만들어보자
네트워크 클라이언트와 서버
LLAPI를 사용하여 Client / Server 방식의 멀티플레이 개발
Transport Layer API 사용 가능
다수의 통신 채널과 다양한 QoS 설정 가능
유연한 네트워크 토폴리지 설정
로우레벨 NetworkServer, NetworkClient 클래스 직접 사용
원하는 형태로 클라이언트 접속 관리
RPC 이외에도 사용자 정의 네트워크 메세지 전송 가능
바이트 배열 수준의 메세지 송수신 가능
04 유니티로 게임서버를 만들어보자
Network Server 시작
NetworkServer.Listen (serverPort)
서버 시작. 해당 서버포트로 클라이언트 접속 대기 상태
05 유니티로 게임서버를 만들어보자
Network Client 접속
NetworkClient.Connect (serverIp, serverPort)
클라이언트 서버 접속. 해당 서버주소와 포트로 서버에 접속요청.
06 유니티로 게임서버를 만들어보자
Network Connection
NetworkMessage 클래스내 NetworkConnection 정보
07 유니티로 게임서버를 만들어보자
Network Message
MessageBase 상속받아 사용자 정의 메세지 구현
함수를 정의하지 않으면 자동으로 Serialize 함수 생성
Serialize / Deserialize 함수 Override시 직접 구현가능
자동으로 Serialize 되지 않는 데이터 타입
컬렉션

복잡한 클래스
08 유니티로 게임서버를 만들어보자
MsgType 정의
메세지를 구분하기 위한 메세지 ID
시스템에서 정의한 MsgType 보다 큰 값으로 정의해야 함
09 유니티로 게임서버를 만들어보자
네트워크 메세지 보내기
NetworkClient.Send (short messageType, MessageBase msg)
NetworkServer.SendToClient (int connectionId, short messageType, MessageBase msg)
10 유니티로 게임서버를 만들어보자
네트워크 메세지 받기
RegisterHandler 등록 - MsgType, 호출될 함수
해당 메세지를 받으면 등록된 함수가 호출된다
11 유니티로 게임서버를 만들어보자
서버용 스크립트 엔진
다양한 형태의 작전카드 제작을 위한 스크립트 필요
작전카드 종류 100여개 - 일일이 하드코딩 하기 힘들다
유니티용 자바스크립트 인터프리터 탑재
12 유니티로 게임서버를 만들어보자
현재까지 진행상황
Match Maker


Room
Player Manager
1:1 TurnBase
Game Play
기본적인 1:1 대전 플레이 가능
데이터베이스 연동은 자체 API 서버 이용
서버 분산 작업 필요
아직까지는 큰 문제 없이 개발중...
INVEN
GAME
CONFERENCE
04
UNet 소소한 팁
01 UNet 소소한 팁
서버가 잠들어요
유니티 Standalone 빌드는 앱이 비활성화 되면 멈춘다
PlayerSetting -> Resolution and Presentation -> Run In Background 체크
02 UNet 소소한 팁
복잡한 클래스 / 컬렉션이 Serialize 되지 않아요
유니티 메뉴얼에 아래와 같이 명시되어 있음
JSON 사용
메세지 클래스를 JSON으로 Serialize 하고 JSON Data(String)로 전송
Newtonsoft.Json 라이브러리 사용
Client
Message
Server
Message
Message
Base
Message
Base
JSON Serialize
JSON Deserialize
JSON Serialize
JSON Deserialize
JSON Data (String)
03 UNet 소소한 팁
동시에 10명이상 접속되지 않아요
Max Connections 기본설정은 10
NetworkServer.Configure(ConnectionConfig config, int maxConnecions)
NetworkClient도 동일하게 수정해야 한다 (다르면 CRCMismatch 오류 발생)
04 UNet 소소한 팁
다양한 Connection Config 설정
Disconnect Timeout
연결이 끊어진 것으로 간주되기 전까지의 시간 제한을 밀리 초 단위로 정의합니다. 기본값 = 2000입니다.
Packet Size
최대 패킷 크기 (바이트) 패킷은 내부에 여러 메시지를 포함 할 수 있습니다. 기본값 = 1500입니다.
Ping Timeout
keep-alive 패킷 (ping이라고도 함) 사이의 지속 기간을 밀리 초 단위로 정의합니다. 기본값은 500입니다. 
Send Delay
패킷을 보내기 전에 Send ()를 호출 한 후 지연 시간 (밀리 초)을 가져 오거나 설정합니다. 
이 시간 동안 새 메시지가 대기중인 패킷에 결합 될 수 있습니다. 기본값 : 10ms.
INVEN
GAME
CONFERENCE
05
마무리 하며...
01 마무리 하며...
향후 서버구성 계획
Match Maker
API Server


Room
1:1 TurnBase


Room
1:1 TurnBase


Room
1:1 TurnBase


Room
1:1 TurnBase


Room
1:1 TurnBase
………
Amazon Game Lift
Unity Multiplayer
02 마무리하며...
이런 프로젝트라면 유니티를 고려해 보세요
네트웍 속도에 큰 영향을 받지 않는다
오픈 월드나 MMO가 아니다 = 방 기반
하나의 방에 2~6명 정도의 인원이 플레이 한다
우리 게임만의 특별한 게임로직이 있다
Turn Base Game Play 이다
다양한 서버에 배포가 가능해야 한다 (Windows, Mac, Linux)
C#으로 개발하고 싶다
03 마무리하며...
유니티 UNet 참고 레퍼런스
유니티3D 공식 레퍼런스
https://docs.unity3d.com/Manual/UNet.html
UNet bitbucket
https://bitbucket.org/Unity-Technologies/networking/src
04 마무리하며...
걱정이 되지만 기대되는 소식
기존의 HLAPI / LLAPI는 Unity 2018.4 이후 지원 중단
새로운 Networking Layer 발표 예정
기존 LLAPI는 새로운 Networking Layer와 유사하여

마이그레이션이 수월할 것이라고 함
감사합니다.
Thank You
INVEN
GAME
CONFERENCE
에이스프로젝트 안현석

hsahn@aceproject.co.kr

https://www.facebook.com/sonicjn

More Related Content

What's hot

Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
흥배 최
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Amazon Web Services Korea
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
강 민우
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
Seungmo Koo
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
devCAT Studio, NEXON
 
1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들
Jinsub Jung
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
noerror
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
강 민우
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
Hoyoung Choi
 
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
Eunseok Yi
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
Sunyoung Shin
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
iFunFactory Inc.
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양
 

What's hot (20)

Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들1인개발자가되기전알아야할것들
1인개발자가되기전알아야할것들
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
NDC 2016 이은석 - 돌죽을 끓입시다: 창의적 게임개발팀을 위한 왓 스튜디오의 업무 문화
 
스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기스타트업처럼 토이프로젝트하기
스타트업처럼 토이프로젝트하기
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
게임강연정리
게임강연정리게임강연정리
게임강연정리
 

Similar to [IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)KH Park (박경훈)
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Jinuk Kim
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee
 
Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드
Nam Hyeonuk
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
Amazon Web Services Korea
 
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
ServerDevCamp
 
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
Amazon Web Services Korea
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
Core.Today
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
Amazon Web Services Korea
 
피니엔진
피니엔진피니엔진
피니엔진
승우 백
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea Strike
 
Network programming report
Network programming reportNetwork programming report
Network programming report
Jongwon
 
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers 개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
Jinuk Kim
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista Community
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
Kiyoung Moon
 

Similar to [IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까? (20)

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
3일차-닷넷 분산 기술의 이해 (인피니트 강의자료)
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
 
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
AWS 관리형 서비스를 중심으로 한 NCSOFT 와 Reality Reflection의 클라우드 사용기 - AWS Summit Seoul ...
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
AWS로 게임의 공통 기능 개발하기! - 채민관, 김민석, 한준식 :: AWS Game Master 온라인 세미나 #2
 
피니엔진
피니엔진피니엔진
피니엔진
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
Network programming report
Network programming reportNetwork programming report
Network programming report
 
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers 개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
개발자를 위한 네이버 클라우드 플랫폼ㅣNAVER CLOUD PLATFORM for Developers
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 가상 네트워크 (CB-Larva)
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 

More from 강 민우

[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
강 민우
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
강 민우
 
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
강 민우
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
강 민우
 
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
강 민우
 
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
강 민우
 
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
강 민우
 
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
강 민우
 
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
강 민우
 
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
강 민우
 
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
강 민우
 
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
강 민우
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
강 민우
 
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
강 민우
 
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
강 민우
 
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
강 민우
 
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
강 민우
 
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
강 민우
 
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
강 민우
 
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
강 민우
 

More from 강 민우 (20)

[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
 
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
 
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
 
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
 
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
 
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
 
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
 
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
 
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
 
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
 
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
 
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
 
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
 
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
 
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
 

[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?

  • 1. 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까? 에이스프로젝트 안현석
  • 3. 01 나는 클라이언트 프로그래머 나는 클라이언트 프로그래머 피쳐폰 시절부터 모바일 게임 프로그래머로 시작
  • 4. 03 나는 클라이언트 프로그래머 서버 개발 경험은? 단순한 웹기반 랭킹서버 VB / C#으로 소켓 서버 개발해본적 있음
  • 6. 01 실시간 게임서버를 만들어야 한다 KOCCA 지원사업 선정 실시간 카드배틀 야구게임 1:1 실시간 대전 / 관전
  • 7. 02 실시간 게임서버를 만들어야 한다 제가 한번 해볼게요 실시간 서버 개발이 필요한 상황 잼있을것 같은데? 제가 해볼까요? 내 전문분야는 아니지만... 어떻게 되겠지... ㅋㅋㅋ
  • 8. 03 실시간 게임서버를 만들어야 한다 우리 게임의 특징 실시간 매칭을 통한 1:1 PvP 대전 게임 Turn Base 기반 가위바위보 전략 플레이 실시간 관전 / Replay
  • 9. 04 실시간 게임서버를 만들어야 한다 어떤 서버엔진을 쓸까? GBaaS 게임 서비스를 위한 인프라를 클라우드 형태로 제공하는 서비스 인증, 매치메이킹, 랭킹등의 기능을 API형태로 클라우드로 제공 Game Spark, Photon Cloud, Amazon Game Lift.. 제공하는 범위외의 기능이 필요할시 커스터마이징 어려움 사용량 또는 CCU에 따른 이용금액 지불 설치형 게임서버 엔진 서버엔진을 이용하여 원하는 형태로 직접 개발 대부분의 기능을 직접 개발해야 함 Photon, Proud Net, iFun Engine... 입맛에 맞게 개발 가능 엔진 라이센스 비용만 지불 설치형 게임서버 엔진으로 결정! VS 클라우드 서비스로 서버관리 이슈가 적음 자체 서버관리 필요
  • 10. 05 실시간 게임서버를 만들어야 한다 유니티 UNet으로 결정 Photon, Proud Net, iFun 등 다양한 게임서버 엔진을 고민하던 중... 모든 조건을 만족시키는 유니티 UNet 발견 C#으로 개발 가능 Mac OS에서 개발 가능 윈도우/리눅스 서버 배포 가능 무료
  • 12. 01 유니티로 게임서버를 만들어보자 유니티 네트워킹 유니티에서 제공하는 네트워킹 API 유니티 멀티플레이어 서비스 매치 메이킹 릴레이 서버 각종 네트워킹 컴포넌트로 에디터에서 멀티플레어 게임 손쉽게 개발 가능 HLAPI / LLAPI 제공으로 고수준에서 저수준의 네트워킹 API 사용 가능 P2P 기반 실시간 멀티플레이 게임 개발에 적합 (RPC)
  • 13. 02 유니티로 게임서버를 만들어보자 하지만 우리가 개발할 서버에 필요한 기능 Match Maker Room Turn Base Game Play AI Bot Player 실시간 관전 / Replay 오브젝트 위치 / 변수 동기화 사용안함 P2P 사용안함 Client / Server 형태 서비스 필요 Turn Base 게임 플레이
  • 14. 03 유니티로 게임서버를 만들어보자 네트워크 클라이언트와 서버 LLAPI를 사용하여 Client / Server 방식의 멀티플레이 개발 Transport Layer API 사용 가능 다수의 통신 채널과 다양한 QoS 설정 가능 유연한 네트워크 토폴리지 설정 로우레벨 NetworkServer, NetworkClient 클래스 직접 사용 원하는 형태로 클라이언트 접속 관리 RPC 이외에도 사용자 정의 네트워크 메세지 전송 가능 바이트 배열 수준의 메세지 송수신 가능
  • 15. 04 유니티로 게임서버를 만들어보자 Network Server 시작 NetworkServer.Listen (serverPort) 서버 시작. 해당 서버포트로 클라이언트 접속 대기 상태
  • 16. 05 유니티로 게임서버를 만들어보자 Network Client 접속 NetworkClient.Connect (serverIp, serverPort) 클라이언트 서버 접속. 해당 서버주소와 포트로 서버에 접속요청.
  • 17. 06 유니티로 게임서버를 만들어보자 Network Connection NetworkMessage 클래스내 NetworkConnection 정보
  • 18. 07 유니티로 게임서버를 만들어보자 Network Message MessageBase 상속받아 사용자 정의 메세지 구현 함수를 정의하지 않으면 자동으로 Serialize 함수 생성 Serialize / Deserialize 함수 Override시 직접 구현가능 자동으로 Serialize 되지 않는 데이터 타입 컬렉션 복잡한 클래스
  • 19. 08 유니티로 게임서버를 만들어보자 MsgType 정의 메세지를 구분하기 위한 메세지 ID 시스템에서 정의한 MsgType 보다 큰 값으로 정의해야 함
  • 20. 09 유니티로 게임서버를 만들어보자 네트워크 메세지 보내기 NetworkClient.Send (short messageType, MessageBase msg) NetworkServer.SendToClient (int connectionId, short messageType, MessageBase msg)
  • 21. 10 유니티로 게임서버를 만들어보자 네트워크 메세지 받기 RegisterHandler 등록 - MsgType, 호출될 함수 해당 메세지를 받으면 등록된 함수가 호출된다
  • 22. 11 유니티로 게임서버를 만들어보자 서버용 스크립트 엔진 다양한 형태의 작전카드 제작을 위한 스크립트 필요 작전카드 종류 100여개 - 일일이 하드코딩 하기 힘들다 유니티용 자바스크립트 인터프리터 탑재
  • 23. 12 유니티로 게임서버를 만들어보자 현재까지 진행상황 Match Maker 
 Room Player Manager 1:1 TurnBase Game Play 기본적인 1:1 대전 플레이 가능 데이터베이스 연동은 자체 API 서버 이용 서버 분산 작업 필요 아직까지는 큰 문제 없이 개발중...
  • 25. 01 UNet 소소한 팁 서버가 잠들어요 유니티 Standalone 빌드는 앱이 비활성화 되면 멈춘다 PlayerSetting -> Resolution and Presentation -> Run In Background 체크
  • 26. 02 UNet 소소한 팁 복잡한 클래스 / 컬렉션이 Serialize 되지 않아요 유니티 메뉴얼에 아래와 같이 명시되어 있음 JSON 사용 메세지 클래스를 JSON으로 Serialize 하고 JSON Data(String)로 전송 Newtonsoft.Json 라이브러리 사용 Client Message Server Message Message Base Message Base JSON Serialize JSON Deserialize JSON Serialize JSON Deserialize JSON Data (String)
  • 27. 03 UNet 소소한 팁 동시에 10명이상 접속되지 않아요 Max Connections 기본설정은 10 NetworkServer.Configure(ConnectionConfig config, int maxConnecions) NetworkClient도 동일하게 수정해야 한다 (다르면 CRCMismatch 오류 발생)
  • 28. 04 UNet 소소한 팁 다양한 Connection Config 설정 Disconnect Timeout 연결이 끊어진 것으로 간주되기 전까지의 시간 제한을 밀리 초 단위로 정의합니다. 기본값 = 2000입니다. Packet Size 최대 패킷 크기 (바이트) 패킷은 내부에 여러 메시지를 포함 할 수 있습니다. 기본값 = 1500입니다. Ping Timeout keep-alive 패킷 (ping이라고도 함) 사이의 지속 기간을 밀리 초 단위로 정의합니다. 기본값은 500입니다.  Send Delay 패킷을 보내기 전에 Send ()를 호출 한 후 지연 시간 (밀리 초)을 가져 오거나 설정합니다.  이 시간 동안 새 메시지가 대기중인 패킷에 결합 될 수 있습니다. 기본값 : 10ms.
  • 30. 01 마무리 하며... 향후 서버구성 계획 Match Maker API Server 
 Room 1:1 TurnBase 
 Room 1:1 TurnBase 
 Room 1:1 TurnBase 
 Room 1:1 TurnBase 
 Room 1:1 TurnBase ……… Amazon Game Lift Unity Multiplayer
  • 31. 02 마무리하며... 이런 프로젝트라면 유니티를 고려해 보세요 네트웍 속도에 큰 영향을 받지 않는다 오픈 월드나 MMO가 아니다 = 방 기반 하나의 방에 2~6명 정도의 인원이 플레이 한다 우리 게임만의 특별한 게임로직이 있다 Turn Base Game Play 이다 다양한 서버에 배포가 가능해야 한다 (Windows, Mac, Linux) C#으로 개발하고 싶다
  • 32. 03 마무리하며... 유니티 UNet 참고 레퍼런스 유니티3D 공식 레퍼런스 https://docs.unity3d.com/Manual/UNet.html UNet bitbucket https://bitbucket.org/Unity-Technologies/networking/src
  • 33. 04 마무리하며... 걱정이 되지만 기대되는 소식 기존의 HLAPI / LLAPI는 Unity 2018.4 이후 지원 중단 새로운 Networking Layer 발표 예정 기존 LLAPI는 새로운 Networking Layer와 유사하여 마이그레이션이 수월할 것이라고 함