SlideShare une entreprise Scribd logo
1  sur  25
게임 실전 프로젝트
김성연
김연우
남현욱
박수빈
Special Thanks to 구승모 교수님
목표
프로젝트의 과제
비동기 대전을 지원하는 scalable game server & client
우리의 목표
하스스톤 AI 대전 시뮬레이터
AI 대전 결과를 시각화해서 보여주는 하스스톤 클라이언트
하스스톤?
서버 편
• Scalable 비동기 서버를 만들자
• AI를 만들자
Scalable 비동기 서버 만들기
비동기 서버 : 웹 Http통신 으로
 C# NancyFx 웹 프레임워크
Scalable한 서버 : AWS 활용
 AWS Elastic Beanstalk
Scalable한 read/write를 위한 DB활용 : NoSQL 활용
 Amazon DynamoDB
AI 만들기
하스스톤 플레이어 AI를 만들자
1. 선택과 상태의 그래프로 만들자
2. 게임의 상태를 수치화하자
3. AI를 최적화하자
선택과 상태의 그래프로 만들자
하스스톤의 그래프 화
하스스톤은 결국 상황 판단과 선택으로 귀결된다.
현재 상태를 시작 정점으로
가능한 선택지를 간선으로
선택으로 만들어지는 가능 상태를 정점들로
게임 상태를 수치화 하자
게임의 상태를 수치로 해석 할 수 있다.
플레이어에게 유리한 정도를 해석하여 숫자로 만들자.
기본적인 환산 기준은 하수인의 공체합
다른 속성들은 변환 가능한 공체 수치로 환산하여 계산한다.
상대와 나의 환산값을 비교하여 현재 상태를 평가한다.
AI를 최적화 하자
게임을 그래프화 시키고 각 정점의 가치를 평가할 수 있다.
이제 AI가 해야하는 일은 최적의 길을 찾는 것
시작 정점에서 도달할 수 있는 가장 가치가 높은 정점을 찾는 것
모든 가능한 정점들을 고려하는 것은 지나치게 방대하다.
길찾기를 최적화 하는 것이 필요하다.
길찾기의 최적화
시작 정점으로 부터 고려하는 선택의 깊이(개수)를 제한한다.
상태에 대한 평가는 시뮬레이션을 거치기 때문에 비용이 크다.
선택의 깊이가 늘어날 수록 평가 개수가 지수에 비례하여 증가한다.
성능과 효과를 저울질 하여 적정선의 깊이로 제한한다.
통계적으로 현재 경로의 가능성을 판단하고 가지치기 한다.
Server 성능 테스트 결과
1개의 match 요청에 대해서  0.1 ~ 0.3 sec
1개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  약 60 sec (모두 완료까지)
4개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  약 5 ~ 7 sec
10개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  0.5 ~ 1 sec
클라이언트 편
• 하스스톤 클라이언트를 만들어 보자
• Unity 에서 쉐이더를 적용시켜 보자
하스스톤 클라이언트 만들기
클라이언트 기본 구조
서버에 저장된 덱으로 match를 신청하고
런처(launcher) 클라이언트  C# WinForm 기반
결과를 json으로 받아서 play한다.
하스스톤 플레이 클라이언트  Unity 엔진 기반
Unity에서 하스스톤 만들기
Unity의 라이브러리인 NGUI를 기반으로 제작
NGUI 는 원래 UI 전용 라이브러리
그에 따른 장점과 단점이 존재
NGUI 기반 게임 제작의 장점
2D 게임 처럼 단순하게 제작가능
1. Grid의 자동 정렬 기능
2. 스프라이트 아틀라스 기능
3. 쉬운 Depth기반 그리기 작업
NGUI 기반 게임 제작의 단점
쉐이더 작업이 어려움
1. DrawCall은 스프라이트가 갱신될 때만
 동적인 쉐이더 적용이 어려움
2. 스프라이트들의 메테리얼은 아틀라스 단위로 묶여있음
 개별 스프라이트 쉐이더 작업이 어려움
Unity에서 Shader 적용시키기
타서 없어지는 카드를 쉐이더로 구현
 BurnDissolve Shader
카드와 미니언의 테두리를 쉐이더로 구현
 Outline Shader
BurnDissolve Shader
카드를 태워서 없애는 쉐이더
BurnDissolve Shader
구현방식
1. 기본 텍스처와 타는 모양의 텍스처, 그리고 타는 색깔 텍스처를 사용
2. 기본 텍스처를 그릴 때 해당 위치의 타는 모양 텍스처의 색상값을 읽는다.
3. 타는 모양 색상값을 현재 타 들어가는 정도와 비교한다.
4. 비교 값에 따라서 기본 텍스처 대신 타는 색깔 텍스처의 색상을 적용한다.
Outline Shader
카드와 미니언의 테두리를 씌우는 쉐이더
Outline Shader
구현방식
1. 외곽선 두께와 외곽선 색상을 설정한다.
2. 그려야하는 픽셀 위치에서 외곽선 두께 만큼 떨어진 곳의 알파값을 읽는다.
3. 상하좌우중 하나라도 알파값이 0 이상이라면 미리 외곽선 색깔로 칠한다.
4. 그리고 그위에 기존 텍스쳐를 그린다.
후기
• 실전 프로젝트 마무리 소감
후기
좋았던 점
1. C#으로 서버를 짜는 거나, AWS 배포 등을 처음으로 해보면서 많은 걸 배움
2. 평소에 많이 하던 게임이 실제로 어떤 로직을 거쳐 돌아가는 지 생각해 볼
수 있는 기회였음
후기
아쉬웠던 점
1. 취직 시즌이 겹치면서 프로젝트 중 후반에 마무리를 제대로 못함
2. 처음에 기술 선택과 프로젝트 구조 잡는 게 정말 중요하다는 걸 다시 한 번
느낌
시연 영상

Contenu connexe

Tendances

이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오KwangSam Kim
 
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013devCAT Studio, NEXON
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스Seungmo Koo
 
두더지 정복자 포스트모템
두더지 정복자 포스트모템두더지 정복자 포스트모템
두더지 정복자 포스트모템snugdc
 
포트폴리오(엘리멘탈 샤드)-구철회
포트폴리오(엘리멘탈 샤드)-구철회포트폴리오(엘리멘탈 샤드)-구철회
포트폴리오(엘리멘탈 샤드)-구철회종무 강
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?KwangSam Kim
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011devCAT Studio, NEXON
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
[Kgc12] 게임 개발자 랩소디 박민근
[Kgc12] 게임 개발자 랩소디 박민근[Kgc12] 게임 개발자 랩소디 박민근
[Kgc12] 게임 개발자 랩소디 박민근MinGeun Park
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316Rhea Strike
 
Game system design using Table
Game system design using TableGame system design using Table
Game system design using TableDavid Byun
 
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016devCAT Studio, NEXON
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트Kalito Viscra
 
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담Boram Kim
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 

Tendances (20)

이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
Unity 시작하기
Unity 시작하기Unity 시작하기
Unity 시작하기
 
내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오
 
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013
정희석, 셰이더 리소스 빌드 자동화 할 수 없나요?, NDC2013
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스
 
두더지 정복자 포스트모템
두더지 정복자 포스트모템두더지 정복자 포스트모템
두더지 정복자 포스트모템
 
포트폴리오(엘리멘탈 샤드)-구철회
포트폴리오(엘리멘탈 샤드)-구철회포트폴리오(엘리멘탈 샤드)-구철회
포트폴리오(엘리멘탈 샤드)-구철회
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
[Kgc12] 게임 개발자 랩소디 박민근
[Kgc12] 게임 개발자 랩소디 박민근[Kgc12] 게임 개발자 랩소디 박민근
[Kgc12] 게임 개발자 랩소디 박민근
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316
 
Game system design using Table
Game system design using TableGame system design using Table
Game system design using Table
 
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
NDC 17: [크루세이더 퀘스트] 스토어 차트 역주행 후일담
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 

En vedette

구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)Nam Hyeonuk
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15Nam Hyeonuk
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해Nam Hyeonuk
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Nam Hyeonuk
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object poolingNam Hyeonuk
 
Stl vector, list, map
Stl vector, list, mapStl vector, list, map
Stl vector, list, mapNam Hyeonuk
 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPJae Woo Woo
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1연우 김
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io modelNam Hyeonuk
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016Taehoon Kim
 
BoB Information Security Conference
BoB Information Security Conference BoB Information Security Conference
BoB Information Security Conference 남준 김
 
Age Of Empires II : Age Of Kings Postmotem
Age Of Empires II : Age Of Kings PostmotemAge Of Empires II : Age Of Kings Postmotem
Age Of Empires II : Age Of Kings PostmotemNam Hyeonuk
 

En vedette (20)

구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)구문과 의미론(정적 의미론까지)
구문과 의미론(정적 의미론까지)
 
Haskell study 15
Haskell study 15Haskell study 15
Haskell study 15
 
Multi thread
Multi threadMulti thread
Multi thread
 
Iocp 기본 구조 이해
Iocp 기본 구조 이해Iocp 기본 구조 이해
Iocp 기본 구조 이해
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
Haskell study 0
Haskell study 0Haskell study 0
Haskell study 0
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object pooling
 
Stl vector, list, map
Stl vector, list, mapStl vector, list, map
Stl vector, list, map
 
C++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAPC++ VECTOR, LIST, MAP
C++ VECTOR, LIST, MAP
 
Database
DatabaseDatabase
Database
 
Effective C++ Chaper 1
Effective C++ Chaper 1Effective C++ Chaper 1
Effective C++ Chaper 1
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 
BoB Information Security Conference
BoB Information Security Conference BoB Information Security Conference
BoB Information Security Conference
 
Age Of Empires II : Age Of Kings Postmotem
Age Of Empires II : Age Of Kings PostmotemAge Of Empires II : Age Of Kings Postmotem
Age Of Empires II : Age Of Kings Postmotem
 
Haskell study 2
Haskell study 2Haskell study 2
Haskell study 2
 
Haskell study 1
Haskell study 1Haskell study 1
Haskell study 1
 
Semantic web
Semantic webSemantic web
Semantic web
 

Similaire à Next 게임 실전 프로젝트 슬라이드

Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
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
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까영석 양
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?강 민우
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012devCAT Studio, NEXON
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개진현 조
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final FictionServerDevCamp
 
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)GAMENEXT Works
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망Vong Sik Kong
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망gueste9d250
 

Similaire à Next 게임 실전 프로젝트 슬라이드 (20)

Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
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...
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발iOS7 Sprite Kit을 이용한 게임 개발
iOS7 Sprite Kit을 이용한 게임 개발
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들수 있을까
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
 
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
전형규, 가성비 좋은 렌더링 테크닉 10선, NDC2012
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개[1002 조진현]unity3d 소개
[1002 조진현]unity3d 소개
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction스마일게이트 서버개발캠프 - SERCLE - Final Fiction
스마일게이트 서버개발캠프 - SERCLE - Final Fiction
 
Cyberpunk2165
Cyberpunk2165Cyberpunk2165
Cyberpunk2165
 
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
[GAMENEXT] 클랜워즈 포스트모템 (큐빅스튜디오)
 
Java term project
Java term projectJava term project
Java term project
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 

Plus de Nam Hyeonuk

Plus de Nam Hyeonuk (15)

Haskell study 14
Haskell study 14Haskell study 14
Haskell study 14
 
Haskell study 13
Haskell study 13Haskell study 13
Haskell study 13
 
Haskell study 12
Haskell study 12Haskell study 12
Haskell study 12
 
Haskell study 11
Haskell study 11Haskell study 11
Haskell study 11
 
Haskell study 10
Haskell study 10Haskell study 10
Haskell study 10
 
Haskell study 9
Haskell study 9Haskell study 9
Haskell study 9
 
Haskell study 8
Haskell study 8Haskell study 8
Haskell study 8
 
Haskell study 7
Haskell study 7Haskell study 7
Haskell study 7
 
Haskell study 6
Haskell study 6Haskell study 6
Haskell study 6
 
Haskell study 5
Haskell study 5Haskell study 5
Haskell study 5
 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
Haskell study 3
Haskell study 3Haskell study 3
Haskell study 3
 
Exception&log
Exception&logException&log
Exception&log
 
Iocp advanced
Iocp advancedIocp advanced
Iocp advanced
 
Gpg 1.1
Gpg 1.1Gpg 1.1
Gpg 1.1
 

Next 게임 실전 프로젝트 슬라이드

  • 2. 목표 프로젝트의 과제 비동기 대전을 지원하는 scalable game server & client 우리의 목표 하스스톤 AI 대전 시뮬레이터 AI 대전 결과를 시각화해서 보여주는 하스스톤 클라이언트
  • 4. 서버 편 • Scalable 비동기 서버를 만들자 • AI를 만들자
  • 5. Scalable 비동기 서버 만들기 비동기 서버 : 웹 Http통신 으로  C# NancyFx 웹 프레임워크 Scalable한 서버 : AWS 활용  AWS Elastic Beanstalk Scalable한 read/write를 위한 DB활용 : NoSQL 활용  Amazon DynamoDB
  • 6. AI 만들기 하스스톤 플레이어 AI를 만들자 1. 선택과 상태의 그래프로 만들자 2. 게임의 상태를 수치화하자 3. AI를 최적화하자
  • 7. 선택과 상태의 그래프로 만들자 하스스톤의 그래프 화 하스스톤은 결국 상황 판단과 선택으로 귀결된다. 현재 상태를 시작 정점으로 가능한 선택지를 간선으로 선택으로 만들어지는 가능 상태를 정점들로
  • 8. 게임 상태를 수치화 하자 게임의 상태를 수치로 해석 할 수 있다. 플레이어에게 유리한 정도를 해석하여 숫자로 만들자. 기본적인 환산 기준은 하수인의 공체합 다른 속성들은 변환 가능한 공체 수치로 환산하여 계산한다. 상대와 나의 환산값을 비교하여 현재 상태를 평가한다.
  • 9. AI를 최적화 하자 게임을 그래프화 시키고 각 정점의 가치를 평가할 수 있다. 이제 AI가 해야하는 일은 최적의 길을 찾는 것 시작 정점에서 도달할 수 있는 가장 가치가 높은 정점을 찾는 것 모든 가능한 정점들을 고려하는 것은 지나치게 방대하다. 길찾기를 최적화 하는 것이 필요하다.
  • 10. 길찾기의 최적화 시작 정점으로 부터 고려하는 선택의 깊이(개수)를 제한한다. 상태에 대한 평가는 시뮬레이션을 거치기 때문에 비용이 크다. 선택의 깊이가 늘어날 수록 평가 개수가 지수에 비례하여 증가한다. 성능과 효과를 저울질 하여 적정선의 깊이로 제한한다. 통계적으로 현재 경로의 가능성을 판단하고 가지치기 한다.
  • 11. Server 성능 테스트 결과 1개의 match 요청에 대해서  0.1 ~ 0.3 sec 1개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  약 60 sec (모두 완료까지) 4개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  약 5 ~ 7 sec 10개 시뮬레이션 서버 인스턴스(EC2)로 100개 요청  0.5 ~ 1 sec
  • 12. 클라이언트 편 • 하스스톤 클라이언트를 만들어 보자 • Unity 에서 쉐이더를 적용시켜 보자
  • 13. 하스스톤 클라이언트 만들기 클라이언트 기본 구조 서버에 저장된 덱으로 match를 신청하고 런처(launcher) 클라이언트  C# WinForm 기반 결과를 json으로 받아서 play한다. 하스스톤 플레이 클라이언트  Unity 엔진 기반
  • 14. Unity에서 하스스톤 만들기 Unity의 라이브러리인 NGUI를 기반으로 제작 NGUI 는 원래 UI 전용 라이브러리 그에 따른 장점과 단점이 존재
  • 15. NGUI 기반 게임 제작의 장점 2D 게임 처럼 단순하게 제작가능 1. Grid의 자동 정렬 기능 2. 스프라이트 아틀라스 기능 3. 쉬운 Depth기반 그리기 작업
  • 16. NGUI 기반 게임 제작의 단점 쉐이더 작업이 어려움 1. DrawCall은 스프라이트가 갱신될 때만  동적인 쉐이더 적용이 어려움 2. 스프라이트들의 메테리얼은 아틀라스 단위로 묶여있음  개별 스프라이트 쉐이더 작업이 어려움
  • 17. Unity에서 Shader 적용시키기 타서 없어지는 카드를 쉐이더로 구현  BurnDissolve Shader 카드와 미니언의 테두리를 쉐이더로 구현  Outline Shader
  • 19. BurnDissolve Shader 구현방식 1. 기본 텍스처와 타는 모양의 텍스처, 그리고 타는 색깔 텍스처를 사용 2. 기본 텍스처를 그릴 때 해당 위치의 타는 모양 텍스처의 색상값을 읽는다. 3. 타는 모양 색상값을 현재 타 들어가는 정도와 비교한다. 4. 비교 값에 따라서 기본 텍스처 대신 타는 색깔 텍스처의 색상을 적용한다.
  • 20. Outline Shader 카드와 미니언의 테두리를 씌우는 쉐이더
  • 21. Outline Shader 구현방식 1. 외곽선 두께와 외곽선 색상을 설정한다. 2. 그려야하는 픽셀 위치에서 외곽선 두께 만큼 떨어진 곳의 알파값을 읽는다. 3. 상하좌우중 하나라도 알파값이 0 이상이라면 미리 외곽선 색깔로 칠한다. 4. 그리고 그위에 기존 텍스쳐를 그린다.
  • 22. 후기 • 실전 프로젝트 마무리 소감
  • 23. 후기 좋았던 점 1. C#으로 서버를 짜는 거나, AWS 배포 등을 처음으로 해보면서 많은 걸 배움 2. 평소에 많이 하던 게임이 실제로 어떤 로직을 거쳐 돌아가는 지 생각해 볼 수 있는 기회였음
  • 24. 후기 아쉬웠던 점 1. 취직 시즌이 겹치면서 프로젝트 중 후반에 마무리를 제대로 못함 2. 처음에 기술 선택과 프로젝트 구조 잡는 게 정말 중요하다는 걸 다시 한 번 느낌

Notes de l'éditeur

  1. 동영상 보면서 하스스톤 기본 개념 간략하게 설명(공체합 / 카드 / 승리 조건 등등 단순한 것들만 빠르게.. 1분정도?)
  2. 프레임 워크 간단한 소개(할 것도 없지만), Elastic Beanstalk 어떻게 썼고 DynamoDB를 뭐하는데 썼고 하는 간단간단한 내용만 설명