[geg1] 2.the game asset pipeline
TRANSCRIPT
Game Engine Gems 1 Chap 2. The Game Asset Pipeline
ohyecloudy homepage http://ohyecloudy.com
twitter @ohyecloudy
shader café http://cafe.naver.com/shader
2011.06.13
1GB가 큰건가?
요즘 게임은 다 우습게 1GB는 넘긴다
여기서 대부분은 game asset
갈수록 커지는 asset 관리가 문제
아티스트가 하얗게 불태울 수 있는 효율적인 pipeline 필수
플랫폼에 맞는 최적화는 필수
Asset 가공 pipeline을 살펴본다
COLLADA를 살짝 소개
intermediate asset format으로 제격
Asset pipeline overview
Asset pipeline design
Push or pull pipeline model
COLLADA
Conclusion
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Exporters
Build Platform A
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Build Platform B
Fast Path
Build Path
Source Assets
Intermediate Assets
Final Assets
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Exporters
Build Platform A
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Build Platform B
Fast Path
Build Path
Source Assets
Intermediate Assets
Final Assets
빌드 프로세스 타겟 플랫폼에 맞는 최적화된 asset을 만드는 과정
효율적인 개발을 위해 자동은 기본
종속성 정보가 부재 없다면 하나 바뀌어도 전체 빌드 빌드 프로세스 최적화 이슈 source asset을 만드는 사람이 직접 기술하거나 따로 시스템을 만들어야 한다
Exporters
Build Platform A
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Build Platform B
Fast Path
Build Path
Intermediate Assets
Final Assets
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Source Assets
아티스트와 디자이너가 만드는 asset DCCDigital Content Creation tools source asset을 만드는 툴을 부르는 용어
final asset을 만드는 모든 정보가 있어야 함 source asset만 빼고 다 지워도 final asset을 만들 수 있어야 한다
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Exporters
Build Platform A
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Build Platform B
Build Path
Source Assets
Final Assets
Intermediate Assets Intermediate Assets DCC로 만들고 난 뒤 타겟 플랫폼에 최적화된 asset을 만들기 전
읽기, 파싱, 확장이 쉬워야 함 바이너리는 엿먹는다 문제점 추적 및 임시 변경 테스트가 용이 plain text나 XML을 추천
Fast Path
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Exporters
Build Platform A
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Build Platform B
Build Path
Source Assets
Final Assets
Fast Path
Fast Path 게임 엔진으로 로드할 수 있음 전체 빌드 프로세스를 거치지 않고
효율성 향상에 핵심 아티스트에게 빠른 이터레이션 제공
Intermediate Assets
3D tool + plug-ins
Image tool + plug-ins
Model Animations
Textures
Exporters
Interm. Models
Interm. Anims
Interm. Textures
Exporters
Fast Path
Source Assets
Intermediate Assets
Build Platform A
Build Platform B
Build Path
Final Assets
타겟 플랫폼에 맞게 최적화되고 묶인 asset 대부분 binary 파일 파싱에 드는 CPU 시간을 줄이기 위해
Asset pipeline overview
Asset pipeline design
Push or pull pipeline model
COLLADA
Conclusion
게임 엔진 에디터 성격
view-only
editing
view-only
카메라 위치, 라이팅 조건 등 컨트롤을 가짐
asset 변경은 불가능. DCC에서만 변경할 수 있다
editing
asset을 변경할 수 있어 빠른 반복이 가능
하지만 asset pipeline이 더 복잡해짐
view-only와 editing 결합이 필요
모든 프로젝트를 만족하는 마법 같은 솔루션은 없다
source asset에 모든 정보가 있다는 것만 만족시키면 됨
왜 intermediate asset이 필요한가?
source asset과 final asset 결합 제거
크로스 플랫폼 asset 생성이 쉽다
source asset과 final asset 결합 제거
DCC에서 export할 때 final asset을 바로 만들면
엔진 변경에 의존하게 되어서 re-export가 빈번
프로그래머와 아티스트 작업 결합도 줄임
디버깅과 실험은 intermediate asset을 사용
크로스 플랫폼 asset 생성이 쉽다
intermediate asset 가공만 생각하면 된다
Asset pipeline overview
Asset pipeline design
Push or pull pipeline model
COLLADA
Conclusion
Push model
전통적인 방법
빌드 프로세스를 호출해 intermediate나 final asset 생성
게임 엔진 에디터로 로드
Pull model
더 진보된 방법
게임 엔진 에디터에서 intermediate나 final asset 로드
UI 지원이나 변경된 파일을 감시해서 구현
모든 정보는 source asset에 있어야 함
수정 사항이 모두 기록되기 위한 제한
intermediate asset 변경 사항이 source asset에 반영
editing과 pull 결합
게임 엔진 에디터가 변경한 게 source asset에 반영되고
생성된 intermediate asset을 다시 읽어 들임
remote control 시스템이 필요
Animation Tool
Modeling Tool
Normal Map Tool
Texturing Tool
Exp
ort
Exp
ort
Exp
ort
Exp
ort
Intermediate Asset Cache
Final Asset Cache
Build
Game Engine Editor
Build Path
Fast
Path
Source Asset
Source Asset
Source Asset
Source Asset
Remote Control
Asset pipeline overview
Asset pipeline design
Push or pull pipeline model
COLLADA
Conclusion
SIGGRAPH 2004에서 처음 소개
open standard
많은 DCC tool이 지원
3ds max, maya, google sketchup, …
많은 데이터 정의 지원
geometry, animation, skinning, morphing, physics, …
<source id=“mesh-geometry-position”> <float_array id=“mesh1-geometry-position-array” count=“24”> 2518.1875 4074.512965 0. 2518.1875 0. … </float_array> <technique_common> <accessor source=“mesh1-geometry-position-array” count=“8” stride=“3”> <param name=“X” type=“float”/> <param name=“Y” type=“float”/> <param name=“Z” type=“float”/> </accessor> </technique_common> </source>
intermediate asset format으로 추천
self-described data
많은 DCC tool에서 지원
이 용도로 쓰려고 만들어서 만들어진 게 많다
<library_xx>, <param>, URI technology, …
Asset pipeline overview
Asset pipeline design
Push or pull pipeline model
COLLADA
Conclusion
asset pipeline은 개발 backbone
안 되면 고쳐질 때까지 개발이 중지
source asset에 모든 정보가 있어야 함
source asset만 버전 컨트롤
수정된 사항을 잃어버리는 일이 없다
효율적인 개발을 위한 Fast Path
하나 확인 하려고 긴 빌드 프로세스를 기다려야 해?
아티스트가 하얗게 불태울 수 있도록 하자
COLLADA
intermediate asset format으로 쓰려고 만들었다
왠만한 데이터는 다 기술되었음
많은 DCC tool에서 지원
쓰는 걸 적극 고려