SlideShare une entreprise Scribd logo
1  sur  29
(모바일) 엔진 개발기
Kasastudy (2013.05.16)
이창희(cagetu79@gmail.com)
모바일
• 시장의 변화를 감지
• 처음에는 적극적으로 대응하지 않음
• 간단하게 OpenGL ES 를 지원하도록 해보자… 정도
• 엔진을 크게 수정하지 않고, OpenGL ES 만 추가적으로 적용
• 모바일이라도 특별하게 엔진을 줄이지 않음
• 포팅하면서 겪은 이야기 여기로!!!
모바일에 대한 이해
•하드웨어 성격
•OpenGL ES 성격
하드웨어 특징
• GPU 아키텍쳐 / 성능 / 메모리에 따라서,
고려해야 할 것이 다름
OpenGL ES 2.0 간단 리뷰
• 한 프레임의 구성
• http://cagetu.egloos.com/5737164
OpenGL ES 2.0 간단 리뷰
• Designing a High-Performance
• http://cagetu.egloos.com/5737210
• Summary
• Static Resource 사용하라
• Rendering 결과 얻기를 피하라
• glGetXXX
정리하면…
• Alpha Test 보다는 Alpha Blend!
• Alpha Blend 사용 영역을 최소화!!!!!!
• RenderTarget 전환을 줄여야 함
• 사용하지 않는 RenderTarget 내용은 제거하라
• Draw Call을 줄여라!
• Render State / Shader Switch 등을 줄여라
• Static Buffer / Texture을 사용하라
• 프레임 중간에 렌더링 상태를 얻어오지 말아라!
• 버텍스 사이즈를 줄여라!
• …
사례 발표
이슈 및 해결
사례 1. 폰트 텍스쳐 오류
• 입력이 들어오면 즉시 Dynamic Texture에 기록!!
• glTexSubImage2D
• 입력을 일괄적으로 기록하도록 변경으로 해결
사례 2. 배칭
• Draw Call을 줄이자!
• Sorting
• Distance (Front->Back, Back->Front)
• RenderState
• ShaderState
• Mesh ID
• Batching
• 전통적인 모아서 찍기!
• Static Mesh : 버텍스 64개 이하
• Skinned Mesh : 320개 정도의 작은 것들 모음
사례 3. Buffer Object
• OpenGL ES에서의 “버텍스/인덱스 버퍼”
• (일반적으로) 사용을 권장!
• But,
• iPhone4로 테스트 결과, 엄청나게 느려지는 문제 발생
• Cocos2D의 경우도 이런 문제가 있었음
• http://www.cocos2d-iphone.org/forum/topic/21829
• 증상> 대략 xcode 4 로 업데이트 했더니 느려졌다!!!
• 해결
• Static 버퍼 with VBO / IBO
• Dynamic 버퍼 without VBO / IBO
사례 4. 알파 블랜딩
• 화면에서 알파 블랜딩이 차지하는 비중에 높을수록 느려짐
• Present에서 지연 됨 (FillRate)
• CPU는 놀고, GPU는 죽고 있음
• 특히, iPhone4 / iPad1과 같이 FillRate가 낮은 기기에서는 최악!
• 해결책
• 알파를 사용하는 부분을 줄이는 것이 최선!
• 작은 렌더타겟에 그려서 늘여찍는 방법
• 파티클과 같이 동적인 알파객체들에게는 적합함
• http://blog.naver.com/sorkelf/40186066235
사례 5. 렌더타겟
• 렌더타겟 사이즈가 작으면 작을수록 비용 절감!
• 렌더타겟 전환은 굉장히 비용이 많이 들어감!
• 해결책
• 패스를 늘리지 않는다.
• 렌더타겟 전환을 최소화!
• 적당히 늘여찍기!
• 렌더타겟 재사용
• PowerVR에서는 같은 렌더타겟을 읽고 쓰기가 가능! (DirectX 불가능)
• 렌더타겟 전환을 하지 않고, Viewport만 변경해서 렌더링이 가능
• Post Processing에 사용하면 굿!!!
• http://blog.naver.com/sorkelf/40186066235
사례 6. 셰이더
• 복잡한 연산은 버텍스 셰이더에서 처리하자!
• 내부 함수은 너무 느리다!!!
• Pow(x, 4) 와 x*x*x*x 는 같은 결과지만 속도는 천지차이!
• Shader 컴파일 시간은 오래 걸린다.
• 셰이더 빌드 바이너리 캐쉬 기능이 있기는 하지만, 사용할 수 없음
• 일반적으로 로딩할 때, 미리 컴파일 하는 방식 (로딩 길다!)
• 동적 분기는 사용하기 어렵다고 봐야 함
사례 7. 디버깅
• Xcode OpenGL Driver 프로파일러 굿!
• HUD 측정장치 간단하게!
• Gpg에 소개된 정도면…
• 하지만,
• 모니터링을 위한 더 많은 장치가 필요!
• 아쉽다!!!
정리
정리
• 기본적으로 DirectX 기반에서 크게 벗어나지는 않는다.
• 하드웨어 특성이나 OpenGL 작동 방식을 잘 알아두면 최적화 방
향을 찾을 수 있다.
• 모바일 하드웨어의 성능은 생각보다 상당히 좋다.
• PC 기반 고퀄리티 그래픽은 기술적보다 “미학적”으로 어렵더라
• http://cagetu.egloos.com/5636186
아쉬운 점
• 2D를 이렇게 많이 사용하게 될 줄은 몰랐다.
• 3D에 관련된 내용을 중심으로 엔진을 구성했는데, 정작 게임은 2D 기반
이 상당히 많다!
•툴!!!!! 디버깅!!!!
• 성능/기능 등은 괜찮았으나, 게임 개발을 빠르게 해줄 수 있는 장치들이
얼마나 중요한지 절감함!
앞으로 어떻게?
• 현재 추세
• PC < Mobile
• 3D < 2D
• 대중적인 엔진
• Unity3D / Cocos2D
• 무엇이 강점인가?
•게임 엔진도 패러다임의 전환이 필요한 시점!!!!
• 고성능 / 다기능?
• 빠른 개발!!!!!
• (게임) 개발시간을 빠르게 할 수 있는 장치!!!!
많이 배웠다!
• 하지만, 잘하지는 못했다!

Contenu connexe

Tendances

06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성noerror
 
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'강 민우
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트Kalito Viscra
 
내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오KwangSam Kim
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발YEONG-CHEON YOU
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013devCAT Studio, NEXON
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기강 민우
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머포프 김
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략MinGeun Park
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례EG Lim
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)valhashi
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기flashscope
 
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016devCAT Studio, NEXON
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred RenderingKWANGIL KIM
 

Tendances (20)

06_게임엔진구성
06_게임엔진구성06_게임엔진구성
06_게임엔진구성
 
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오내 손에 픽셀을 쥐어다오
내 손에 픽셀을 쥐어다오
 
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발DirectX + C++을 이용한  WindowsStore App과 Windows Phone용 게임 개발
DirectX + C++을 이용한 WindowsStore App과 Windows Phone용 게임 개발
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
이승재, M2 AI코드 개발 생산성 향상 사례, NDC2013
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머[2012 대학특강] 아티스트 + 프로그래머
[2012 대학특강] 아티스트 + 프로그래머
 
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
[박민근] 3 d렌더링 옵티마이징_5 최적화 전략
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
이희영, 글로벌 원빌드 모바일 게임 런칭과 라이브 개발, NDC2016
 
191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering191019 Forward / Deferred Rendering
191019 Forward / Deferred Rendering
 

Similaire à 모바일 엔진 개발기

[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요smartstudy_official
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화 tartist
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________Kyoung Seok(경석) Ko(고)
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트JP Jung
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?KwangSam Kim
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석SangYun Yi
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYHyun-woo Park
 
optimize
optimizeoptimize
optimizeneoact
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전Sukwoo Lee
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Minsu Park
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Chanwoong Kim
 

Similaire à 모바일 엔진 개발기 (20)

[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
[스마트스터디]스마트스터디처럼 Django 쓰지 마세요
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx엔지니어링 비젼_동영상제거.pptx
엔지니어링 비젼_동영상제거.pptx
 
엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________엔지니어링비젼_언리얼엔진4_커스텀______________________
엔지니어링비젼_언리얼엔진4_커스텀______________________
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
op
opop
op
 
optimize
optimizeoptimize
optimize
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)Ndc2013 정리(upload버전)
Ndc2013 정리(upload버전)
 
Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅Kgc2014 삼한제국기 포스트모템 김찬웅
Kgc2014 삼한제국기 포스트모템 김찬웅
 
Gametech2015
Gametech2015Gametech2015
Gametech2015
 

Plus de changehee lee

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphchangehee lee
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developingchangehee lee
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_reschangehee lee
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기changehee lee
 
아빠 개발자로 살아남기
아빠 개발자로 살아남기아빠 개발자로 살아남기
아빠 개발자로 살아남기changehee lee
 

Plus de changehee lee (20)

Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
Paper games 2013
Paper games 2013Paper games 2013
Paper games 2013
 
V8
V8V8
V8
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Light prepass
Light prepassLight prepass
Light prepass
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developing
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your games
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
C++11(최지웅)
C++11(최지웅)C++11(최지웅)
C++11(최지웅)
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_res
 
아이폰에 포팅해보기
아이폰에 포팅해보기아이폰에 포팅해보기
아이폰에 포팅해보기
 
아빠 개발자로 살아남기
아빠 개발자로 살아남기아빠 개발자로 살아남기
아빠 개발자로 살아남기
 

모바일 엔진 개발기

  • 1. (모바일) 엔진 개발기 Kasastudy (2013.05.16) 이창희(cagetu79@gmail.com)
  • 2. 모바일 • 시장의 변화를 감지 • 처음에는 적극적으로 대응하지 않음 • 간단하게 OpenGL ES 를 지원하도록 해보자… 정도 • 엔진을 크게 수정하지 않고, OpenGL ES 만 추가적으로 적용 • 모바일이라도 특별하게 엔진을 줄이지 않음 • 포팅하면서 겪은 이야기 여기로!!!
  • 3. 모바일에 대한 이해 •하드웨어 성격 •OpenGL ES 성격
  • 4. 하드웨어 특징 • GPU 아키텍쳐 / 성능 / 메모리에 따라서, 고려해야 할 것이 다름
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. OpenGL ES 2.0 간단 리뷰 • 한 프레임의 구성 • http://cagetu.egloos.com/5737164
  • 15. OpenGL ES 2.0 간단 리뷰 • Designing a High-Performance • http://cagetu.egloos.com/5737210 • Summary • Static Resource 사용하라 • Rendering 결과 얻기를 피하라 • glGetXXX
  • 16. 정리하면… • Alpha Test 보다는 Alpha Blend! • Alpha Blend 사용 영역을 최소화!!!!!! • RenderTarget 전환을 줄여야 함 • 사용하지 않는 RenderTarget 내용은 제거하라 • Draw Call을 줄여라! • Render State / Shader Switch 등을 줄여라 • Static Buffer / Texture을 사용하라 • 프레임 중간에 렌더링 상태를 얻어오지 말아라! • 버텍스 사이즈를 줄여라! • …
  • 18. 사례 1. 폰트 텍스쳐 오류 • 입력이 들어오면 즉시 Dynamic Texture에 기록!! • glTexSubImage2D • 입력을 일괄적으로 기록하도록 변경으로 해결
  • 19. 사례 2. 배칭 • Draw Call을 줄이자! • Sorting • Distance (Front->Back, Back->Front) • RenderState • ShaderState • Mesh ID • Batching • 전통적인 모아서 찍기! • Static Mesh : 버텍스 64개 이하 • Skinned Mesh : 320개 정도의 작은 것들 모음
  • 20. 사례 3. Buffer Object • OpenGL ES에서의 “버텍스/인덱스 버퍼” • (일반적으로) 사용을 권장! • But, • iPhone4로 테스트 결과, 엄청나게 느려지는 문제 발생 • Cocos2D의 경우도 이런 문제가 있었음 • http://www.cocos2d-iphone.org/forum/topic/21829 • 증상> 대략 xcode 4 로 업데이트 했더니 느려졌다!!! • 해결 • Static 버퍼 with VBO / IBO • Dynamic 버퍼 without VBO / IBO
  • 21. 사례 4. 알파 블랜딩 • 화면에서 알파 블랜딩이 차지하는 비중에 높을수록 느려짐 • Present에서 지연 됨 (FillRate) • CPU는 놀고, GPU는 죽고 있음 • 특히, iPhone4 / iPad1과 같이 FillRate가 낮은 기기에서는 최악! • 해결책 • 알파를 사용하는 부분을 줄이는 것이 최선! • 작은 렌더타겟에 그려서 늘여찍는 방법 • 파티클과 같이 동적인 알파객체들에게는 적합함 • http://blog.naver.com/sorkelf/40186066235
  • 22. 사례 5. 렌더타겟 • 렌더타겟 사이즈가 작으면 작을수록 비용 절감! • 렌더타겟 전환은 굉장히 비용이 많이 들어감! • 해결책 • 패스를 늘리지 않는다. • 렌더타겟 전환을 최소화! • 적당히 늘여찍기! • 렌더타겟 재사용 • PowerVR에서는 같은 렌더타겟을 읽고 쓰기가 가능! (DirectX 불가능) • 렌더타겟 전환을 하지 않고, Viewport만 변경해서 렌더링이 가능 • Post Processing에 사용하면 굿!!! • http://blog.naver.com/sorkelf/40186066235
  • 23. 사례 6. 셰이더 • 복잡한 연산은 버텍스 셰이더에서 처리하자! • 내부 함수은 너무 느리다!!! • Pow(x, 4) 와 x*x*x*x 는 같은 결과지만 속도는 천지차이! • Shader 컴파일 시간은 오래 걸린다. • 셰이더 빌드 바이너리 캐쉬 기능이 있기는 하지만, 사용할 수 없음 • 일반적으로 로딩할 때, 미리 컴파일 하는 방식 (로딩 길다!) • 동적 분기는 사용하기 어렵다고 봐야 함
  • 24. 사례 7. 디버깅 • Xcode OpenGL Driver 프로파일러 굿! • HUD 측정장치 간단하게! • Gpg에 소개된 정도면… • 하지만, • 모니터링을 위한 더 많은 장치가 필요! • 아쉽다!!!
  • 26. 정리 • 기본적으로 DirectX 기반에서 크게 벗어나지는 않는다. • 하드웨어 특성이나 OpenGL 작동 방식을 잘 알아두면 최적화 방 향을 찾을 수 있다. • 모바일 하드웨어의 성능은 생각보다 상당히 좋다. • PC 기반 고퀄리티 그래픽은 기술적보다 “미학적”으로 어렵더라 • http://cagetu.egloos.com/5636186
  • 27. 아쉬운 점 • 2D를 이렇게 많이 사용하게 될 줄은 몰랐다. • 3D에 관련된 내용을 중심으로 엔진을 구성했는데, 정작 게임은 2D 기반 이 상당히 많다! •툴!!!!! 디버깅!!!! • 성능/기능 등은 괜찮았으나, 게임 개발을 빠르게 해줄 수 있는 장치들이 얼마나 중요한지 절감함!
  • 28. 앞으로 어떻게? • 현재 추세 • PC < Mobile • 3D < 2D • 대중적인 엔진 • Unity3D / Cocos2D • 무엇이 강점인가? •게임 엔진도 패러다임의 전환이 필요한 시점!!!! • 고성능 / 다기능? • 빠른 개발!!!!! • (게임) 개발시간을 빠르게 할 수 있는 장치!!!!
  • 29. 많이 배웠다! • 하지만, 잘하지는 못했다!