Game Model Format

BlitzMax Forums/BlitzMax Programming/Game Model Format

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Isn't it easier to just adopt a widely used format instead?

Yes. Unfortunately there is not a single good widely supported format out there. Name one that loads quickly and is widely supported. Even if you like Collada, it is not meant to be used as a final game format due to extreme amounts of pre-processing required, and the fact it is text-based.

It seems like going backwards, by creating a new format, and then do exporters for different tools, instead of using a standardish format like FBX or Collada.

Discreet won't release an official spec on the FBX format, so it is not trustworthy. Collada changes frequently, and is the worst 3D file format I have ever encountered. It isn't an industry standard, and never will be. Collada only exists because Sony wants to pump money into it to make it appear that Microsoft has competition.

No, they (FBX and Collada) aren't implemented in your engine in 5 minutes, but with 99% certainty it will take longer/more money to add exporters for your format in XSI, Maya, Max etc. And with 100% certainty your format won't be interesting until every major platform supports it.

That is why I am starting with an Unwrap3D exporter. Unwrap3D is very good at importing animated model formats, so there is a pathway to get data from almost any modeling package to my format.

The purpose of moving each vertex array into its own chunk is so that the arrays can be extended, like the adding of binormal/tangent arrays, and so that an arbitrary number of texcoord arrays are supported. Unlike .b3d, the arrays are stored sequentially, so you can read the array in one swipe. I considered allowing byte, short, and double value arrays, but they are often not supported on different drivers, and OpenGL 3 is doing away with double float arrays, so I think it is safe to assume they will always be floats, or in the case of colors, 4 byte RGBA (RGB causes some ATI drivers to fall back to software rendering).

The chunk format would allow extendability without breaking old loaders. I am not going to define a format for splines and other things I will never use.

I have come to realize that much of the industry is intentionally obsfucated for the purpose of job security. Sony does not want a fast-loading binary file format with wide support, because it would allow teams with less than 80 people to compete. They do not want things to be straightforward and simple, they want it to be unnecessarily complex and convoluted because man hours are irrelevant to them. You make money by selling solutions. You can't sell a solution if you don't first create and maintain a problem.