게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타...

32
게임에서 흔히 쓰이는 최적화 전략 엄윤섭 [email protected]

Upload: young-wook-oh

Post on 08-Jul-2015

1.072 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

게임에서 흔히 쓰이는 최적화 전략

엄윤섭[email protected]

Page 2: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

기본적인 이야기

• 기본적인데 잘 안되는 이유✓ 바쁘니까

• 기본적인데 잘 안고치는 이유✓ 돌아가니까

✓ 장비가 좋아지니까

Page 3: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

최적화

• 다양한 의미의 최적화

• 공간 최적화✓ 요즘은 뒷전✓ 사실상 개발비로 제한

• 속도 최적화 ✓ 항상 중요

Page 4: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

속도 최적화

• 게임은 무조건 빠르게!✓ 화려한 그래픽✓ 부드러운 애니메이션✓ 현실적인 상호작용✓ 칼같은 조작감의 밑거름

• ‘빠르다’의 기준✓ 감이 아니라 측정 결과로 비교

Page 5: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

측정

• 대기시간✓ RESPONSE TIME✓ LATENCY

• 처리속도✓ THROUPUT

* TURN AROUND TIME

Page 6: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

프로파일러

• 직접 만들어 쓴다✓ 부하가 적다 (꼭 필요한 데이터만)✓ 실제 성능과 근접한 수치✓ 번거롭다

• 남이 만든걸 쓴다✓ 자세한 추세 파악이 가능✓ 그중에 으뜸은 인텔 VTune

Page 7: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

처리속도 최적화

일을 시작한 후, 일하는 시간동안 얼마나 많은 양의

유효한 결과를

낼 수 있느냐

Page 8: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

작업량 최적화

원하는 결과를 내는 데에 쓸모 없는 일을 줄이는 것

Page 9: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

데이터 최적화

컴퓨팅 : 데이터를 처리하는 것.

데이터를 줄이는 것이

최적화의 가장 기본

데이터 양을 줄이면 당연히처리가 빨리 끝남!

Page 10: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

데이터 양과 계산량

• 빅-오 (Big-O) 표기법✓ 데이터양과 처리시간 사이의 관계를 나타내는 함수

• O( n ) • O( n2 ) • O( en ) • O( 1 )

Page 11: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

오래된 기법들

• LOD

• MIPMAP

• HSR

Page 12: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

MIPMAP의 예

Page 13: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

경험 사례

• 클라이언트 용량 약 10GB✓ 대부분은 고해상도 텍스쳐✓ 국내 OK✓ 해외 NG (중국,태국,남미)

• 텍스쳐 MIP레벨을 강제로 줄여서 배포✓ 클라이언트 용량 약 4GB로 절감

Page 14: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

알고리듬 최적화

같은 데이터를 가지고

더 효율적인 과정을

통해 처리하는 것

Page 15: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

흔한 최적화

• 삽입 정렬을 퀵 정렬로.

• 선형 검색을 해쉬 함수로.

• 백트래킹을 다이내믹 프로그래밍으로.

• 깊이우선 탐색을 A*로.

Page 16: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

알고리듬 최적화 주의

• 동일한 결과 보장

• 속도와 메모리 사용량의 관계

• 데이터 양 고려

Page 17: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

저수준 최적화

같은 데이터, 같은 처리 과정을 기계가 더 빠르게 수행할 수 있도록

다듬는 일10% 내외의 성능향상 기대

Page 18: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

스크립트 최적화

스크립트를 네이티브로 바꾸면

확실한 성능향상 (해당 부분은 5~10배)

하지만, 전체에서 차지하는 비율이 작은 경우가 대부분

Page 19: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

네이티브 최적화

CPU 고유의 특성을 살리는 코드를 짜는 일

분기예측,캐시,정수/소수혼합, 고유 명령셋 등등등

(어셈블리가 동원되기도….)

단, 컴파일러 최적화와 비교해야 함

Page 20: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

경험 사례

• 스크립트 병목은 수시로 네이티브로

• 네이티브 최적화는 컴파일러로✓ 컴파일러 선택이 중요✓ 최신버전이 일반적으로 성능이 우수✓ 그중 으뜸은 인텔 컴파일러

Page 21: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

중간 정리

• 처리속도 최적화✓ 데이터 최적화✓ 알고리듬 최적화✓ 저수준 최적화

• 대기시간 최적화

Page 22: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

메모리와 데이터

컴퓨팅 : 데이터를 처리하는 것

메모리 : 데이터가 담겨 있는 장치

Page 23: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

메모리 계층

• Memory Heirachy ✓ 비쌀수록 빠르고 용량이 적다.

응답속도 CPU 클럭 사이클레지스터 0.3 ns 미만 동일

CPU캐시 1~2 ns 4~10 사이클시스템 메모리 30~50 ns 100~150 사이클SSD 0.1 ms 100만 사이클 이상HDD 8 ms 10억 사이클 이상클라우드 10 ms 이상 10억 사이클 이상

Page 24: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

대기시간 최적화

데이터가 오가는 데 걸리는 CPU의

대기시간이 줄도록

만드는 일

즉, 줄어든 시간만큼 다른 유용한 일을 할 수 있음

Page 25: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

캐시의 사용

데이터를 느린 곳에서 빠른 곳으로

미리 옮겨놓는 일

각 게임만의 고유한 특성을 반영하면 더 지능적인 캐시 가능

Page 26: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

캐시 전략

• 싱글플레이어 게임✓ 100% 예측가능

• 온라인 멀티플레이어 게임✓ 다른 사용자의 활동은 예측 불가능✓ 휴리스틱이 중요✓ 통계기반캐싱, Lazy Deletion,

Page 27: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

경험 사례

• 캐릭터 그래픽 캐시 전략✓ 기본 : 캐릭터 스폰시 로드✓ AI캐릭터 : 모두 프리캐시✓ 퇴장한 플레이어 : Lazy Deletion

• 물리연산 데이터✓ 코어가 남으면 메인메모리에서 캐싱✓ CPU아키텍쳐에 맞춘 데이터 사이즈

Page 28: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

병렬화

컴퓨터가

둘 이상의 작업을 동시에

하게 만드는 일.

Page 29: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

병렬화 대상

• 데이터를 이동시키는 시간동안 다른 유의미한 일을 하는 것에 중점

• 그 외에도 렌더링, 물리연산 등 CPU를 대기하게 만드는 작업이 많음.

Page 30: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

동기화와 비동기화

• 동기화 : 확인절차를 거치고 다음으로 진행

• 비동기화 : 확인절차 없이 다음으로 진행

• 병렬화 : 비동기적으로 진행한 후 동기화

Page 31: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

경험 사례

• 비동기 방식 로딩 도입✓ 플레이어 진입시 자리만 마련하고 로딩 요청

(비동기)✓ 그래픽 데이터 구성은 로딩 완료 신호가 뜰 때

(동기화)

• 100ms 이상의 히치 90% 이상 감소

Page 32: 게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013

마무리

• 최적화는 측정이 중요!

• 처리속도 최적화는 데이터, 알고리듬, 저수준

• 대기속도 최적화는 메모리 위계를 염두

• 질문?