Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

Some specific questions:

Are there specific formats artists like to model in? 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 vertices in the buffer. Is it reasonable to ask artists to do all these things in textures / maps?

Any other tips you have about making it so that artists have to adapt their style to my specific engine as little as possible would be nice.

EDIT: Even though this question is technically answered I still encourage anybody else who has tips to post :)

share|improve this question
up vote 10 down vote accepted

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.

share|improve this answer
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. – Avi Jun 1 '12 at 5:39

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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