Upload
brede
View
66
Download
0
Tags:
Embed Size (px)
DESCRIPTION
the old republic’s object model pipeline. Rob Galanakis Senior Technical Artist Bioware Austin [email protected]. ovERviEW. exAmPLe piPELiNe. A typical pipeline is thought of as…. exAmPLe piPELiNe. A more accurate pipeline would be…. dEFiNiTion. - PowerPoint PPT Presentation
Citation preview
Rob GalanakisSenior Technical Artist
Bioware [email protected]
the old republic’sobject model pipeline
ovERviEW
exAmPLe piPELiNeA typical pipeline is thought of as…
exAmPLe piPELiNeA more accurate pipeline would be…
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
dEFiNiTion
dEFiNiTion
wHat is “dATA”?Well, data is what gives an engineer his power. It's an informationfield created by all things. It surrounds them andpenetrates them. It binds the pipeline together.
-Obi Wan Kenobi(well, close enough, anyway)
exAmPLe piPELiNe
oMP CoNcEPTSIt isn’t art or content, it is DATA!
oMP CoNcEPTS• 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
oMP CoNcEPTS• 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
oop pRiNciPLeS
Encapsulation
Inheritance Polymorphism
OOP
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
encapsulation
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
iNHERiTANCe
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.
examples and Test Cases• Object libraries– Binary Wrappers– Xml Wrappers– Ascii Wrappers
• Practical applications– Content-side– Game-side
• Other tips
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
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
Tips: siDECArScooter.Lame, boring,interchangeable
Sidecar. You want to keep this. So much awesome.
wRAP xML• 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
Tips: xML fiLe wRAPPERS• Use XmlSerialization if possible– Use custom ToXml/LoadFromXml if not
• Use .NET’s System.Xml as design for wrapper
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
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
gAME oBJECT CoNNECTion
auDiTiNG coNTENT
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
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
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)
interconnectedness
interconnectedness
mAGNuM oPuS
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.
quESTions?