Rob Galanakis Senior Technical Artist Bioware Austin [email protected] the old republic’s...

36
Rob Galanakis Senior Technical Artist Bioware Austin [email protected] the old republic’s object model pipeline

Transcript of Rob Galanakis Senior Technical Artist Bioware Austin [email protected] the old republic’s...

Page 1: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

Rob GalanakisSenior Technical Artist

Bioware [email protected]

the old republic’sobject model pipeline

Page 2: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

ovERviEW

Page 3: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

exAmPLe piPELiNe

A typical pipeline is thought of as…

Page 4: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

exAmPLe piPELiNe

A more accurate pipeline would be…

Page 5: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 6: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

dEFiNiTion

Page 7: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

dEFiNiTion

Page 8: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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)

Page 9: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

exAmPLe piPELiNe

Page 10: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

oMP CoNcEPTS

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

Page 11: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 12: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 13: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

oop pRiNciPLeS

Encapsulation

Inheritance Polymorphism

OOP

Page 14: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 15: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

encapsulation

Page 16: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 17: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

iNHERiTANCe

Page 18: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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.

Page 19: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

examples and Test Cases

• Object libraries– Binary Wrappers– Xml Wrappers– Ascii Wrappers

• Practical applications– Content-side– Game-side

• Other tips

Page 20: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 21: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 22: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

Tips: siDECAr

Scooter.Lame, boring,interchangeable

Sidecar. You want to keep this. So much awesome.

Page 23: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 24: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

Tips: xML fiLe wRAPPERS

• Use XmlSerialization if possible– Use custom ToXml/LoadFromXml if not

• Use .NET’s System.Xml as design for wrapper

Page 25: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 26: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 27: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

gAME oBJECT CoNNECTion

Page 28: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

auDiTiNG coNTENT

Page 29: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 30: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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

Page 31: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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)

Page 32: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

interconnectedness

Page 33: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

interconnectedness

Page 34: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

mAGNuM oPuS

Page 35: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

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.

Page 36: Rob Galanakis Senior Technical Artist Bioware Austin rgalanakis@bioware.com the old republic’s object model pipeline.

quESTions?