SlideShare a Scribd company logo
1 of 23
Streaming of Huxley


         2008. 11.
          김성균
      littles79@hanmail.net
도시 스트리밍 초기 요구사항


•   거대한 도시
•   구역별로 구분된 게임 기능
•   디자이너들이 구역별로 분할해서 작업하기
    원함
•   배틀 등 모든 레벨 이동을 seamless 하게
CBT 버전의 접근 방법


 •   Unreal의 기본 레벨 스트리밍 기법 사용
     •   레벨 파일 단위 스트리밍
     •   현재 레벨에 겹쳐서 로드됨


 •   Unreal의 기본 텍스쳐 스트리밍 사용
     •   시점에 기반한 텍스쳐 해상도 자동 조절
CBT 버전 문제점


 •   I/O가 느리거나 플레이어 이동속도가 빠르면
     텅 빈 구역을 보게 됨
 •   메모리 사용량 및 로딩 속도가 구역마다 현저
     히 다름
 •   일부 구역에서 렌더링 퍼포먼스 문제
 •   간헐적 멈춤 현상
 •   시각적인 불연속성
 •   스트리밍에 효율적인 구역 나누기 어려움
CBT 1차 이후 수정 요구사항


 •   GTA 스타일 스트리밍의 필요성
     •   Loading LOD concept


 •   건물 단위 스트리밍
 •   렌더링 최적화를 위한 LOD
 •   I/O 속도에 관계없는 게임 플레이
메쉬 스트리밍
메쉬 스트리밍


•   단위 메쉬 전체의 스트리밍 로드

•   건물 데이터
    •   StaticMesh : model, material, texture
    •   LightMap : texture/vertex buffer


•   메쉬별로 스트리밍 거리 설정
LOD Group
LOD Group

 •   큰 건물이나 구역은 작은 부속 메쉬들로 이루
     어져 있음
 •   낮은 수준 LOD에서는 구역 전체를 대표 메
     쉬 하나로 렌더링

 •   에디터에서 부속 메쉬들에 대한 LOD Group
     메쉬를 지정
 •   거리에 기반하여 부속 메쉬들 스트리밍
     (Batch request)
 •   전체 로드 이후 부속 메쉬들 렌더링
Unreal Object Loading 기본 사항


 Unreal UObject : serializable entity

 UObject 로드 절차
    1.   Load Package file header
    2.   Construct UObject instance
    3.   Load UObject data (serialization)
    4.   PostLoad
Object Streaming 초기 구현


 스트리밍 대상 건물이 사용하는
 StaticMesh, LightMap 정보 부터
 serialization 작업 시작

   1.   Construct UObject instance
   2.   Load UObject data
   3.   PostLoad
   4.   1번부터 반복
초기 구현


문제점
  •   잦은 멈춤 현상 : UObject load의 I/O block
      (seek+read)
  •   느린 스트리밍 속도


해결책
  •   Async I/O
  •   미리 읽어둠 (precache)
  •   유관 데이터들을 인접하게 만듦
  •   (압축, seek free loading은 제외)
Object Streaming 개선 버전

 •   Object Streaming
     1.   UObject들의 로딩 순서 예측
     2.   Async I/O에 예측된 object들 precache 요청
     3.   Construct UObject instance
     4.   Load UObject data from precached data (staged
          version)
     5.   PostLoad
Object Streaming 개선 버전

 •   Precache 순서 예측 : 패키지 세이브 시에 순서 저장
 •   I/O Precache
      •   각 UObject data 단위로 디스크 읽기 요청 Queue
      •   최대 N개의 요청들 저장
 •   로딩의 모든 단계에서 timeout 처리 가능해야 함
      •   State mgmt.
      •   Staged Serialization
 •   Batched Streaming concept (LOD Group)
      •   Atomicity
      •   Efficency
Streaming Process




                      Script
                      Prop.
                                 Mesh
                                                             Game
                                …
                                                             Play

                      Priority Filter

                            Precache               Request


             Finish                         Construct             I/O
                                                                 Thread
                      ~10ms/frame

                                                        Stream
                 PostLoad              Serialize
Optimization


 •   Streaming Toggle view
 •   메쉬 스트리밍 우선 순위
     •   화면상의 크기
     •   카메라 방향
     •   (PVS?)
 •   Texture
     •   가장 많은 데이터
     •   초기에 낮은 해상도만 로드
     •   메쉬 로드 종료 이후 높은 해상도 로드
노스탈로니아




“Show Streamable”
노스탈로니아
현재까지의 결과 - 노스탈로니아


•   전체 로드 크기 2GB
•   전체 메쉬 1200여개
•   전체 텍스쳐 1600여개

•   초기 로드 메쉬 400여개
•   초기 로드 텍스쳐 600여개
•   메모리 사용량 400MB
Streaming 요구사항 추가


 •   점점 증가하는 도시의 캐릭터들
     •   SkeletalMesh
     •   Texture
     •   Animation
     •   Sound


 •   수많은 방어구, 무기
     •   도시 : 시야 기반 스트리밍
     •   배틀 : listen server만 스트리밍
Streaming Support in UnrealScript

 •   Script 수준의 streaming syntax 추가
      var StaticMesh lazyload{LoadInfo} MyMesh

      function LoadLazyLoadable(name PropName, bool
      AsyncLoad)

      function UnloadLazyLoadable(name PropName)




 •   Streaming Ready!
교훈




         수치 데이터의 중요성

      eXtream Programming idiom
         “You won’t need it” ??

     명확한 게임 플레이 요구사항 고려
Q&A

Q&A

More Related Content

What's hot

Google 2
Google 2Google 2
Google 2semi06
 
5.保护您的互联网应用—Azure权限管理服务
5.保护您的互联网应用—Azure权限管理服务5.保护您的互联网应用—Azure权限管理服务
5.保护您的互联网应用—Azure权限管理服务GaryYoung
 
331 Ch
331 Ch331 Ch
331 Chanjaan
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdfXMourinho
 
OSS International Case Study
OSS International Case StudyOSS International Case Study
OSS International Case StudyRyan Chung
 
通用 web 开发技术体系介绍
通用 web 开发技术体系介绍通用 web 开发技术体系介绍
通用 web 开发技术体系介绍zhyq0826
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수JIAQI NIE
 
2021년 1월 16일 개발자 이야기
2021년 1월 16일 개발자 이야기2021년 1월 16일 개발자 이야기
2021년 1월 16일 개발자 이야기Jay Park
 
프레젠테이션1
프레젠테이션1프레젠테이션1
프레젠테이션1shannonsi
 
Digital contents -midterm-
Digital contents -midterm-Digital contents -midterm-
Digital contents -midterm-jeong son
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源paulqi
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화guestba5d5e
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개trustinlee
 
361 Ch
361 Ch361 Ch
361 Chanjaan
 

What's hot (19)

Google 2
Google 2Google 2
Google 2
 
5.保护您的互联网应用—Azure权限管理服务
5.保护您的互联网应用—Azure权限管理服务5.保护您的互联网应用—Azure权限管理服务
5.保护您的互联网应用—Azure权限管理服务
 
331 Ch
331 Ch331 Ch
331 Ch
 
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
 
OSS International Case Study
OSS International Case StudyOSS International Case Study
OSS International Case Study
 
通用 web 开发技术体系介绍
通用 web 开发技术体系介绍通用 web 开发技术体系介绍
通用 web 开发技术体系介绍
 
Sidewall conveyor belt for coal mine (iso340)
Sidewall conveyor belt for coal mine (iso340)Sidewall conveyor belt for coal mine (iso340)
Sidewall conveyor belt for coal mine (iso340)
 
Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수Bloggers Survival 제안서 불로고수
Bloggers Survival 제안서 불로고수
 
Search 3.0
Search 3.0Search 3.0
Search 3.0
 
Screenhunter
ScreenhunterScreenhunter
Screenhunter
 
2021년 1월 16일 개발자 이야기
2021년 1월 16일 개발자 이야기2021년 1월 16일 개발자 이야기
2021년 1월 16일 개발자 이야기
 
프레젠테이션1
프레젠테이션1프레젠테이션1
프레젠테이션1
 
Digital contents -midterm-
Digital contents -midterm-Digital contents -midterm-
Digital contents -midterm-
 
VPN专网资源
VPN专网资源VPN专网资源
VPN专网资源
 
2 구글의 공룡화
2 구글의 공룡화2 구글의 공룡화
2 구글의 공룡화
 
Android JNI
Android JNIAndroid JNI
Android JNI
 
Ext Ncs 20081029
Ext Ncs 20081029Ext Ncs 20081029
Ext Ncs 20081029
 
오픈 소스 소개
오픈 소스 소개오픈 소스 소개
오픈 소스 소개
 
361 Ch
361 Ch361 Ch
361 Ch
 

Viewers also liked

14 virtual memory
14 virtual memory14 virtual memory
14 virtual memorycodevania
 
실시간스트리밍 시장동향과 전망 (올레온에어중계)
실시간스트리밍 시장동향과 전망 (올레온에어중계)실시간스트리밍 시장동향과 전망 (올레온에어중계)
실시간스트리밍 시장동향과 전망 (올레온에어중계)Sang Lee
 
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철KTH, 케이티하이텔
 
실시간스트리밍 시장동향과 전망 올레온에어
실시간스트리밍 시장동향과 전망 올레온에어실시간스트리밍 시장동향과 전망 올레온에어
실시간스트리밍 시장동향과 전망 올레온에어Sang Lee
 
프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍Alex Kang
 
비디오 코덱
비디오 코덱비디오 코덱
비디오 코덱greenday96
 
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서StartupAlliance
 
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)Hyunjin Lee
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜greenday96
 
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기StartupAlliance
 
161018 중국의 한국인 - 화이브라더스 정원선 본부장
161018 중국의 한국인 - 화이브라더스 정원선 본부장161018 중국의 한국인 - 화이브라더스 정원선 본부장
161018 중국의 한국인 - 화이브라더스 정원선 본부장StartupAlliance
 
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표161018 중국의 한국인 - 윌인터내셔널 박대웅 대표
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표StartupAlliance
 
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장StartupAlliance
 
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장StartupAlliance
 
161018 중국의 한국인 - 텐센트 양진호 디렉터
161018 중국의 한국인 - 텐센트 양진호 디렉터 161018 중국의 한국인 - 텐센트 양진호 디렉터
161018 중국의 한국인 - 텐센트 양진호 디렉터 StartupAlliance
 
161018 중국의 한국인 - 전 알리페이코리아 권현돈
161018 중국의 한국인 - 전 알리페이코리아 권현돈161018 중국의 한국인 - 전 알리페이코리아 권현돈
161018 중국의 한국인 - 전 알리페이코리아 권현돈StartupAlliance
 
20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력
 20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력 20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력
20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력StartupAlliance
 
161018 중국의 한국인 - 플래텀 조상래 대표
161018 중국의 한국인 - 플래텀 조상래 대표161018 중국의 한국인 - 플래텀 조상래 대표
161018 중국의 한국인 - 플래텀 조상래 대표StartupAlliance
 
161018 중국의 한국인 - 머니락커 강민구 대표
161018 중국의 한국인 - 머니락커 강민구 대표161018 중국의 한국인 - 머니락커 강민구 대표
161018 중국의 한국인 - 머니락커 강민구 대표StartupAlliance
 
161018 중국의 한국인 - 스마트스터디 이승규 CFO
161018 중국의 한국인 - 스마트스터디 이승규 CFO161018 중국의 한국인 - 스마트스터디 이승규 CFO
161018 중국의 한국인 - 스마트스터디 이승규 CFOStartupAlliance
 

Viewers also liked (20)

14 virtual memory
14 virtual memory14 virtual memory
14 virtual memory
 
실시간스트리밍 시장동향과 전망 (올레온에어중계)
실시간스트리밍 시장동향과 전망 (올레온에어중계)실시간스트리밍 시장동향과 전망 (올레온에어중계)
실시간스트리밍 시장동향과 전망 (올레온에어중계)
 
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철
H3 2011 클라우드 컴퓨팅 AWS 글로벌 서비스 구축을 위한 선택_데이터지능팀_이호철
 
실시간스트리밍 시장동향과 전망 올레온에어
실시간스트리밍 시장동향과 전망 올레온에어실시간스트리밍 시장동향과 전망 올레온에어
실시간스트리밍 시장동향과 전망 올레온에어
 
프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍프로젝트 아나키로 Rpg 만들기 프로그래밍
프로젝트 아나키로 Rpg 만들기 프로그래밍
 
비디오 코덱
비디오 코덱비디오 코덱
비디오 코덱
 
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서
스타트업 IT 인프라 지원 프로그램 CIA(CDNetworks Infra Aid) 소개서
 
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
AWS Cloud와 Wowza Cloud를 활용한 Media Platform 만들기(한동대 특강)
 
스트리밍 프로토콜
스트리밍 프로토콜스트리밍 프로토콜
스트리밍 프로토콜
 
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기
20140422-창업국가 이스라엘-이수리-이스라엘 뒤집어보기
 
161018 중국의 한국인 - 화이브라더스 정원선 본부장
161018 중국의 한국인 - 화이브라더스 정원선 본부장161018 중국의 한국인 - 화이브라더스 정원선 본부장
161018 중국의 한국인 - 화이브라더스 정원선 본부장
 
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표161018 중국의 한국인 - 윌인터내셔널 박대웅 대표
161018 중국의 한국인 - 윌인터내셔널 박대웅 대표
 
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장
161018 중국의 한국인 - 스타트업 얼라이언스 임정욱 센터장
 
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장
161018 중국의 한국인 - 스마일게이트인베스트먼트 장흥선 팀장
 
161018 중국의 한국인 - 텐센트 양진호 디렉터
161018 중국의 한국인 - 텐센트 양진호 디렉터 161018 중국의 한국인 - 텐센트 양진호 디렉터
161018 중국의 한국인 - 텐센트 양진호 디렉터
 
161018 중국의 한국인 - 전 알리페이코리아 권현돈
161018 중국의 한국인 - 전 알리페이코리아 권현돈161018 중국의 한국인 - 전 알리페이코리아 권현돈
161018 중국의 한국인 - 전 알리페이코리아 권현돈
 
20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력
 20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력 20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력
20140422-창업국가 이스라엘-박대진-이스라엘 스타트업의 글로벌 경쟁력
 
161018 중국의 한국인 - 플래텀 조상래 대표
161018 중국의 한국인 - 플래텀 조상래 대표161018 중국의 한국인 - 플래텀 조상래 대표
161018 중국의 한국인 - 플래텀 조상래 대표
 
161018 중국의 한국인 - 머니락커 강민구 대표
161018 중국의 한국인 - 머니락커 강민구 대표161018 중국의 한국인 - 머니락커 강민구 대표
161018 중국의 한국인 - 머니락커 강민구 대표
 
161018 중국의 한국인 - 스마트스터디 이승규 CFO
161018 중국의 한국인 - 스마트스터디 이승규 CFO161018 중국의 한국인 - 스마트스터디 이승규 CFO
161018 중국의 한국인 - 스마트스터디 이승규 CFO
 

Streaming of Huxley

  • 1. Streaming of Huxley 2008. 11. 김성균 littles79@hanmail.net
  • 2. 도시 스트리밍 초기 요구사항 • 거대한 도시 • 구역별로 구분된 게임 기능 • 디자이너들이 구역별로 분할해서 작업하기 원함 • 배틀 등 모든 레벨 이동을 seamless 하게
  • 3. CBT 버전의 접근 방법 • Unreal의 기본 레벨 스트리밍 기법 사용 • 레벨 파일 단위 스트리밍 • 현재 레벨에 겹쳐서 로드됨 • Unreal의 기본 텍스쳐 스트리밍 사용 • 시점에 기반한 텍스쳐 해상도 자동 조절
  • 4. CBT 버전 문제점 • I/O가 느리거나 플레이어 이동속도가 빠르면 텅 빈 구역을 보게 됨 • 메모리 사용량 및 로딩 속도가 구역마다 현저 히 다름 • 일부 구역에서 렌더링 퍼포먼스 문제 • 간헐적 멈춤 현상 • 시각적인 불연속성 • 스트리밍에 효율적인 구역 나누기 어려움
  • 5. CBT 1차 이후 수정 요구사항 • GTA 스타일 스트리밍의 필요성 • Loading LOD concept • 건물 단위 스트리밍 • 렌더링 최적화를 위한 LOD • I/O 속도에 관계없는 게임 플레이
  • 7. 메쉬 스트리밍 • 단위 메쉬 전체의 스트리밍 로드 • 건물 데이터 • StaticMesh : model, material, texture • LightMap : texture/vertex buffer • 메쉬별로 스트리밍 거리 설정
  • 9. LOD Group • 큰 건물이나 구역은 작은 부속 메쉬들로 이루 어져 있음 • 낮은 수준 LOD에서는 구역 전체를 대표 메 쉬 하나로 렌더링 • 에디터에서 부속 메쉬들에 대한 LOD Group 메쉬를 지정 • 거리에 기반하여 부속 메쉬들 스트리밍 (Batch request) • 전체 로드 이후 부속 메쉬들 렌더링
  • 10. Unreal Object Loading 기본 사항 Unreal UObject : serializable entity UObject 로드 절차 1. Load Package file header 2. Construct UObject instance 3. Load UObject data (serialization) 4. PostLoad
  • 11. Object Streaming 초기 구현 스트리밍 대상 건물이 사용하는 StaticMesh, LightMap 정보 부터 serialization 작업 시작 1. Construct UObject instance 2. Load UObject data 3. PostLoad 4. 1번부터 반복
  • 12. 초기 구현 문제점 • 잦은 멈춤 현상 : UObject load의 I/O block (seek+read) • 느린 스트리밍 속도 해결책 • Async I/O • 미리 읽어둠 (precache) • 유관 데이터들을 인접하게 만듦 • (압축, seek free loading은 제외)
  • 13. Object Streaming 개선 버전 • Object Streaming 1. UObject들의 로딩 순서 예측 2. Async I/O에 예측된 object들 precache 요청 3. Construct UObject instance 4. Load UObject data from precached data (staged version) 5. PostLoad
  • 14. Object Streaming 개선 버전 • Precache 순서 예측 : 패키지 세이브 시에 순서 저장 • I/O Precache • 각 UObject data 단위로 디스크 읽기 요청 Queue • 최대 N개의 요청들 저장 • 로딩의 모든 단계에서 timeout 처리 가능해야 함 • State mgmt. • Staged Serialization • Batched Streaming concept (LOD Group) • Atomicity • Efficency
  • 15. Streaming Process Script Prop. Mesh Game … Play Priority Filter Precache Request Finish Construct I/O Thread ~10ms/frame Stream PostLoad Serialize
  • 16. Optimization • Streaming Toggle view • 메쉬 스트리밍 우선 순위 • 화면상의 크기 • 카메라 방향 • (PVS?) • Texture • 가장 많은 데이터 • 초기에 낮은 해상도만 로드 • 메쉬 로드 종료 이후 높은 해상도 로드
  • 19. 현재까지의 결과 - 노스탈로니아 • 전체 로드 크기 2GB • 전체 메쉬 1200여개 • 전체 텍스쳐 1600여개 • 초기 로드 메쉬 400여개 • 초기 로드 텍스쳐 600여개 • 메모리 사용량 400MB
  • 20. Streaming 요구사항 추가 • 점점 증가하는 도시의 캐릭터들 • SkeletalMesh • Texture • Animation • Sound • 수많은 방어구, 무기 • 도시 : 시야 기반 스트리밍 • 배틀 : listen server만 스트리밍
  • 21. Streaming Support in UnrealScript • Script 수준의 streaming syntax 추가 var StaticMesh lazyload{LoadInfo} MyMesh function LoadLazyLoadable(name PropName, bool AsyncLoad) function UnloadLazyLoadable(name PropName) • Streaming Ready!
  • 22. 교훈 수치 데이터의 중요성 eXtream Programming idiom “You won’t need it” ?? 명확한 게임 플레이 요구사항 고려