4
\$\begingroup\$

I'm writing a game engine, and I want to know what I should do to make it more artist-friendly. I don't want to be too limiting in terms of what file formats I support, etc.

Are there specific formats artists like to model in, or does it not matter, because the 3D modeler abstracts the data storage away?

Is it okay if I don't support per-vertex coloration in my game engine? If I have to store a diffuse, specular, ambient, and emissive color value for each vertex, it doubles the size of the vertices, in the buffer. Is it reasonable to ask artists to do all these things in the textures or maps?

\$\endgroup\$
12
\$\begingroup\$

Create or decide on internal data formats for your engine first; you can use custom formats or handle standard ones, however you prefer. Then use this code will eat any format as an intermediate point in your content pipeline to eat your artist's output and un-eat whatever internal formats you decided to use.

When I suggest assimp I'm really just suggesting that you have a pipeline that has an intermediate step so you can be flexible. Source -> Intermediate Conversion -> Runtime. Not only can you target different runtime environments more easily, but you can change sources if something really bad happens.

The main point here is that your engine only supports one format, ever, the tools of the content pipeline are responsible for handling multiple incoming formats. This makes your engine easier to maintain and arguably more stable and less prone to bugs.

Next, stop worrying about vertex size. You're putting the "OMG I'm out of memory" cart waaay before the horse on this. Unless you've already built an engine or three before and know what limits you want to hit, but then you'd already know the answer to vertex size =)

The unspoken secondary point here is KISS Don't go adding in features before they are needed, not only will you waste time on many features that never get used but you'll annoy the pig. For example, don't worry about vertex colors until some artist has a good case for why they need them.

3D modelers don't abstract anything away, you will learn to hate their idiosyncrasies but assimp will help hide that.

One very bad point about letting artists use a variety of different modelers... they cannot exchange work without converting, and there you get the idiosyncrasies again. In terms of an ongoing production it's more sane to standardize.

\$\endgroup\$
  • 3
    \$\begingroup\$ I believe the term for "un-eat" is "puke up". But you're saying my engine shouldn't even bother loading multiple file formats, I should convert all things to the necessary file formats before my engine looks at them? That makes a whole bunch of sense, and I feel like a moron for not having thought of it before. \$\endgroup\$ – Avi Jun 1 '12 at 5:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.