Mostly I use all my own technology. My engine is written on top of DirectX 8, so you could say I’m using DirectX 8 instead of my own stuff, and that’s true, but beside the point.
The point is, I’ve avoided a WHOLE lot of middleware over the years; Quake, Ogre3D, Gamebryo, Multiverse, Torque, Renderware, etc, etc, etc. Why?
Because of That One Little Thing.
Learning a new…computer language is easy. I’ve only started working with PHP and LUA in the last few months, and the syntax and structure are so close to C/C++, the difference seems trivial. The real problem is when you start using someone else’s code, and run into That One Little Thing.
"Oh, no, you have to call function A *before* function B, otherwise some internal system variables won’t be set properly. And you *have* set up the ProcessExBlather tree, haven’t you?"
"Of course that’s documented, in Addendum 16 of the Rev2.3.4 docs. You have that, right? Wait, I guess that’s not actually in there. Well, anyway, just look at *our* code for the right way to do it."
I’m actually painting a rosy picture here, because it’s not normally easy to actually *talk* to one of the developers of the middleware you’re using. Typically your resources include
– a forum for developers like you, who might know what you’re talking about, and might choose to look at the forums once in a while
– a manual, which is always incomplete, out of date, and shallow, by definition
– a few demo projects, never well documented and over-complex
– other people on your own team who are further down the road of That One Little Thing than you are.
But we soldier on, and indeed, That One Little Thing is just a hump to get over. As frustrated as we can get, as troublesome as That One Little Thing seems when we’re tripping over it, we *do* get over it, and can *usually* achieve what we want. Sometimes we can’t, and then we’ve wasted so much time we feel like crying, because we have to explore some other middleware full of a completely different set of That One Little Thing.
And That One Little Thing is a hole we dig ourselves into. The opportunity cost of overcoming Those One Little Things of one set of middleware is the time we could have spent digging past That One Little Thing of another set of middleware. As a result, we try to stick with the middleware we’re most comfortable with. I’ve been hanging out in a small shop that’s stuck on Torque. They’ve been using it for years now, and even though they don’t get a lot of support, GarageGames keeps changing it on them, and the future of GarageGames is in doubt, they’ll probably continue to use it for the forseeable future, simply because they’ve gotten past most of That One Little Thing Torque has.
Most dev shops understand about That One Little Thing, and won’t try to work with new middleware unless they can get somebody else to pay for it. That’s not hard, because publishers often buy middleware licenses (based on what they think it can do) and then demand that their developers use the middleware. As a result, developers can get stuck on middleware *and* the publisher that holds the license to that middleware.
Edge of Reality is one of the few developers that uses a homegrown engine, and plays well with all the big publishers. As you might expect, their engine and toolset is *very* good, and *very* complete, and they spend a great deal of resources keeping it that way.
When a dev shop commits to some middleware, they often send one of their best engineers down to deal with That One Little Thing first. Then, as the rest of the shop comes on board, they have a local "expert" who can help everyone else with That One Little Thing.
Game artists are just as cognizant of That One Little Thing, but they don’t usually have the choice of creating their own tools, and they most keenly feel the effects of knowing That One Little Thing about the wrong middleware.
But there are a *lot* of people in the industry who don’t get it. They think that any middleware is good and immediately useable, otherwise it wouldn’t be sold, right? So if their dev team takes too long to get up to speed with it, the dev team must not be very good, right? Are my scars showing?
I guess what I’m trying to say here is, the real cost of using someone else’s code/system/tool isn’t found in the manual, or on the forums, or on a check. It’s That One Little Thing. And like sailors and the Sea, if you don’t have respect for That One Little Thing, no developer will have respect for you.