Optimizing The Content Pipeline

2,190
-1

Published on

Retrieved from: http://gamesfromwithin.com/optimizing-the-content-pipeline

Published in: Devices & Hardware
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,190
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Game content will continue getting larger and more complex - amount of content   seems to double evenry few years - No-H/W upgrade - content does not   created any faster
  • A material should have all its specular parameters specified, and a model should have all the flags in the weapon barrels so the game knows from what point to shoot projectiles. This is what will allow us to automate the pipeline later on. Pre-renderd moview and sound are also game assets. Treated differently because their huge size . Maybe movies won ’ t be kept under version control Or only most recent version will be kept in DB.
  • A material should have all its specular parameters specified, and a model should have all the flags in the weapon barrels so the game knows from what point to shoot projectiles. This is what will allow us to automate the pipeline later on. Pre-renderd moview and sound are also game assets. Treated differently because their huge size . Maybe movies won ’ t be kept under version control Or only most recent version will be kept in DB.
  • Final assets are optimized to load blazingly fast, but as a result, their format will often change and render previous versions unusable. In an ideal world , we would be able to efficiently re-export all source assets automatically into the new final asset format. Unfortunately , we don ’ t live in an ideal world, and that is often impractical. Many off-the-self tools used for modeling and texture creation are not easily and efficiently driven from the command line to batch re-export thousands of models at the time.
  • The more we automate the content pipeline, the more important feedback becomes. People are not going to be watching every step of the pipeline, so we need to collect all the important information and deliver it to the people who care about it. In addition to gathering all errors and warnings, we might also want to collect other information, such as memory footprints, texture usage, or even some rough performance statistics. All that is best done as a final step to the resource build, running each of the levels in the game with the latest resource and executables. As a side benefit, it also serves as a very rough smoke test of the build. Robustness was one of the goals of the pipeline from the very beginning. Part of it involves making sure that the conversion and packaging tools work flawlessly and report any errors correctly. The other part is making sure the game and the tools are never left in an unusable state because of bad resources. A good philosophy to maintain is that bad data should never break the game or tools; an artist or designer should never be able to crash the game. It might sound a bit radical, but it ’ s worth aiming for that goal. Any engineering time spent towards this will be paid back many times over as soon as assets start being added to the game at full speed. When loading a level, take the time to report any loading or initialization errors, disable the entities that had problems, and move on. In addition to that, it ’ s helpful to put some sort of ugly debugging model (a big pink lollipop in our case) in place of any entity that failed initialization
  • Optimizing The Content Pipeline

    1. 1. Optimizing the Content Pipeline 아꿈사 : http://cafe.naver.com/architect1 김태우 : [email_address]
    2. 2. Retrieved from
    3. 3. INDEX <ul><li>Introduction </li></ul><ul><li>Bird’s-Eye View of the Pipeline </li></ul><ul><li>Assets </li></ul><ul><li>Catalog Files </li></ul><ul><li>The Fast Paths </li></ul>
    4. 4. Introduction
    5. 5. Contents Level Design
    6. 6. Contents Models Level Design
    7. 7. Contents Models Sound Level Design
    8. 8. Contents Models Sound Story Level Design
    9. 9. Contents Models Sound Story Cinematic Level Design
    10. 10. Contents Level Design Models Sound Story Cinematic Time Contents Size & Complex
    11. 11. The Best Way <ul><li>The best way to provide content is </li></ul><ul><ul><li>optimize the content pipeline </li></ul></ul><ul><ul><li>so that artists and designers can </li></ul></ul><ul><ul><ul><li>create, preview, add and tweak new assets </li></ul></ul></ul><ul><ul><ul><li>as easily and rapidly as possible </li></ul></ul></ul>
    12. 12. Game Assets <ul><li>code 가 아닌 모든 것 </li></ul><ul><ul><li>models, textures, materials, sounds, animations, cinematics, scripts, etc </li></ul></ul><ul><li>Pipeline 을 통해 Assets 은… </li></ul><ul><ul><li>converted, optimized, chopped to bits or combined </li></ul></ul><ul><li>최종적으로 , asset is in a format </li></ul><ul><ul><li>that will be shipped with 게임의 최종 버전 </li></ul></ul>
    13. 13. Main point to consider <ul><li>Efficiency </li></ul><ul><ul><li>파이프라인에 작은 비효율 존재시 </li></ul></ul><ul><ul><ul><li>많은 사람들이 시간 낭비 </li></ul></ul></ul><ul><ul><li>Contents Creator 가 빈번히 preview 를 못하면 </li></ul></ul><ul><ul><ul><li>게임의 전체적인 품질 저하 </li></ul></ul></ul><ul><li>Robustness </li></ul><ul><ul><li>content pipeline 이 깨지면 ? </li></ul></ul><ul><ul><ul><li>작업자들은 pipeline 이 수정되기 만을 기다리고 </li></ul></ul></ul><ul><ul><ul><li>시간을 낭비하게 됨 </li></ul></ul></ul><ul><ul><li>Whatever happens, the pipeline must always work correctly </li></ul></ul>
    14. 14. Bird’s-Eye View of the Pipeline
    15. 15. Asset pipeline look like <ul><li>It depends on the Project </li></ul><ul><ul><li>Pipeline is </li></ul></ul><ul><ul><ul><li>minimal and informal </li></ul></ul></ul><ul><ul><li>Assets are </li></ul></ul><ul><ul><ul><li>exported from their tool </li></ul></ul></ul><ul><ul><ul><li>loaded directly in the game </li></ul></ul></ul>Small Project
    16. 16. Asset pipeline look like <ul><li>It depends on the Project </li></ul><ul><ul><li>Pipeline is </li></ul></ul><ul><ul><ul><li>deep and elaborate </li></ul></ul></ul><ul><ul><li>Asset Issues </li></ul></ul><ul><ul><ul><li>파일이 어디있나 ? </li></ul></ul></ul><ul><ul><ul><li>멀티플랫폼에서 처리되나 ? </li></ul></ul></ul><ul><ul><ul><li>리소스 포맷 변경 쉽나 ? </li></ul></ul></ul><ul><ul><ul><li>추가 처리 적용 되나 ? </li></ul></ul></ul>Large Project
    17. 17. Partial View of the Content Pipeline
    18. 18. Assets
    19. 19. Source Assets
    20. 20. Source Assets <ul><li>Artists and Designers 에 의해 생성된 것 </li></ul><ul><li>게임에 정확하게 추가될 수 있도록 모든 필요한 정보를 포함 </li></ul><ul><ul><li>매우 신중히 treat </li></ul></ul><ul><ul><li>being lost or accidentally overwritten 으로부터 보호 </li></ul></ul><ul><li>Version control program 사용 </li></ul><ul><ul><li>Centralized location for all asset </li></ul></ul><ul><ul><li>Prevent overwriting </li></ul></ul><ul><ul><li>Keep history previous versions </li></ul></ul><ul><ul><li>Deal with binary files </li></ul></ul>
    21. 21. Intermediate Assets
    22. 22. Intermediate Assets <ul><li>Souce Assets 으로 부터 export 된 것 </li></ul><ul><li>하위 호환성을 깨지 않고 쉽게 read, parse, and extend 가능 </li></ul><ul><ul><li>Loading 성능은 중요하지 않음 </li></ul></ul><ul><ul><ul><li>Final Assets 의 몫임 </li></ul></ul></ul><ul><ul><li>Plain Text </li></ul></ul><ul><ul><ul><li>XML, YML, CSV, INI 등 </li></ul></ul></ul>
    23. 23. Intermediate Assets <ul><li>Source Asset 과 Final Asset 사이에 버퍼를 제공 </li></ul><ul><li>Complex, Time-consuming 작업을 미룸 </li></ul><ul><ul><li>Mesh optimization </li></ul></ul><ul><ul><li>Lightmap generation </li></ul></ul><ul><li>for debugging and experimentation </li></ul><ul><ul><li>Readable format </li></ul></ul><ul><ul><ul><li>Anybody can view </li></ul></ul></ul><ul><ul><ul><li>테스트 , 디버깅을 위해 re-export 없이 작은 수정 가능 </li></ul></ul></ul>
    24. 24. Final Assets
    25. 25. Final Assets <ul><li>Highly Optimized </li></ul><ul><ul><li>타겟 플랫폼에 효율적으로 Loaded and Used </li></ul></ul><ul><ul><ul><li>Robust 할 필요 없음 </li></ul></ul></ul><ul><ul><ul><li>목표는 Speed!! </li></ul></ul></ul><ul><ul><ul><li>어떤 parsing 없이 바로 로드 </li></ul></ul></ul><ul><ul><li>맹목적인 최적화는 하지 마라 </li></ul></ul><ul><ul><ul><li>가장 이득이 있는 곳을 노려라 </li></ul></ul></ul><ul><li>Type of Operations </li></ul><ul><ul><li>간단한 포맷 변경 </li></ul></ul><ul><ul><li>Mip-map 생성 , dithering, 압축 </li></ul></ul><ul><ul><li>Lightmap 생성 , Mesh 최적화 </li></ul></ul>
    26. 26. Catalog Files
    27. 27. Catalog Files <ul><li>Final step of The Pipeline </li></ul><ul><li>Packing all the loose final asset files into larger catalog files </li></ul><ul><ul><li>다른 파일들을 포함하고 있는 큰 파일 </li></ul></ul><ul><ul><li>이름 , 계층 정보를 포함 </li></ul></ul><ul><li>Advantage of using catalog files </li></ul><ul><ul><li>Open/Close file operation 감소 </li></ul></ul><ul><ul><li>파일간 근접하도록 강요 </li></ul></ul><ul><ul><li>Directory parsing 빨라짐 등 </li></ul></ul>
    28. 28. Catalog Files <ul><li>Using a standard catalog file format </li></ul><ul><ul><li>zip, cab, wab </li></ul></ul><ul><ul><li>이미 잘 사용되고 있음 </li></ul></ul><ul><li>Resource load strategies </li></ul><ul><ul><li>레벨 또는 사운드 별로 나눌 수도 있음 </li></ul></ul><ul><ul><li>게임에서 어떻게 로드할 지에 의존 </li></ul></ul><ul><li>게임과 툴에서 바로 읽을 수 있어야 함 </li></ul>
    29. 29. The Fast Paths
    30. 30. It is not exactly speedy <ul><li>지금까지 설명한 데로는 너무 늦다 </li></ul><ul><ul><li>단계를 요약해 보자 </li></ul></ul><ul><ul><ul><li>Source asset 수정 </li></ul></ul></ul><ul><ul><ul><li>Intermediate asset 으로 export </li></ul></ul></ul><ul><ul><ul><li>Check it in version control </li></ul></ul></ul><ul><ul><ul><li>Resource conversion 시작 </li></ul></ul></ul><ul><ul><ul><li>Catalog file 이 준비될 때 까지 몇 시간 대기 </li></ul></ul></ul><ul><ul><li>Fast turnaround time 의 요구에 맞지 않다 !! </li></ul></ul>
    31. 31. Provide Fast Path <ul><li>Game/Tool could load </li></ul><ul><ul><li>Intermediate assets as well as the final assets </li></ul></ul><ul><li>priority </li></ul><ul><ul><li>Give local files over catalog files </li></ul></ul>Catalog File Catalog File Catalog File
    32. 32. Putting It All Together
    33. 33. Automation <ul><li>Automating the process </li></ul><ul><ul><li>Run conversion process </li></ul></ul><ul><ul><li>Package them on the catalog files </li></ul></ul><ul><li>견고하게 만들기 어렵다 </li></ul><ul><ul><li>Network going down </li></ul></ul><ul><ul><li>Versioncontrol server being down, etc </li></ul></ul><ul><li>하루에 한 두번 또는 필요로 할 때 빌드 </li></ul>
    34. 34. References <ul><li>발표 주제 </li></ul><ul><ul><ul><li>http://gamesfromwithin.com/optimizing-the-content-pipeline </li></ul></ul></ul><ul><li>슬라이드 </li></ul><ul><ul><li>색상조합 </li></ul></ul><ul><ul><ul><li>http://kyruie.tistory.com </li></ul></ul></ul><ul><ul><li>이미지 </li></ul></ul><ul><ul><ul><li>http://www.slideshare.net/trib </li></ul></ul></ul>
    35. 35. Like the Cool Pictures? http://www.cooliris.com And the Awesome Slide? http://www.slideshare.net
    36. 37. Lisence

    ×