SlideShare a Scribd company logo
1 of 29
Download to read offline
장르 1 vs 1 실시간 전략 디펜스 게임
목표 상대방의 HQ 파괴
개요
• 3개의 라인에서 일정한 주기마다 로봇이 생성
• 로봇은 자동으로 라인을 따라 상대방의 HQ를 향해 전진
하고 적 로봇을 만나면 전투에 돌입
• 플레이어는 영웅을 소환해 강력한 스킬을 사용
▶ 전장의 상황을 빠르게 파악하고 적재적소에 스킬을
사용하는 라인 관리 능력이 필요
백 성 진
서버 & 클라
이 규 원
클라이언트
최 재 우
서버
클라이언트 메인 로직 구현
게임 전반 기획
UI 및 맵 디자인
클라이언트 – 서버 통신 모듈 제작
애니메이션
VFX, SFX
멤버십 서비스
로비/채팅/게임 서버 관리
다량의 실시간 비동기 통신
클라이언트는 서버를 사용한 3D 게임이라는
서버는 비동기 실시간 통신이라는
새로운 경험을 제 1순위로 선정
마감 2주 전에 기획을 엎어버리면서
무의식적으로만 생각하고 있었던
게임의 재미가 제일 중요한 목표였다는 사실을 깨달음
0 재 미
1 새로운 경험
2 성능, 비주얼 등
백 성 진
서버 & 클라
100% GitHub을 통한 협업 경험
기능이 부족한 Unity Teams의 Collaborate를 사용해서 개발하
는 단계를 넘어 GitHub을 원활하게 사용하는 수준으로 발전
70% JSON, CSV를 활용한 VFX, SFX 데이터 유지 보수
스킬의 종류가 많아짐에 따라 자료 관리의 필요성을 느끼고 사용
JSON과 CSV를 사용해 스킬 정보 및 사운드 관리
90% 클라이언트단 통신 모듈
서버에서 패킷 송신 시 헤더 패킷 ID 분석 후 목적지로 전달
서버로 데이터 송신 시 클래스 요소별로 데이터 세팅 후 송신 요청
100% 3D 온라인이라는 새로운 장르의 게임 개발
많이 경험했던 2D 싱글 게임에서 벗어나 실력 있는 사람들과
새로운 장르의 개발을 통해 도전에 대한 심리적 부담감 탈피
90% 실시간 전략 게임에 대한 게임 디자인 전반을 수행
고민해보지 않았던 장르에 대해 고민할 기회를 갖고 UI나 맵 디자인
등 프로그래밍 외적인 지식 습득
80% 클라이언트 개발자로서 서버에 대한 이해
서버에 대해 전무했던 지식을 보충하고 서버에 대한 이해도를
높여서 온라인 게임 개발력 함양
이 규 원
클라이언트
100% 스스로 하나의 프로젝트에만 열중하기
2달 동안 하나의 프로젝트에만 열중해서 코딩을 해보면서
자신의 한계를 시험하고 극복
100% 처음 접하는 분야에 대한 열정 발휘
이전에 해보지 못했던 ‘게임 서버’라는 분야에 도전해서 열정을
가지고 스스로 공부해가면서 개발
100% 각자의 역할을 충실히 수행하기
팀원들을 믿고 자신이 맡은 역할을 충실히 수행하여 만족스러운
결과 도출
최 재 우
서버
엑스컴을 본따서 1 vs 1 턴제 체스류 게임을 목표
빠른 역할 분담 이후 작업 착수
• 백성진 : Python Socket을 이용한 서버 프로토타입 제작
• 이규원 : Unity로 게임 메인 로직 구현
• 최재우 : Flask를 이용한 멤버십 서비스 구현
1:N 채팅, 유닛 이동 및 공격 정보 전달까지 성공
▶ 1 vs 1 턴제 게임으로는 얻을 수 있는 지적 향상의 수준이 너무 낮다는 피드백
피드백 수용 후 롤과 스타를 섞은 1 vs 1 실시간 AOS 게임으로 변경
한 플레이어가 3명의 영웅을 컨트롤해서 상대방의 HQ를 파괴하는 게임
• 백성진 : 서버-클라 송수신 모듈 구현, 캐릭터 애니메이션 및 스킬 이펙트 작업
• 이규원 : 이동과 스킬 사용 구현, 수신한 데이터로 remote 캐릭터 행동 동기화
• 최재우 : 멤버십 기능 구현 완료, 로비 / 채팅 / 게임 서버 구현
게임의 완성도를 위해 에셋을 구매해서 보기 좋은 게임을 만들기 위해 노력
▶ 게임이 재미가 없다는 의견이 나옴
마감이 2주 남았지만 빠르게 피드백 수용 후 현재의 1 vs 1 디펜스 게임으로 변경
스킬의 개수가 많아지고 그 효과도 다양해짐
자동으로 움직이는 캐릭터의 수도 급증하면서 서버를 비동기 방식으로 전환
서버-클라 테스트에서 생각지도 못했던 통신 에러 발생
• TCP로 빠르게 전송된 packet들이 붙어서 출력되는 현상 발생
• 정상적인 해결법 : packet의 헤더 뒤에 packet size를 붙여서 size 만큼의 정보를 read
• 최종적인 해결법 : padding을 넣어서 인게임에서 사용하는 모든 packet의 size를 37로 통일
Flask를 이용해 게임 클라이언트와 API 통신
이를 이용해 로그인 및 업적 시스템 구현
Flask 서버 피드백 시 MVC 패턴에 맞추기 위해
Flask의 blueprint 기능을 이용
타 게임의 채팅에서 인터넷이 끊겼을 경우에
채팅을 보내도 로컬 클라이언트에 출력이
안되는 것을 확인
▶ 유저가 메시지 입력 시 항상 서버로 전송
▶ 서버에서 모든 유저에게 broadcast
유저끼리 매칭을 맺는 과정에서
수많은 TCP 패킷 전송이
필요하다는 사실을 깨달음
반드시 동기화 되어야하는 요소(유닛 HP) 등을 처리하는 방법에 대한 고민 및 구현
Receive한 패킷을 Deserialize한 후 분류해서 작업
▶ 게임 뿐만 아니라 네트워크 전반에 대한 지식 함양
서버를 통해 주고 받는 패킷의 종류의 다양화
▶ 하나의 개체를 통해 관리 해야할 필요성 대두
▶ Network Manager에서 송/수신 담당
수신
Network Manager는 서버로부터 수신한 데이터
패킷 역직렬화 후 알맞은 Manager에게 전달
송신
Manager는 각 인터페이스에 맞게 패킷 포장 후
네트워크 매니저에게 송신 요청
수많은 로봇이 자동으로 행동
각 로봇이 처한 상황도 천차만별
▶ 최대한 간단하면서 구조화하기 쉽고 버그를 찾기 용이한
Finite State Machine이 필요
기능들을 명확하게 구분/관리
▶ Skill Indicator를 이용해 플레이어가 스킬을
사용할 위치를 선정
▶ 스킬 입력 시 Skill Manager를 통해 서버로
스킬 사용 정보를 전달
▶ 서버로부터 받은 스킬 정보를
토대로 해당 좌표에 영웅을
소환하고 스킬 사용
스킬 정보, 사운드 관리
20종의 스킬의 관리를 위해 JSON과 CSV를 도입
스킬의 모든 정보(선딜, 후딜, 쿨타임, 데미지 등)를 JSON에서 읽는 방식으로 유지 및 보수
THANK YOU

More Related Content

What's hot

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민Hyunjik Bae
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1Tylor Shin
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가Hyun-jik Bae
 
PHP 와 MySQL을 이용한 게임 랭킹 구축하기
PHP 와 MySQL을 이용한 게임 랭킹 구축하기PHP 와 MySQL을 이용한 게임 랭킹 구축하기
PHP 와 MySQL을 이용한 게임 랭킹 구축하기Yo-Chang Song
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFunFactory Inc.
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝NAVER Engineering
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
리액트 적용기
리액트 적용기리액트 적용기
리액트 적용기Hun Yong Song
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신현욱 김
 

What's hot (20)

[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
React vac pattern
React vac patternReact vac pattern
React vac pattern
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
Vingle tech talk #1
Vingle tech talk #1Vingle tech talk #1
Vingle tech talk #1
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
 
PHP 와 MySQL을 이용한 게임 랭킹 구축하기
PHP 와 MySQL을 이용한 게임 랭킹 구축하기PHP 와 MySQL을 이용한 게임 랭킹 구축하기
PHP 와 MySQL을 이용한 게임 랭킹 구축하기
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray)
 
모두의 클라우드 딥러닝
모두의 클라우드 딥러닝모두의 클라우드 딥러닝
모두의 클라우드 딥러닝
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
iFun Deploy 소개
iFun Deploy 소개iFun Deploy 소개
iFun Deploy 소개
 
리액트 적용기
리액트 적용기리액트 적용기
리액트 적용기
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 

Similar to 스마일게이트 서버개발캠프 - SERCLE - Final Fiction

양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까영석 양
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?강 민우
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)GAMENEXT Works
 
Network programming report
Network programming reportNetwork programming report
Network programming reportJongwon
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드Nam Hyeonuk
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담Boram Kim
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기flashscope
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망Vong Sik Kong
 

Similar to 스마일게이트 서버개발캠프 - SERCLE - Final Fiction (20)

양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
 
Network programming report
Network programming reportNetwork programming report
Network programming report
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
피니엔진
피니엔진피니엔진
피니엔진
 
Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드Next 게임 실전 프로젝트 슬라이드
Next 게임 실전 프로젝트 슬라이드
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 

More from ServerDevCamp

스마일게이트 서버개발캠프 - Triple_S - Yoyo
스마일게이트 서버개발캠프 - Triple_S - Yoyo스마일게이트 서버개발캠프 - Triple_S - Yoyo
스마일게이트 서버개발캠프 - Triple_S - YoyoServerDevCamp
 
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS DeckServerDevCamp
 
스마일게이트 서버개발캠프 - ING - Laundry Runner
스마일게이트 서버개발캠프 - ING - Laundry Runner스마일게이트 서버개발캠프 - ING - Laundry Runner
스마일게이트 서버개발캠프 - ING - Laundry RunnerServerDevCamp
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서ServerDevCamp
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers ServerDevCamp
 
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스ServerDevCamp
 

More from ServerDevCamp (6)

스마일게이트 서버개발캠프 - Triple_S - Yoyo
스마일게이트 서버개발캠프 - Triple_S - Yoyo스마일게이트 서버개발캠프 - Triple_S - Yoyo
스마일게이트 서버개발캠프 - Triple_S - Yoyo
 
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck스마일게이트 서버개발캠프 - QuadCore - BTS Deck
스마일게이트 서버개발캠프 - QuadCore - BTS Deck
 
스마일게이트 서버개발캠프 - ING - Laundry Runner
스마일게이트 서버개발캠프 - ING - Laundry Runner스마일게이트 서버개발캠프 - ING - Laundry Runner
스마일게이트 서버개발캠프 - ING - Laundry Runner
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers
 
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스
스마일게이트 서버개발캠프 - 1박2이 - 맞춤법 검사 채팅 서비스
 

스마일게이트 서버개발캠프 - SERCLE - Final Fiction

  • 1.
  • 2.
  • 3. 장르 1 vs 1 실시간 전략 디펜스 게임 목표 상대방의 HQ 파괴 개요 • 3개의 라인에서 일정한 주기마다 로봇이 생성 • 로봇은 자동으로 라인을 따라 상대방의 HQ를 향해 전진 하고 적 로봇을 만나면 전투에 돌입 • 플레이어는 영웅을 소환해 강력한 스킬을 사용 ▶ 전장의 상황을 빠르게 파악하고 적재적소에 스킬을 사용하는 라인 관리 능력이 필요
  • 4. 백 성 진 서버 & 클라 이 규 원 클라이언트 최 재 우 서버 클라이언트 메인 로직 구현 게임 전반 기획 UI 및 맵 디자인 클라이언트 – 서버 통신 모듈 제작 애니메이션 VFX, SFX 멤버십 서비스 로비/채팅/게임 서버 관리 다량의 실시간 비동기 통신
  • 5. 클라이언트는 서버를 사용한 3D 게임이라는 서버는 비동기 실시간 통신이라는 새로운 경험을 제 1순위로 선정 마감 2주 전에 기획을 엎어버리면서 무의식적으로만 생각하고 있었던 게임의 재미가 제일 중요한 목표였다는 사실을 깨달음 0 재 미 1 새로운 경험 2 성능, 비주얼 등
  • 6. 백 성 진 서버 & 클라 100% GitHub을 통한 협업 경험 기능이 부족한 Unity Teams의 Collaborate를 사용해서 개발하 는 단계를 넘어 GitHub을 원활하게 사용하는 수준으로 발전 70% JSON, CSV를 활용한 VFX, SFX 데이터 유지 보수 스킬의 종류가 많아짐에 따라 자료 관리의 필요성을 느끼고 사용 JSON과 CSV를 사용해 스킬 정보 및 사운드 관리 90% 클라이언트단 통신 모듈 서버에서 패킷 송신 시 헤더 패킷 ID 분석 후 목적지로 전달 서버로 데이터 송신 시 클래스 요소별로 데이터 세팅 후 송신 요청
  • 7. 100% 3D 온라인이라는 새로운 장르의 게임 개발 많이 경험했던 2D 싱글 게임에서 벗어나 실력 있는 사람들과 새로운 장르의 개발을 통해 도전에 대한 심리적 부담감 탈피 90% 실시간 전략 게임에 대한 게임 디자인 전반을 수행 고민해보지 않았던 장르에 대해 고민할 기회를 갖고 UI나 맵 디자인 등 프로그래밍 외적인 지식 습득 80% 클라이언트 개발자로서 서버에 대한 이해 서버에 대해 전무했던 지식을 보충하고 서버에 대한 이해도를 높여서 온라인 게임 개발력 함양 이 규 원 클라이언트
  • 8. 100% 스스로 하나의 프로젝트에만 열중하기 2달 동안 하나의 프로젝트에만 열중해서 코딩을 해보면서 자신의 한계를 시험하고 극복 100% 처음 접하는 분야에 대한 열정 발휘 이전에 해보지 못했던 ‘게임 서버’라는 분야에 도전해서 열정을 가지고 스스로 공부해가면서 개발 100% 각자의 역할을 충실히 수행하기 팀원들을 믿고 자신이 맡은 역할을 충실히 수행하여 만족스러운 결과 도출 최 재 우 서버
  • 9. 엑스컴을 본따서 1 vs 1 턴제 체스류 게임을 목표 빠른 역할 분담 이후 작업 착수 • 백성진 : Python Socket을 이용한 서버 프로토타입 제작 • 이규원 : Unity로 게임 메인 로직 구현 • 최재우 : Flask를 이용한 멤버십 서비스 구현 1:N 채팅, 유닛 이동 및 공격 정보 전달까지 성공 ▶ 1 vs 1 턴제 게임으로는 얻을 수 있는 지적 향상의 수준이 너무 낮다는 피드백
  • 10. 피드백 수용 후 롤과 스타를 섞은 1 vs 1 실시간 AOS 게임으로 변경 한 플레이어가 3명의 영웅을 컨트롤해서 상대방의 HQ를 파괴하는 게임 • 백성진 : 서버-클라 송수신 모듈 구현, 캐릭터 애니메이션 및 스킬 이펙트 작업 • 이규원 : 이동과 스킬 사용 구현, 수신한 데이터로 remote 캐릭터 행동 동기화 • 최재우 : 멤버십 기능 구현 완료, 로비 / 채팅 / 게임 서버 구현 게임의 완성도를 위해 에셋을 구매해서 보기 좋은 게임을 만들기 위해 노력 ▶ 게임이 재미가 없다는 의견이 나옴
  • 11. 마감이 2주 남았지만 빠르게 피드백 수용 후 현재의 1 vs 1 디펜스 게임으로 변경 스킬의 개수가 많아지고 그 효과도 다양해짐 자동으로 움직이는 캐릭터의 수도 급증하면서 서버를 비동기 방식으로 전환 서버-클라 테스트에서 생각지도 못했던 통신 에러 발생 • TCP로 빠르게 전송된 packet들이 붙어서 출력되는 현상 발생 • 정상적인 해결법 : packet의 헤더 뒤에 packet size를 붙여서 size 만큼의 정보를 read • 최종적인 해결법 : padding을 넣어서 인게임에서 사용하는 모든 packet의 size를 37로 통일
  • 12.
  • 13.
  • 14.
  • 15. Flask를 이용해 게임 클라이언트와 API 통신 이를 이용해 로그인 및 업적 시스템 구현 Flask 서버 피드백 시 MVC 패턴에 맞추기 위해 Flask의 blueprint 기능을 이용
  • 16. 타 게임의 채팅에서 인터넷이 끊겼을 경우에 채팅을 보내도 로컬 클라이언트에 출력이 안되는 것을 확인 ▶ 유저가 메시지 입력 시 항상 서버로 전송 ▶ 서버에서 모든 유저에게 broadcast
  • 17.
  • 18. 유저끼리 매칭을 맺는 과정에서 수많은 TCP 패킷 전송이 필요하다는 사실을 깨달음
  • 19. 반드시 동기화 되어야하는 요소(유닛 HP) 등을 처리하는 방법에 대한 고민 및 구현 Receive한 패킷을 Deserialize한 후 분류해서 작업 ▶ 게임 뿐만 아니라 네트워크 전반에 대한 지식 함양
  • 20. 서버를 통해 주고 받는 패킷의 종류의 다양화 ▶ 하나의 개체를 통해 관리 해야할 필요성 대두 ▶ Network Manager에서 송/수신 담당
  • 21. 수신 Network Manager는 서버로부터 수신한 데이터 패킷 역직렬화 후 알맞은 Manager에게 전달 송신 Manager는 각 인터페이스에 맞게 패킷 포장 후 네트워크 매니저에게 송신 요청
  • 22. 수많은 로봇이 자동으로 행동 각 로봇이 처한 상황도 천차만별 ▶ 최대한 간단하면서 구조화하기 쉽고 버그를 찾기 용이한 Finite State Machine이 필요 기능들을 명확하게 구분/관리
  • 23.
  • 24. ▶ Skill Indicator를 이용해 플레이어가 스킬을 사용할 위치를 선정 ▶ 스킬 입력 시 Skill Manager를 통해 서버로 스킬 사용 정보를 전달 ▶ 서버로부터 받은 스킬 정보를 토대로 해당 좌표에 영웅을 소환하고 스킬 사용
  • 25.
  • 26.
  • 27. 스킬 정보, 사운드 관리 20종의 스킬의 관리를 위해 JSON과 CSV를 도입 스킬의 모든 정보(선딜, 후딜, 쿨타임, 데미지 등)를 JSON에서 읽는 방식으로 유지 및 보수
  • 28.