Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

2.654 visualizaciones

Publicado el

NEXT 2015년도 게임 전공 실전 프로젝트 발표 자료입니다.

Publicado en: Software
  • 혹 핸드의 카드 정렬은 어떤 방식을 쓰셨는지 알려주실 수 있나요? 몇 장이면 어느 위치에 어느 각도라고 일일이 주셨는지, 아니면 어떤 공식을 통해 하셨는지 궁금합니다.
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • ppt를 pdf로 변환하면 안에 임베딩했던 영상은 깨져서 재생이 안되더라고요. 그래서 어쩔 수 없이 중요한 시연 영상만 맨 뒤 페이지에 따로 첨부했습니다 ㅠㅠ
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • 근데 안에 들어 있는 비디오는 왜 안 나올까요?
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí

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

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

×