HCI2010 - 온라인 게임과 넥스트 젠 애니메이션

8,867 views

Published on

XBOX360이나 PS3 등 성능과 표현력이 높은, 이른바 넥스트젠 (차세대) 콘솔에서 액션 장르의 게임이 차지하는 비중과 중요성은 날이 갈 수록 높아지고 있다. 이런 추세에 힘입어 넥스트젠 게임에 등장하는 애니메이션은 그 볼륨이 늘어나는 것은 물론 점차 복잡한 제어를 요구하고 있다. 특히 적은 볼륨을 통해서 다채로운 애니메이션을 만들어내기 위한 절차적 애니메이션 기법이나 게임 내의 복잡한 환경에 적절하게 반응하도록 만드는 상태 제어 기법 등은 첨단 렌더링 기법에 비견할 수 있을 정도로 넥스트젠 게임에서 가장 중요한 기술 중 하나로 자리잡고 있다.
이 강의에서는 이러한 넥스트젠 애니메이션 기술 트렌드와 온라인 게임에 기존 솔루션을 바로 통합하기 어려운 이유에 대해서 살펴보고, 실제로 온라인에서 동작할 수 있는 아키텍처에 대해서 마비노기 2의 개발 사례를 통해 살펴보도록 한다.

0 Comments
22 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,867
On SlideShare
0
From Embeds
0
Number of Embeds
2,390
Actions
Shares
0
Downloads
0
Comments
0
Likes
22
Embeds 0
No embeds

No notes for slide

HCI2010 - 온라인 게임과 넥스트 젠 애니메이션

  1. 1. HCI2010 | 김주복 온 라 인 게 임 과 차세대 애니메이션 Ⓒ 2008-2010 NEXON Corporation & devCAT Studio. All Rights Reserved M2 team, Game Development Team for Mabinogi in devCAT (The 3rd Development Division in NEXON Corp.). M2 team Director is Kim, Dong-Gun | Project W is produced by Kim, Dong-Gun devCAT Engine team, Engine Development Team for Project W and more. Engine Team Technical Director is Jeon, Hyeong-Kyu
  2. 2. 김주복 애니메이션프로그래밍10년차 2001 무선사업팀 도트디자이너 2001 마비노기팀 리드 프로그래머 2003 마비노기 프로그래밍팀 팀장 2005 그룹웨어 개발팀 팀장 2006 W팀 테크니컬 디렉터 2008 개발3본부 3실 실장 2009 마비노기 2 개발 디렉터 2010 신규개발3본부 1실 실장
  3. 3. 난이도 대상 강연내용
  4. 4. 난이도 대상 강연내용
  5. 5. 개발중 이 강연 내용은 현재 개발 중인 게임의 구현 방식에 대한 것으로, 최종 게임에서는 강연 내용과 다른 형태로 구현되어 있을 수도 있습니다.
  6. 6. 차세대? XBOX720?
  7. 7. GTA4 사실 다룰 내용은 현 세대 Assassin’s Creed Uncharted:Drake’s Fortune
  8. 8. 콘솔현세대 ≒ 온라인차세대?
  9. 9. 발전 방향을 예측 콘솔 현세대 기술 ≒ 온라인 차세대 기술
  10. 10. 왜 하필 애니메이션?
  11. 11. 그래픽 퀄리티?
  12. 12. 콘솔 대세 장르는 액션
  13. 13. 액션=애니메이션
  14. 14. 애니메이션=세일즈포인트 Assassin’s Creed
  15. 15. 예를 들어…
  16. 16. 정교한 근접 액션 Robert Ludlum's The Bourne Conspiracy
  17. 17. Assassin’s Creed
  18. 18. 주변 환경과 인터랙션 Tom Clancy’s Splinter Cell : Conviction
  19. 19. Autodesk HumanIK
  20. 20. 다양한 리액션 Uncharted : Drake’s Fortune
  21. 21. Grand Theft Auto IV
  22. 22. NaturalMotion Euphoria
  23. 23. Total Wait & Idles Transitions Movement Cycle Other animations breakers 10 108 14 12 24 168 Banking L&R Walk Slow Idles Walk Normal Wait High L Start Turn Side Walk L&R Wait High R Start straight Stealth Wait Low L Stop Jog &Run Walk stop Turn on spot Wait Low R Run turns Sprint Walk breaker Oriented move 자연스러운 평상 동작 Assassin’s Creed
  24. 24. “뭐 이리들 힘줘서 만드냐…”
  25. 25. 복잡성의 관리
  26. 26. 이동 트랜지션 리타게팅 발맞추기 델타 애니메이션 페이셜 모션 랙돌 제어 뱅킹 천 시뮬레이션 지글본 (힌지본) IK … 이쯤 하려면 만들 게 많다
  27. 27. 하지만 진짜 문제는…
  28. 28. 프로그래머 애니메이터 기획자 애니메이션 시스템
  29. 29. 대세는 다이어그램
  30. 30. Morpheme NaturalMotion
  31. 31. Havok:Behavior Havok
  32. 32. UnrealEd3 Epic Games
  33. 33. 아랍어도 아닌데 이쪽으로 읽는다;;; 아이들 애니메이션 자세히 보면…
  34. 34. 제자리 방향 전환 블렌딩
  35. 35. 제자리 방향 전환 블렌딩 활성화
  36. 36. 이동 속도에 따른 블렌딩
  37. 37. 조준 포즈의 델타애니메이션
  38. 38. 델타 애니메이션? 애디티브 애니메이션 (Uncharted) 옵셋 블렌딩 (UnrealEd3)
  39. 39. - = δ + 0.5 ×δ=
  40. 40. - = δ + 0.5 ×δ=
  41. 41. 트로이카 모션 이동속도 엄폐/평상 선택 조준모드 엄폐모드 선택 서서엄폐 앉아서 엄폐 약간 더 복잡하지만 마커스도 마찬가지
  42. 42. 애니메이터 주도 개발 Morpheme의 레퍼런스 게임, BackBreaker의 그래프
  43. 43. 끝?
  44. 44. 도입 vs 자체개발
  45. 45. 액션의 반응성, 갖고 있는 리소스, 차세대스러운 룩 목표?
  46. 46. 주요 요구사항 : ex) IK, 지글본, 페이셜 모션
  47. 47. 사람은 정속으로 움직이지 않는다 발 미끄러짐 방지
  48. 48. 뱅킹, 트랜지션 등에 아티스트, 기획자가 접근 가능해야 한다 유연한 블렌딩 시스템
  49. 49. 가능한 한 적은 수의 애니메이션 애셋을 저작한다 모션 리타게팅
  50. 50. 레이어 0 레이어 1 레이어 2 레이어 3 기본 본 구조 손 디포머블 본 장비품 슬롯 커스터마이즈 가능한 높은 품질의 애니메이션을 지원한다 레이어드 프레임워크
  51. 51. 페이셜 모션 지글본 IK 애니메이터 손을 덜 쓰고 모션에 풍부함을 제공한다 절차적 기법 적용
  52. 52. 리타게팅 미들웨어와의 궁합 프레임워크의 잦은 변경 데드 레커닝과의 조합 액션 주도권 문제 도입의 즉시 동기화 기능 필요 엔진 리소스와 호환성 걸림돌? 스크립트로 루아를 강제함 독특한 라이센싱 모델 그래프 에디팅 노하우 필요 성능 문제에 대한 신뢰도 게임의 핵심적 부분 여타 기능과 조합 가능성
  53. 53. 발은 맞아야 하지만 애니메이션이 캐릭터 위치를 결정해서는 안 된다 애니메이션 vs 로직
  54. 54. 장비품 장착과 LOD에 따라서 본 계층 구조가 극단적으로 변한다 캐릭터 커스터마이즈
  55. 55. 이미 개발된 코드, 도입한 미들웨어와 얼마나 잘 붙어줄 것인가? 통합 용이성
  56. 56. 과연?
  57. 57. 설계: 1차시도 생각이란 걸 좀 해봐…
  58. 58. 마비노기 1과 거의 유사한 구조
  59. 59. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 카메라 로코모션 로직 애니메이션 어드밴스 프로세서 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 디렉션 블렌더 애드온 무브 프로세서 구조 쳐다보기 블렌더
  60. 60. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 카메라 타겟의 위치, 블렌딩할 캐릭터의 위치 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 로직 애니메이션 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 디렉션 블렌더 애니메이션 애드온 무브 프로세서 메타 정보 쳐다보기 블렌더
  61. 61. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 발맞춤 처리 등의 노하우를 애니메이션과 분리 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 로직 애니메이션 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 디렉션 블렌더 외부 솔루션 애드온 무브 프로세서 통합 쳐다보기 블렌더
  62. 62. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 애니메이션 전이시의 블렌딩을 처리 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 로직 애니메이션 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 디렉션 블렌더 애드온 무브 프로세서 트랜지션 처리 쳐다보기 블렌더
  63. 63. 애니메이 터 애니메이션 Information Track 애니메이션 루프 끝이나 정지 시 오리진 애니메이션 피봇과 캐릭터 위치 캐릭터 로코모션 불일치 문제 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 다른 로직 애니메이션 모션으로 애니메이션 교체 피봇 스탠스 프로세서 트랜스폼 블렌더 그 사이의 이동치를 실제로 적용 포지션 블렌더 새 애니메이션 디렉션 블렌더 피봇 애드온 무브 프로세서 발맞춤 처리 쳐다보기 블렌더
  64. 64. 애니메이터 애니메이션 Information Track 애니메이션 오리진 회전 시 캐릭터 위치와 캐릭터 로코모션 애니메이션 피봇의 불일치 문제 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 애니메이션 피봇 로직 애니메이션 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 애니메이션 피봇 디렉션 블렌더 애드온 무브 프로세서 발맞춤 처리 쳐다보기 블렌더
  65. 65. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 맞아서 날아가는 처리, 쳐다보기 등 카메라 로코모션 애니메이션 어드밴스 플레이어 프로세서 로직 애니메이션 스탠스 프로세서 트랜스폼 블렌더 포지션 블렌더 디렉션 블렌더 절차적 애드온 무브 프로세서 모션 처리 쳐다보기 블렌더
  66. 66. 문제점?
  67. 67. 주요 요구사항 : ex) IK, 지글본, 페이셜 모션
  68. 68. 애니메이터 애니메이션 Information Track 애니메이션 오리진 캐릭터 로코모션 카메라 로코모션 리타게터 로직 애니메이션 지글본 프로세서 어드밴스 프로세서 디포머블 프로세서 스탠스 믹서 프로세서 트랜스폼 블렌더 포지션 블렌더 … 디렉션 블렌더 애드온 무브 프로세서 어디에? 쳐다보기 블렌더
  69. 69. 확장이 거의 불가능개별 기능을 구현하는 건 쉬운 반면, 상호 의존성이 매우 높아 변경 및 확장에 취약한 구조
  70. 70. 설계: 2차시도 무조건 단순하게 만들자
  71. 71. Uncharted Animation:An In-depth Look at the Character Animation Workflow and Pipeline 모티브
  72. 72. 애니메이터 애니메이션 레이어 스택 애니메이션 레이어 베이스 애니메이션 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 기본 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 쳐다보기 (몸) 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 몸 좌우로 기울이기 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 숨쉬기 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 단순한 구조 스탠스 프로세서 포지션 블렌더 디렉션 블렌더
  73. 73. 애니메이터 애니메이션 레이어 스택 애니메이션 레이어 베이스 애니메이션 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 기본 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 쳐다보기 (몸) 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 몸 좌우로 기울이기 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 숨쉬기 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 기존과 동일한 부분 스탠스 프로세서 포지션 블렌더 디렉션 블렌더
  74. 74. 애니메이터 애니메이션 레이어 스택 애니메이션 레이어 베이스 애니메이션 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 기본 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 쳐다보기 (몸) 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 몸 좌우로 기울이기 애니메이션 소스 – 1 프레임 포즈 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 애니메이션 레이어 숨쉬기 애니메이션 소스 – 트랙 플레이어 어드밴스 프로세서 더하기 트랜스폼 블렌더 블렌드 오퍼레이션 단순함+ 확장성 스탠스 프로세서 포지션 블렌더 디렉션 블렌더
  75. 75. 문제점?
  76. 76. 주요 요구사항 : ex) IK, 지글본, 페이셜 모션
  77. 77. 믹싱 만으론 트랜지션 시의 동작 정의 재생 속도 스케일링 뭔가 부족하다 리타게팅 커스터마이즈 프레임워크
  78. 78. 설계: 3차시도 잘 하는 놈 따라 하면 되는 거 아냐
  79. 79. 이 시점에 도입 vs 자체 구현 고민을 했다 노골적인 카피
  80. 80. 논 블렌딩 트랜지션 액션 블렌딩 트랜지션 애니메이션이 끝나면 액션 액션 모션 스테이트 애니메이션 명시적 전이 애니메이션이 끝나면 장비변경 장비변경 모션 전이 조건 판단 if 이동속도 == 걷기 달리기 if 이동속도 == 달리기 if 이동속도 == 전력질주 아이들 모션 if 이동속도 == 전력질주 if 이동속도 == 0 애니메이션이 끝나면 전력질주- 달리기 전이 애니메이션이 끝나면 if 이동속도 == 달리기 전력질주 전력질주 도입부 if 이동속도 == 0 if 이동방향 많이 바뀜 애니메이션이 끝나면 전력질주 종료부 상태구분 스프린트 턴백 애니메이션이 끝나면 초안 (일부)
  81. 81. 아이들 if 이동속도 == 달리기 if 이동속도 == 전력질주 AnimationPlayer 아이들 포즈 AnimationMixer Retargeter LookAt AnimationPlayer 숨쉬기 애디티브 출력 달리기 if 이동속도 == 걷기 AnimationPlayer 좌측 틸팅 애디티브 if 이동속도 == 전력질주 AnimationPlayer 틸팅 팩터 달리기 애니메이션 if 이동속도 == 0 AnimationMixer AnimationMixer AnimationPlayer 숨쉬기 애디티브 AnimationPlayer 우측 틸팅 애디티브 Retargeter LookAt 출력 개별 상태 회로 구성 초안 (일부)
  82. 82. 실제 구현
  83. 83. Pose IAnimationDevice Output Pin Input Pin
  84. 84. Pose IAnimationDevice Output Pin Input Pin
  85. 85. Pose IAnimationDevice Output Pin Input Pin ConnectInputDevice DisconnectInputDevice BuildTraversal UpdateFirstPass GetAndClearPivotDisplacement UpdateSecondPass GetPose …
  86. 86. PassThruDevice Output Pin Input Pin 주어진 애니메이션 포즈를 그대로 통과시키는 디바이스
  87. 87. Animation AdvanceProcessor Output Pin IAnimationPlayer 이전에 구현된 부분을 재활용한 통상의 애니메이션 소스
  88. 88. Layer0 Pose SRT (Layer0) SRT Layer1 Hand W_Animation SRT AdvanceProcessor IAnimationPlayer Output Pin SRT (Layer1) IAnimationPlayer SRT SRT IAnimationPlayer SRT etc 실제로는 약간 더 복잡하다
  89. 89. 2-Way Mixer Output Pin Input Pins Blending Operation Blending Factor 쉽게 구현이 가능한 2개 입력을 가진 애니메이션 믹서
  90. 90. TransitionBlender LastPose Output Pin Input Pin 애니메이션 변경 시의 트랜지션을 처리해주는 블렌더
  91. 91. AnimState : PassThru Transitions Output Pin Input Pin AnimStateMachine AnimStates Output Pin TransitionBlender Transition Signal 애니메이션 스테이트 머신 구현 처리기
  92. 92. Retargeter Output Pin Target Framework 체격이 다른 프레임워크 간에 모션을 공유할 수 있게 하는 리타게터
  93. 93. AnimStateMachine 데이터 코드 Animation AnimState HumanIdle Idle Run Sprint Attack Animation HumanRun Animator Animation BankingMixer AnimState Retargeter HumanBankLeft Running StanceProcessor RunOut Animation HumanBankRight Sprint Animation AnimState HumanIdle RunOut ReturnToIdle Run Sprint 테스트 그래프 (일부)
  94. 94. 피봇이동 처리?
  95. 95. Pose IAnimationDevice Output Pin Input Pin ConnectInputDevice DisconnectInputDevice BuildTraversal UpdateFirstPass GetAndClearPivotDisplacement UpdateSecondPass GetPose
  96. 96. AnimStateMachine Animation AnimState HumanIdle Idle Run Sprint Attack 피봇 이동발생 Animation 피봇 이동을 리타게팅 HumanRun 믹싱 비율만큼 조정 비율대로 조정 Animator Animation BankingMixer AnimState Retargeter HumanBankLeft Running StanceProcessor RunOut Animation HumanBankRight 전체 캐릭터의 Sprint 피봇을 이동 Animation AnimState 그대로 통과 HumanIdle RunOut ReturnToIdle Run Sprint 피봇 이동 처리 경로
  97. 97. JiggleProcessor Output Pin Input Pin 주어진 포즈 중 일부를 지글본으로 처리하는 디바이스
  98. 98. 지글본은 월드에서 처리된다
  99. 99. Pose IAnimationDevice Output Pin Input Pin ConnectInputDevice DisconnectInputDevice BuildTraversal UpdateFirstPass GetAndClearPivotDisplacement UpdateSecondPass GetPose
  100. 100. 주요 요구사항 : ex) IK, 지글본, 페이셜 모션
  101. 101. 문제점?
  102. 102. 상태 관리는 사실 게임 액션 로직이 대부분 수행해준다 액션 처리의 주도권 문제
  103. 103. 전투 액션 스테이트 머신과 애니메이션 스테이트 머신의 생김새가 유사 중복인가 그렇지 않은가
  104. 104. 설계: 4차시도 소박하게 하자는 컨셉으로 현재 진행중
  105. 105. 방향?
  106. 106. 애니메이션 시스템에서 상태 관리를 덜어내자 기능 축소
  107. 107. HumanRun Animation HumanRun Animation BankingMixer AnimState HumanBankLeft Running RunOut Animation HumanBankRight Sprint 로직 제어 편의성과 모션 유연성의 절충안 유연한 단일 모션 모델
  108. 108. HumanRun Animation HumanRun Animation BankingMixer AnimState HumanBankLeft Running RunOut Animation HumanBankRight Sprint 모든 스테이트 전이가 아니라 특정 모션에 진입/진출할 때로 한정 트랜지션 속성 단순화
  109. 109. IParameterPool 방향 전환 크기 패드 입력 방향 마우스 클릭 현재 방향 캐릭터 상태 쳐다보기 타겟 방향 전환 크기 HumanRun Animation HumanRun 블렌드 팩터 Animation BankingMixer AnimState HumanBankLeft Running RunOut Animation HumanBankRight Sprint 그래프 컨트롤 제어 구조를 일반화 파라메터 와이어링
  110. 110. 이제 실제로 디자이너가 쓸 수 있도록 하자 그래프 인터페이스 도입
  111. 111. 잘 굴러가 줄 것인가?
  112. 112. 결론
  113. 113. 레퍼런스 $ j i g g l e b o n e , T h e Va l v e D e v e l o p e r C o m m u n i t y Character Pipeline Advances for Next-Gen Games, Christopher Evans, Hanno Hagedorn [ G D C 2 0 0 7 ] Concepts in Animating Sam Fisher & friends, Eric Bibeau, Gilles Monteil [GDC2005] Creating a Character in Uncharted:Drake’s Fortune, Christian Gyrling [GDC2008] E u p h o r i a , N a t u r a l M o t i o n , h t t p : / / w w w. n a t u r a l m o t i o n . c o m / e u p h o r i a . h t m Helper Joints:Advanced Deformations on RunTime Characters, Jason Parks [GDC2005] HumanIK, Autodesk, http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=9491249 Taming the Mob : Creating Believable Crowds, Sylvain Bernard, James Therien [GDC2008] Uncharted Animation:An In-depth Look at the Character Animation Workflow and Pipeline, J e r e m y L a i - Ya t e s , J u d d S i m a n t o v [ G D C 2 0 0 8 ] 게으른 아티스트의 캐릭터 파이프라인 개발 경험담, 김충효 [NDC2008] 차세대 게임 개발을 위한 실시간 비주얼 그래프 편집, 김성익 [NDC2008]
  114. 114. Q&A 질문이 있어도 없어도 감사합니다

×