본문으로 이동
[NDC] '테라' 콘솔 포팅기 - 현세대 콘솔 이식을 위한 렌더링 최적화 여정
컨퍼런스

[NDC] '테라' 콘솔 포팅기 - 현세대 콘솔 이식을 위한 렌더링 최적화 여정

NDC 넥슨 · YouTube

원문 보기

AI 핵심 요약

PC보다 CPU 성능이 제한적인 PS4와 Xbox One에 《테라》를 이식하면서, Unreal Engine 3의 렌더링 경로가 멀티스레드 활용에 제약이 있고 렌더 패스 단위 분할만으로는 성능을 충분히 끌어내기 어렵다는 문제를 다뤘습니다. 발표자는 렌더 커맨드를 프레임별 임시 버퍼에 모으고, 순서 의존성이 있는 명령은 컴포지트 ID로 묶어 처리하는 한편 오브젝트 단위 렌더링 태스크를 구성했습니다. DirectX 11의 디퍼드 컨텍스트와 커맨드 리스트를 활용하고 렌더링 상태를 캐시·복원해 여러 코어에서 작업을 나눠 실행했으며, 일부 렌더링 패스의 동기화 시점도 조정했습니다. 핵심 교훈은 병렬화 자체보다 기존 코드의 의존성과 상태를 정확히 파악하고, 작업 크기와 동기화 비용을 함께 최적화하는 것이 중요하다는 점입니다.

  • 태스크를 너무 잘게 나누면 스케줄링과 소프트웨어 컨텍스트 스위칭 비용이 커지므로, 작업 크기와 크리티컬 패스를 함께 살펴야 합니다.
  • 순서 의존성이 있는 렌더 커맨드는 컴포지트 ID로 묶어 같은 워커에서 순차 처리하면 기존 실행 순서를 보존할 수 있습니다.
  • 병렬 작업에서 렌더링 상태와 렌더 타깃을 명시적으로 저장·복원하고, 공유 데이터와 스레드 로컬 사용을 점검해야 합니다.
  • 태스크의 동기화 시점을 조정해 다른 작업과 겹치게 하면 유휴 코어를 줄이는 데 도움이 됩니다.
  • 멀티스레드 최적화 전에는 기존 로직과 데이터 의존성을 꼼꼼히 분석하고, 레이스 컨디션과 순서 변경을 검증해야 합니다.

소개

NDC 2018 ['테라' 콘솔 포팅기 - 현세대 콘솔 이식을 위한 렌더링 최적화 여정] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 홍상혁 2. 발표자 소개 : 현재 블루홀 테라본부에서 테라를 PS4 (Pro)와 Xbox One (X)의 콘솔에 포팅을 담당하고 있는 프로그래머중 한명입니다. 현재 블루홀이 첫회사이며, 전문연구요원으로 일하고 있는 군인이자 주니어 프로그래머입니다. 이번 발표에서는 참관객 여러분들에게 콘솔 포팅을 하면서, 제가 주로 담당했던 PS4 와 Xbox One에서의 렌더링 최적화에 대해 중점적으로 공유해보고자 합니다. 3. 세션 소개 : 테라를 현세대 콘솔 포팅을 하면서, PC보다 낮은 사양인 콘솔의 한계를 넘어, PC와 근접한 혹은 더 나은 성능을 발휘 할 수 있도록 했던 렌더링 최적화에 대해 다룰려고 합니다. 최근 각광 받기 시작한 Vulkan 혹은 DirectX12와 같이, CPU를 ...

비슷한 학습 자료

컨퍼런스 NDC

● 설문조사: https://ko.surveymonkey.com/r/S7V83ZY ↓ 아래를 펼쳐, 세션 상세정보를 확인하세요! ● 발표분야: 프로그래밍 ● 발표자: 원더피플 기현우 / Wonder People Hyunwoo Ki ● 권장 대상: 렌더링 프로그래머 ● 키워드: #최적화 #오픈월드 #렌더링 #언리얼엔진

게임 프로그래밍

컨퍼런스 NDC

NDC 2019 [블리자드 모든 팀을 위한 플랫폼 중립적인 공용 라이브러리 만들기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 전이삭 2. 발표자 소개 : 현재 블리자드 엔터테인먼트 베틀넷 부문 데이터 팀에서 빅데이터 시스템을 개발하고 있습니다. 2001년 부터 개발 일을 시작해서 주로 C++를 이용한 패키지 소프트웨어 개발, 온라인 게임, 게임 플랫폼 개발 업무를 해왔습니다. 주요 프로젝트로는 나모 웹 에디터, 나모 핸드스토리, 한게임 바둑, 월드 오브 워크래프트 게임 런처, 베틀넷 데스크탑 앱, 오버워치 게임 클라이언트 등이 있습니다. NDC 2017에서 '더 좋은 코드를 위한 함수형 프로그래밍', NDC 2018에서 '게임 서비스 플랫폼을 지탱하는 알고리즘' 세션을 발표했습니다. 3. 세션 소개 : 최근 3년간 블리자드 모든 게임 팀에 적용해온 윈도우즈, 맥오에스, 리눅스, 콘솔, 모바일 등 모든 게임 플랫...

프로그래밍 언어

컨퍼런스 NDC

NDC 2019 [차세대 렌더링의 시작 - Real-Time Ray Tracing] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 신광섭 2. 발표자 소개 : 언리얼 엔진의 제작사인 에픽게임즈의 한국 법인인 에픽게임즈 코리아에서 디벨로퍼 릴레이션 리드와 프로그래머로 재직 중이다. 소프트맥스에서 프로그래머로 언리얼 엔진 2와 3를 이용하여 마그나카르타 PS2, PSP그리고 Xbox 360 버전을 개발 했으며, 에픽게임즈 코리아 설립연도인 2009년에 에픽게임즈 코리아에 합류하여 언리얼 엔진을 사용하는 한국 개발사/자들의 기술을 지원하는 지원팀의 리드를 맡고 있다. 3. 세션 소개 : 작년 3월 GDC에서 Microsoft가 DirectX Raytracing API를 공개하므로서 real-time ray tracing이 가능한 새로운 시대가 열렸습니다. Microsoft의 DirectX Raytracing API가...

게임 프로그래밍 게임 아트 · 그래픽

컨퍼런스 NDC

NDC 2018 [테라 콘솔 포팅기 - UE3 게임 현세대 콘솔로 이식하기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 이해찬 2. 발표자 소개 : 현재 블루홀에서 테라 콘솔포팅 업무를 하고 있으며, 이전에는 테라 라이브 개발을 했었습니다. 3. 세션 소개 : 8년째 서비스 중인 MMORPG TERA를 PlayStation 4와 XBox One으로 포팅하는 과정에서 겪었던 기술적 경험들을 공유합니다. 레거시가 많은 게임의 엔진을 어떻게 교체했는지, UE3로 만든 온라인 게임을 콘솔로 이식할 때에 어떤 문제가 발생하는지, 콘솔 포팅에서 최적화 접근은 어떻게 해야 하는지 등을 다룹니다. 콘솔 게임을 개발 중이거나, 특히 기존 게임을 콘솔로 포팅 중인 개발자 분들께 도움이 되기를 바랍니다 감사합니다. 본 NDC 발표 동영상(이하 “저작물”이라 합니다)에 대한 저작권 (2차적저작물작성권 및 편집저작물작성권 포...

게임 프로그래밍

컨퍼런스 NDC

NDC 2018 [CAP 이론을 통한 네트워크 동기화 기법] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 구승모 2. 발표자 소개 : 넥슨 오렌지카운티 스튜디오에서 기술 책임자 역할을 맡고 있습니다. 이전에는 Amazon Games의 수석 엔지니어로서 게임서비스에 관련된 일을 하였으며, NHN NEXT의 게임전공 교수로 재직하며 다수의 게임 소프트웨어 엔지니어들을 키워낸 경험도 있습니다. 참여했던 게임 프로젝트는 다수의 소규모 게임을 포함한 NCSOFT L3, Bluehole TERA 등이 있습니다. 3. 세션 소개 : 이번 세션에서는 멀티플레이어 게임 동기화에 대한 깊이 있는 내용을 다룹니다. 멀티 플레이어 게임은 사실상 하나의 분산 시스템입니다. 분산 시스템을 디자인 하기 위해서는 CAP theorem을 그 출발점으로 삼는 경우가 대부분입니다. 그래서, 이 CAP 개념이 게임 동기화 메커니즘 구현시에 어떻게 적...

게임 프로그래밍 네트워크

컨퍼런스 NDC

NDC 2018 [안드로이드에서 유니티 프로젝트 네이티브 프로파일링 삽질기] 세션 공유드립니다. 상세 내용은 NDC Replay 홈페이지를 참고 부탁드려요. 😊 1. 발표자 성함 : 하재승 2. 발표자 소개 : 넥슨 라이브인프라실에서 라이브 게임들에 필요할 기반 기술들을 쌓아 올리는 중. 무점검 실시간 게임 정보 수집 툴 ZERO 개발(NDC2017). 배포후 프로파일링 툴 JYP 개발(NDC2015). 던전앤파이터 최적화 담당(NDC2014), NCSOFT 서버 버너(NDC2011) 등 툴 및 프레임워크 개발, 빅샷 개발, 메틴2 개발. 3. 세션 소개 : 만들어진 게임을 최적화하기 위해선서 프로파일링이 필수적인 과정입니다. 어떤 코드 영역에서 불필요하게 시간을 소요하는지 파악하고, 우선적으로 개선할 병목지점을 찾아내어 같은 노력으로 더 큰 효과를 볼 수 있습니다. 하지만 안드로이드에서 Unity+IL2CPP이나 Unreal 등 C++로 만들어진 네이티브 앱에 사용할 ...

게임 프로그래밍