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

25
게게 게게 게게게게 게게게 게게게 게게게 게게게 Special Thanks to 게게게 게게게

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

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

게임 실전 프로젝트김성연김연우남현욱박수빈

Special Thanks to 구승모 교수님

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

목표 프로젝트의 과제 비동기 대전을 지원하는 scalable game server & client

우리의 목표 하스스톤 AI 대전 시뮬레이터 AI 대전 결과를 시각화해서 보여주는 하스스톤 클라이언트

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

하스스톤 ?

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

서버 편• Scalable 비동기 서버를 만들자• AI 를 만들자

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

Scalable 비동기 서버 만들기 비동기 서버 : 웹 Http 통신 으로 C# NancyFx 웹 프레임워크

Scalable 한 서버 : AWS 활용 AWS Elastic Beanstalk

Scalable 한 read/write 를 위한 DB 활용 : NoSQL 활용 Amazon DynamoDB

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

AI 만들기 하스스톤 플레이어 AI 를 만들자 1. 선택과 상태의 그래프로 만들자 2. 게임의 상태를 수치화하자 3. AI 를 최적화하자

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

선택과 상태의 그래프로 만들자 하스스톤의 그래프 화 하스스톤은 결국 상황 판단과 선택으로 귀결된다 .

현재 상태를 시작 정점으로 가능한 선택지를 간선으로 선택으로 만들어지는 가능 상태를 정점들로

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

게임 상태를 수치화 하자 게임의 상태를 수치로 해석 할 수 있다 .

플레이어에게 유리한 정도를 해석하여 숫자로 만들자 .

기본적인 환산 기준은 하수인의 공체합 다른 속성들은 변환 가능한 공체 수치로 환산하여 계산한다 .

상대와 나의 환산값을 비교하여 현재 상태를 평가한다 .

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

AI 를 최적화 하자 게임을 그래프화 시키고 각 정점의 가치를 평가할 수 있다 .

이제 AI 가 해야하는 일은 최적의 길을 찾는 것 시작 정점에서 도달할 수 있는 가장 가치가 높은 정점을 찾는 것 모든 가능한 정점들을 고려하는 것은 지나치게 방대하다 .

길찾기를 최적화 하는 것이 필요하다 .

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

길찾기의 최적화 시작 정점으로 부터 고려하는 선택의 깊이 ( 개수 ) 를 제한한다 .

상태에 대한 평가는 시뮬레이션을 거치기 때문에 비용이 크다 .

선택의 깊이가 늘어날 수록 평가 개수가 지수에 비례하여 증가한다 .

성능과 효과를 저울질 하여 적정선의 깊이로 제한한다 .

통계적으로 현재 경로의 가능성을 판단하고 가지치기 한다 .

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

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

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

클라이언트 편• 하스스톤 클라이언트를 만들어 보자• Unity 에서 쉐이더를 적용시켜 보자

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

하스스톤 클라이언트 만들기 클라이언트 기본 구조 서버에 저장된 덱으로 match 를 신청하고 런처 (launcher) 클라이언트 C# WinForm 기반 결과를 json 으로 받아서 play 한다 . 하스스톤 플레이 클라이언트 Unity 엔진 기반

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

Unity 에서 하스스톤 만들기 Unity 의 라이브러리인 NGUI 를 기반으로 제작 NGUI 는 원래 UI 전용 라이브러리 그에 따른 장점과 단점이 존재

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

NGUI 기반 게임 제작의 장점 2D 게임 처럼 단순하게 제작가능 1. Grid 의 자동 정렬 기능 2. 스프라이트 아틀라스 기능 3. 쉬운 Depth 기반 그리기 작업

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

NGUI 기반 게임 제작의 단점 쉐이더 작업이 어려움 1. DrawCall 은 스프라이트가 갱신될 때만 동적인 쉐이더 적용이 어려움 2. 스프라이트들의 메테리얼은 아틀라스 단위로 묶여있음 개별 스프라이트 쉐이더 작업이 어려움

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

Unity 에서 Shader 적용시키기 타서 없어지는 카드를 쉐이더로 구현 BurnDissolve Shader

카드와 미니언의 테두리를 쉐이더로 구현 Outline Shader

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

BurnDissolve Shader 카드를 태워서 없애는 쉐이더

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

BurnDissolve Shader 구현방식 1. 기본 텍스처와 타는 모양의 텍스처 , 그리고 타는 색깔 텍스처를 사용 2. 기본 텍스처를 그릴 때 해당 위치의 타는 모양 텍스처의 색상값을 읽는다 .

3. 타는 모양 색상값을 현재 타 들어가는 정도와 비교한다 .

4. 비교 값에 따라서 기본 텍스처 대신 타는 색깔 텍스처의 색상을 적용한다 .

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

Outline Shader 카드와 미니언의 테두리를 씌우는 쉐이더

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

Outline Shader 구현방식 1. 외곽선 두께와 외곽선 색상을 설정한다 .

2. 그려야하는 픽셀 위치에서 외곽선 두께 만큼 떨어진 곳의 알파값을 읽는다 .

3. 상하좌우중 하나라도 알파값이 0 이상이라면 미리 외곽선 색깔로 칠한다 .

4. 그리고 그위에 기존 텍스쳐를 그린다 .

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

후기• 실전 프로젝트 마무리 소감

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

후기 좋았던 점 1. C# 으로 서버를 짜는 거나 , AWS 배포 등을 처음으로 해보면서 많은 걸 배움 2. 평소에 많이 하던 게임이 실제로 어떤 로직을 거쳐 돌아가는 지 생각해 볼 수 있는 기회였음

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

후기 아쉬웠던 점 1. 취직 시즌이 겹치면서 프로젝트 중 후반에 마무리를 제대로 못함 2. 처음에 기술 선택과 프로젝트 구조 잡는 게 정말 중요하다는 걸 다시 한 번 느낌

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

시연 영상