# What are interchange formats?

I have been told to research up on interchange formats, only comes up with certain interchange formats without actually explaining what they are.

What are interchange formats, specifically in the context of game development?

• In what context? – Philipp Jan 17 '16 at 19:24
• Uh in context to the games industry – rango Jan 17 '16 at 19:27
• More specific, please. Interchange of what and through what medium? – Philipp Jan 17 '16 at 19:30
• @jjay referred in an earlier comment to "this document" they were trying to interpret - what document is this? – DMGregory Jan 17 '16 at 19:40

Interchange formats are file types that are designed for - or commonly used for - transfer ("interchange") between tools.

For instance, artists will make models in Maya. Maya's native file format is the .mb format. This format is only really usable by Maya, so it is not consumable by other tools.

The 3DS .fbx format has a good SDK and even some mediocre documentation. Almost all 3D modeler packages, including Maya, can read and write .fbx files. Furthermore, additional tools and even game engines can easily read .fbx files, making them useful for working with a complete pipeline.

Game engines themselves usually prefer a custom file format, largely for speed reasons. While engines sometimes come bundled with exporters for packages like Maya to be able to directly save into the engine's preferred format, these plugins don't help when additional tools are needed as part of the artists' workflow. For this reason, many engines instead provide asset converters that can take .fbx files into the engine's native format, allowing artists to work in their preferred tools and easily get the work into the engine without manual conversion or import/export steps.

These qualities all make .fbx an example of an interchange format. It is not the only one, of course, but one of the most common.

As an artist working with source control, you may often see both the original tool-specific files (e.g. .mb) and the interchange formats (.fbx) checked in, though not always. You generally would not see the engine-specific format checked in as those would be generated on the fly by the engine's asset conversion pipeline.

• Just to comment: .obj makes a good interchange format as well, and in fact, is also human readable! I've been using OBJ for my Sketchup -> LithUnwrap -> Unity pipeline as it is a format that all three programs can read/write, and if I need to I can go in and tweak a few vertices manually (I was modeling a table-like platform that after I imported it I was disappointed with the height, as I'd wanted my character to be able to crawl under it. Rather than going back to Sketchup, I just tweaked the vertices myself with Notepad++ until I found a height I was comfortable with). – Draco18s no longer trusts SE Jan 19 '16 at 15:53

They are file formats used to exchange data from one place (usually a program) to another (usually another program). You might also see them described as "intermediate" formats.

Their main goal as a format is to describe data in a fashion that is straightforward and easy to parse, or in a standard, almost least-common-denominator sort of way. This makes them useful as ways to connect various programs into a data pipeline or toolchain that don't otherwise know about each other.

(They're generally not suitable formats for consumption directly by a game as they usually aren't geared towards efficiency, although this is not always the case and may not matter in some scenarios.)