1 / 36

the old republic’s object model pipeline

the old republic’s object model pipeline. Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com. ovERviEW. exAmPLe piPELiNe. A typical pipeline is thought of as…. exAmPLe piPELiNe. A more accurate pipeline would be…. dEFiNiTion.

brede
Download Presentation

the old republic’s object model pipeline

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. the old republic’sobject model pipeline Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com

  2. ovERviEW

  3. exAmPLepiPELiNe A typical pipeline is thought of as…

  4. exAmPLepiPELiNe A more accurate pipeline would be…

  5. dEFiNiTion • Pipeline is the data flow from conception to game implementation (and beyond) • Greater than sum of parts • Not only art or assets • Not just exporters • Not just tools

  6. dEFiNiTion

  7. dEFiNiTion

  8. wHat is “dATA”? Well, data is what gives an engineer his power. It's an information field created by all things. It surrounds them and penetrates them. It binds the pipeline together. -Obi Wan Kenobi (well, close enough, anyway)

  9. exAmPLepiPELiNe

  10. oMPCoNcEPTS It isn’t art or content, it is DATA!

  11. oMPCoNcEPTS • If it is data, you can represent it in code. • If you can code it, you can make it an object. • If you can make it an object, it can handle itself. • The object knows what to do with itself and the programs just use the object

  12. oMPCoNcEPTS • 2 main groups of objects • Wrapper Object • The logical layer for manipulating a file’s contents • Information Object • For Asset Management • Abstracted information describing content (tags, attributes, file paths, etc. • Inputting the info is up to you

  13. ooppRiNciPLeS Encapsulation OOP Inheritance Polymorphism

  14. encapsulation • “Expose only a certain set of members to client” • Any data can be encapsulated • Wrap binary files with XML • Custom ascii parsers • All save/load/export logic on class • Applications work with objects, no direct read/write of data

  15. encapsulation

  16. iNHERiTANCe • “Subclass inherits code and behavior of base class” • Group asset management behaviors • Skeletons and meshes are models • Share ‘ModelFilename’ property, but differ in implementation

  17. iNHERiTANCe

  18. polyMoRPHiSM • “Behavior depends on type” • ‘ContentFilename’ varies between types. • Call ‘ExportModel’ to export the model according to type, whether static, dynamic, or skeleton model. • Call ‘ExportXml’ to export metadata, etc.

  19. examples and Test Cases • Object libraries • Binary Wrappers • Xml Wrappers • Ascii Wrappers • Practical applications • Content-side • Game-side • Other tips

  20. wRAP Binary: siDECAr • Wraps binary formats into C#/Xml • Allows easy access and manipulation from external tools • Write tools entirely outside of your 3D app that directly manipulate it • Code complex functionality once, call it generically

  21. Tips: siDECAr • Load and apply what’s needed • Plug-ins for non-universal scene info • Keep code portable between projects • Property dictionaries and Reflection • Serialize loads of random data

  22. Tips: siDECAr Scooter. Lame, boring, interchangeable Sidecar. You want to keep this. So much awesome.

  23. wRAPxML • Update format, all files write out correctly • Update your definitions in one place, don’t reverse-engineer into exporters • Export from many places • Enums provide valid values

  24. Tips: xMLfiLewRAPPERS • Use XmlSerialization if possible • Use custom ToXml/LoadFromXml if not • Use .NET’s System.Xml as design for wrapper

  25. wrap aSCii • Custom Save/Load methods for ascii files • Inherently less robust than Xml  • Auto-convert to/from binary where supported • Otherwise the same as Xml wrappers

  26. Common exporter • Exporters or tools identify file types passed in and what to do with them (drag and drop exporters accepting any file type) Game

  27. gAMEoBJECTCoNNECTion

  28. auDiTiNGcoNTENT

  29. Tip: partition pipelines • Do not try to develop a single scheme or system • Focus on allowing communication and interaction between systems • Needs of certain systems (content vs. game) fundamentally different

  30. pairing and sharing • Shared data in a database, paired data in Xml • If you don’t have a DB, get one! • Learn basic SQL and maybe use an ORM

  31. wrap it up • If you need to read it, wrap it • Why not wrap shaders? • Don’t forget existing object models may exist (Visual Studio projects)

  32. interconnectedness

  33. interconnectedness

  34. mAGNuMoPuS

  35. rEFERENCES • www.tech-artists.org • Forums, wiki, blog • irc.freenode.net • #techart • msdn.microsoft.com • System.Xml, System.Xml.Serialization, XPath, System.Linq • Special thanks to advisory board members Steve T. and Jeff H.

  36. quESTions?

More Related